Informatica. Deel II: les 10. Internet & sorteren. Jan Lemeire. Informatica deel II. februari mei Informatica II: les 10

Vergelijkbare documenten
Informatica. Deel II&III: les 10. Internet & sorteren. Jan Lemeire. Informatica deel II&III. februari mei Informatica II: les 10

Informatica 2e semester

Informatica 2e semester

Informatica. 2 e semester: les 9. OS & Sorteren. Jan Lemeire Informatica 2 e semester februari mei Informatica II: les 9

Informatica. Deel II: les 10. Bomen. Jan Lemeire Informatica deel II februari mei Informatica II: les 9

Informatica 2e semester

Informatica 2e semester


REEKS I. Zaterdag 6 november 2010, 9u

Tijd is geen goede maatstaf, want is afhankelijk van computer waarop algoritme wordt gedraaid.

Waarmaken van Leibniz s droom

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

Een eenvoudig algoritme om permutaties te genereren

Modelleren en Programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Informatica: C# WPO 11

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

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

Modelleren en Programmeren

Hoofdstuk 0. Van Python tot Java.

Module I - Soorten Netten

Modelleren en Programmeren

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

Programmeren in Java les 3

Hoofdstuk 3. Week 5: Sorteren. 3.1 Inleiding

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

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

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Overerving & Polymorfisme

Vakgroep CW KAHO Sint-Lieven

Informatica. Deel II: les 3. Electronica Arrays. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

TEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR

Hoofdstuk 7: Werken met arrays


Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Datastructuren: stapels, rijen en binaire bomen

In BlueJ. Doe onderstaande met muis/menu s:

Vierde college algoritmiek. 23/24 februari Complexiteit en Brute Force

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Informatica 2e semester

Informatica. Deel II: les 3. Electronica Arrays. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

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

Javascript oefenblad 1

Modelleren en Programmeren

ERAP-GSOB Internet #1

Programmeren (1) Examen NAAM:

Lineaire data structuren. Doorlopen van een lijst

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

Derde college complexiteit. 7 februari Zoeken

Inhoudstafel INTERNET

Open Dag Informatica (28 nov 2003) 3D Graphics Workshop

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber

Voortgezet Prog. voor KI

is eigenlijk overbodig!

Informatica. 2 e semester: les 11. Hashing & Internet Slot. Jan Lemeire Informatica 2 e semester februari mei Informatica II: les 11

Ingebouwde klassen & methodes

Design principes.

ERAP-GSOB Internet #1

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur

Objectgeoriënteerd programmeren in Java 1

Design principes.

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

Open Source Software. Bart van Dijk

Sweex Broadband Router + 4 poorts 10/100 Switch

Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 )

MICROSOFT EDGE INTERNET

Java Programma structuur

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

Robocode. Inleiding tot programmeren

Waarmaken van Leibniz s droom

Programmeermethoden NA. Week 6: Lijsten

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Inhoud Inhoud. Over dit boek 7. 1 Eclipse IDE (Integrated Development Environment) 9. 2 Functionele specificatie 13

Datastructuren. Analyse van algoritmen. José Lagerberg. FNWI, UvA. José Lagerberg (FNWI, UvA) Datastructuren 1 / 46

BENQ_ESG103QG_DU.book Page i Tuesday, July 30, :05 PM. Inhoudsopgave

Zelftest Inleiding Programmeren

Python (gem=1,86) Java (gem=1,57) Enquete cursus informatica 1e bachelors oefeningen beter aansluiten bij project?

Programmeermethoden NA

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Derde college algoritmiek. 22 februari Complexiteit Toestand-actie-ruimte

ALGORITMIEK: answers exercise class 7

Derde college algoritmiek. 23 februari Complexiteit Toestand-actie-ruimte

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek

Tree traversal. Bomen zijn overal. Ferd van Odenhoven. 15 november 2011

ModelTrein-Support vzw: Centrale CS2 verbinden met computer WIN10.

Ontwerp van Informatiesystemen

Zelftest Informatica-terminologie

Informatica. Deel II: les 2. Leibniz - erven - digitaal. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Boekverslag door G woorden 22 januari keer beoordeeld. Nederlands. Inleiding

xdsl Bridging Een DrayTek modem kunt op twee manieren Bridgen: -PPPoA Bridgen (vanaf pagina 3) -MPoA Bridgen (vanaf pagina 7)

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort

Settings for the C100BRS4 MAC Address Spoofing with cable Internet.

Modelleren en Programmeren

Abstracte klassen & Interfaces

Instellingen voor de C100BRS4 met Wanadoo kabel Internet.

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

ModelTrein-Support vzw: Centrale CS2 verbinden met computer WIN7.

Tentamen Programmeren in C (EE1400)

Windows XP & Windows Vista

Transcriptie:

Informatica Deel II: les 10 Internet & sorteren Jan Lemeire Informatica deel II februari mei 2014

Hoofdstuk 9: Internet Jan Lemeire Pag. 2 / 45

Technologie 1: netwerk Lokaal network: electrische kabel Glasvezel verbindt lokale netwerken informatie via licht The world s cable map: http://www.cablemap.info/ Jan Lemeire Pag. 3 / 45

Technologie 2: protocol Protocol = afgesproken communicatiewijze IP= Internet Protocol Adres van elke computer: IP-adres 192.168.0.233 Windows-commando: ipconfig Domeinnaam is een alias voor het nummer ( naam ) Bericht wordt opgedeeld in IP-pakketjes die hun weg naar de bestemming zoeken over het net Oud telefoonnetwerk: je had de hele lijn voor je gereserveerd Het zoeken van de weg: TCP-protocol (Transmission Control Protocol) TCP/IP-protocol Jan Lemeire Pag. 4 / 45

Technologie 3: componenten Netwerkkaart: toegang van je PC/laptop tot het internet, via een netwerkkabel of wireless Switch: netwerkknooppunt, gebruik je om meerdere connecties te verbinden Router: ook een netwerkknooppunt, maar bepaalt ook de route van het pakketje. Het is de toegang van een lokaal network tot het internet en het vormt de knooppunten op het internet Modem: maakt informatiesignalen geschikt om over een verbinding te worden getransporteerd, bvb wireless, telefoon- (Belgacom) of kabelnetwerk (Telenet) Jan Lemeire Pag. 5 / 45

Lokaal network (LAN) Jan Lemeire Pag. 6 / 45

ARPANET TCP/IP ontstond uit Arpanet, ontwikkeld door Amerikaans leger Eisen aan digitaal communicatiesysteem: Flexibel Gedecentraliseerd, geen baas Onafhankelijkheid: delen kunnen op zich werken Zelf-regulerend robustness and survivability including the capability to withstand losses of large portions of the underlying networks (due to a nuclear attack) pakketjes kunnen verloren gaan: fouten of overlopen van de queues bij bottlenecks Jan Lemeire Pag. 7 / 45

Microsoft vòòr 1995 Microsoft: door Windows, grootste speller in IT Maar is niet geïnteresseerd in internet (ik beroepsmatig ook niet) Op CERN wordt Netscape Navigator ontwikkeld, de eerste browser Om informatie (file) van een remote computer te visualiseren Netscape wordt de grootste speler Is nu Firefox/Seamonkey Jan Lemeire Pag. 8 / 45

De volgende revolutie werd Internet!

Microsoft reageert Lanceert Internet Explorer in 1995 Gratis bij Windows waardoor iedereen het begint te gebruiken Koopt hotmail op En onlangs nog Skype en Nokia (maar dominante positie lijkt nu definitief verloren) Verovert het internet Door macht van Windows Jan Lemeire Pag. 10 / 45

IT-sector: the winner takes it all Windows, office, TCP/IP-protocol, pdf, Google, facebook, twitter, in andere sectoren kunnen er meerdere spelers zijn (bvb meerdere automerken, wasmachines, ) Kan leiden tot monopolieposities en oneerlijke concurrentie (verstoorde marktwerking). Microsoft kreeg verscheidene veroordelingen van de Europese Commissie Alternatief: standaards waar iedereen zich aan houdt De IT-sector heeft zo zijn specifieke economische wetten. Eentje is dat het meestal 1 speler is die de markt verovert doordat de consument er alle baat bij heeft dat iedereen Informatica hetzelfde II: les 10 product gebruikt, wegens gemak van interoperabiliteit en Jan Lemeire Pag. 11 / 45 uniformiteit. Dit wordt ook bereikt door standaards.

Railway Mania Eerste treinen Jan Lemeire Pag. 12 / 45

De internetrevolutie Technologie-index van USA: Nasdaq Jan Lemeire Pag. 13 / 45

De internetbubbel Of internetzeepbel of dotcom-crisis Nieuwe technologie opent nieuwe mogelijkheden, creëert (te) hoge verwachtingen Investeren geblazen! Professionals/leken steken hun geld in aandelenfondsen en aandelenclubs om de boot niet te missen Bubbel <= Hebzucht! Jan Lemeire Pag. 14 / 45

Jan Lemeire Pag. 15 / 45

De economie zou totaal veranderen => dotcom -economie Internet: ongekende commerciële mogelijkheden Anders communiceren Anders kopen Ook kerstbomen kopen op het internet Belangrijkste: =aandacht (hits/leden/ ) Get large or get lost agressieve marktpenetratie door middel van het uitbouwen van netwerken. Extreme verliezen in het begin werden gezien als slechts investeringen. Winst/omzet maken zou later komen. Velen geloofden dat we totaal anders zouden gaan consumeren. Je moest dus wel investeren in het internet, of je zou er binnen de kortste keren uit liggen. Jan Lemeire Pag. 16 / 45

Na het springen van de bubble (2000) Veel geld verloren Investeerders en ook de gewone man, enkel de slimmeriken zullen er (net) op tijd uit gestapt zijn De droom spatte echter uit elkaar Niemand wilt/durft meer te investeren in ITtechnologie Tot Google komt (2003-2004) en toont aan dat je wèl geld kunt verdienen op het Internet Zie Nasdaq-index: begint weer te klimmen Technologie heeft tijd nodig om te rijpen. Jan Lemeire Pag. 17 / 45

Vandaag 1. Internet (deel I) 2. Sorteren 3. Profiling & linken 4. Het gebruik van static 5. Sorteren vervolg

Sorteren

Sorteren p. 85 Van 51 03 24 86 45 30 27 63 96 50 10 Naar 03 10 24 27 30 45 50 51 63 86 96 Toepassingen: Woordenboek Googleresultaten mailbox Database Jan Lemeire Pag. 20 / 45

1. Selection Sort p. 85 Idee: zoek kleinste, dan tweede kleinste, enzovoorts Step A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10] 0 51 03 24 86 45 30 27 63 96 50 10 1 03 51 24 86 45 30 27 63 96 50 10 2 03 10 24 86 45 30 27 63 96 50 51 3 03 10 24 86 45 30 27 63 96 50 51 4 03 10 24 27 45 30 86 63 96 50 51 5 03 10 24 27 30 45 86 63 96 50 51 6 03 10 24 27 30 45 86 63 96 50 51 7 03 10 24 27 30 45 50 63 96 86 51 8 03 10 24 27 30 45 50 51 96 86 63 9 03 10 24 27 30 45 50 51 63 86 96 10 03 10 24 27 30 45 50 51 63 86 96 11 03 10 24 27 30 45 50 51 63 86 96 Jan Lemeire Pag. 21 / 45

public static void selectionsort(int[] array){ p. 86 aantalvergelijkingen = 0; aantalkopies = 0; // we selecteren telkens het kleinste element for(int i = 0; i< array.length-1;i++){ // laatste is niet nodig int minindex = indexminimumvanaf(array, i); swap(array, i, minindex); if (PRINT_TUSSEN_RESULTATEN) System.out.println(" > ["+i+"] "+Arrays.toString(array)); } } public static int indexminimumvanaf(int[] array, int vanaf){ int min = array[vanaf]; int minindex = vanaf; for(int i=vanaf+1;i<array.length; i++){ // vanaf + 1 if (array[i] < min){ min = array[i]; minindex = i; } aantalvergelijkingen++; } return minindex;

/** swaps elements i and j from the array */ private static void swap(int[] array, int i, int j){ if (i!= j){ int tmp = array[i]; array[i] = array[j]; array[j] = tmp; aantalkopies+=3; } }

Performantie selection sort n 1 i 1 n ( i 1) n i 2 i n 2 n 2 2 2 ( n ) Jan Lemeire Pag. 24 / 45

2. Bubble Sort p. 87 Idee: bubbel kleinste-tot-dan-toe naar boven Step A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10] 0 51 03 24 86 45 30 27 63 96 50 10 1 03 51 10 24 86 45 30 27 63 96 50 2 03 10 51 24 27 86 45 30 50 63 96 3 03 10 24 51 27 30 86 45 50 63 96 4 03 10 24 27 51 30 45 86 50 63 96 5 03 10 24 27 30 51 45 50 86 63 96 6 03 10 24 27 30 45 51 50 63 86 96 7 03 10 24 27 30 45 50 51 63 86 96 8 03 10 24 27 30 45 50 51 63 86 96 Jan Lemeire Pag. 25 / 45

public static void bubblesort(int[] array){ aantalvergelijkingen = 0; aantalkopies = 0; boolean sorted; int i=0; if (PRINT_TUSSEN_RESULTATEN) System.out.println(" > ["+i+"] "+Arrays.toString(array)); do { sorted = true; for(int j=array.length-1; j>i; j--){ if (array[j] < array[j-1]){ swap(array, j, j-1); sorted = false; } aantalvergelijkingen++; } i++; // weten dat het i'de element op zijn plaats staat if (PRINT_TUSSEN_RESULTATEN) System.out.println(" > ["+i+"] "+Arrays.toString(array)); } while(!sorted); }

Performantie Bubble Sort Worst case: evenveel als selection sort n 1 n ( i 1) i 1 n i 2 i n 2 n 2 2 2 ( n ) Jan Lemeire Pag. 27 / 45

Profiling & linking

??????

Theorema van Bayes Thomas Bayes 1701-1761 A posteriori geloof in hypothese Bevestiging (>1) of ontkrachting (<1) van hypothese A priori geloof in hypothese Jan Lemeire Pag. 31 / 45

Static in java denken in objecten

Objecten Niet in boek Hebben elk hun eigen attribuutwaarden, niet static dus Jan Lemeire Pag. 33 / 45

Handige van static Niet in boek Je hebt geen referentie naar het object nodig Referenties naar object: zie pagina 16-17 van de cursus Hoofdstuk 1 kan nu van pas komen! Statische methode Math.sin(x) kan je overal oproepen Als niet-statisch: je moet een Math-object aanmaken Statische variabele kan je overal oproepen: aantaliteraties (zie pagina 36 van de cursus) Jan Lemeire Pag. 34 / 45

Probleem met static Niet in boek Vanuit object kan je static dingen oproepen, maar niet omgekeerd: vanuit static kan je geen objectattributen of methodes oproepen van een gewoon object!! Compiler (Eclipse) zal een fout geven Cannot make a static reference to the non-static method Voorbeeld: statische methode roept gewone method op Dan moet je alles static maken en loopt het fout (Of je moet statische referenties bij gaan houden ) Niet doen dus Als je dit tegen komt is het foutief gebruik van static Jan Lemeire Pag. 35 / 45

Wanneer static te gebruiken? Niet in boek Zo weinig mogelijk Algemene functies, die niets aan een object veranderen Voorbeeld: berekenen gemiddelde, hoek ofzo Als je een object wilt veranderen gaat het fout (oproepen nietstatische variabele Algemene, globale variabelen 1 waarde die duidelijk algemeen moet zijn over alle objecten heen Voorbeeld: teller, mode van je GUI Als je functie een 2 e waarde moet teruggeven Kan dus niet in Zie cursus p. 36 (aantaliteraties) Jan Lemeire Pag. 36 / 45

Sorteren vervolg

3. Quick Sort p. 89 Idee: splits in deel met kleine elementen en deel met grote elementen Jan Lemeire Pag. 38 / 45

Code I public static void quicksort(int[] array){ aantalvergelijkingen=0; aantalkopies = 0; quicksort(array, 0, array.length - 1); } private static void quicksort(int[] array, int left, int right) { if (right <= left) return; int i = partition(array, left, right); if (PRINT_TUSSEN_RESULTATEN) System.out.println(" > ["+left+" "+i+" "+right+"] "+Arrays.toString(array)); quicksort(array, left, i-1); quicksort(array, i+1, right); } Jan Lemeire Pag. 39 / 45

private static int partition(int[] a, int left, int right) { // a[right] is ons pivot-element int i = left; int j = right - 1; while (true) { while (a[i] < a[right]){ // vind links een element > pivot i++; aantalvergelijkingen++; } while (a[right] < a[j]){ // vind rechts een element < pivot aantalvergelijkingen++; if (j == left) // ga niet buiten array break; j--; } if (i >= j) // tests of indexen mekaar hebben gekruisd break; swap(a, i, j); // verwissel beide elementen i++; j--; } swap(a, i, right); // verwissel met pivot return i; }

Aantal compare-swaps log 2 n stappen n operaties Let op: het recursieve algoritme doet dit eerst links Jan Lemeire Pag. 41 / 45

Performantie Quick Sort Per niveau van opsplitsen: globaal ongeveer n vergelijkingen Aantal opsplitsingen: gemiddeld log 2 n Afhankelijk kwaliteit van pivot element! Performantie = O(n.log 2 n) Gemiddeld 1,39.n.log 2 n Is bewezen dat t niet sneller kan! Vb: n=1000 elementen n 2 = 1.000.000 <> n.log 2 n 10.000 Jan Lemeire Pag. 42 / 45

Altijd n.log 2 n? Niet in boek n.log 2 n = 9965 1,39.n.log 2 n = 13851 Jan Lemeire Pag. 43 / 45

Performantie i.f.v. n Niet in boek 1,28.n.log 2 n n.log 2 n Jan Lemeire Pag. 44 / 45

Worst-case arrays? Niet in boek Wanneer slechte pivot? Als pivot grootste of kleinste element is Gesorteerd in volgorde Gesorteerd in omgekeerde volgorde Jan Lemeire Pag. 45 / 45