Informatica 2e semester

Vergelijkbare documenten
Waarmaken van Leibniz s droom

Waarmaken van Leibniz s droom

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. 2 e semester: les 8. Software & binaire bomen. Jan Lemeire Informatica 2 e semester februari mei Parallel Systems: Introduction

Hoofdstuk 3. Besturingssystemen

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

Informatica. Deel II&III: les 8. Software & binaire bomen. Jan Lemeire Informatica deel II&III februari mei Parallel Systems: Introduction

Informatica. Deel II: les 8. Software & binaire bomen. Jan Lemeire Informatica deel II&III februari mei Parallel Systems: Introduction

Informatica. Deel II&III: les 9. OS, Hashing & Mappen. Jan Lemeire. Informatica deel II&III. februari mei Informatica II: les 9

Programmeren: Visual Basic

Waarmaken van Leibniz s droom

Vakgroep CW KAHO Sint-Lieven

HET BESTURINGSSYSTEEM

Erik Poll Martijn Warnier.

Informatica 2e semester

Vakinhoudelijke uitwerking Keuzevak Applicatieontwikkeling van het profiel MVI vmbo beroepsgericht

Zelftest Informatica-terminologie

Hoofdstuk 0. Van Python tot Java.

Het besturingssysteem of operating system, vaak afgekort tot OS is verantwoordelijk voor de communicatie van de software met de hardware.

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

Informatica. Deel II: les 9 OS & AVL. Jan Lemeire. Informatica deel II. februari mei Informatica II: les 9

Belangrijkste ideeën/concepten uit OS, incl. proces

Hoofdstuk 2. - is verantwoordelijk voor de communicatie van de software met de hardware.

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces?

6,7. Werkstuk door een scholier 2286 woorden 24 januari keer beoordeeld. Informatica. Algemeen

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma

Module 3: Scratch programmeren: is het logisch of is het niet logisch?

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

eerste voorbeelden in Java

Het voert eenvoudige instructies uit die achter elkaar in het geheugen van de machine zijn opgeslagen.

Waarmaken van Leibniz s droom

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

Tim Mallezie Architectuur van besturingssystemen: Vraag A2.

Zelftest Java concepten

Programmeren in Java 3

Er zijn verschillende OS bv: Microsoft Windows Apple Macintosh Linux-versies/distributies zoals Ubuntu en Knoppix

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

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

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

Informatica: C# WPO 11

ICT Infrastructuren: Processen en Threads. 18 november 2013 David N. Jansen

Software hoofdstuk Wat is de functie van een besturingssysteem? 2. Welke hoofdtaken heeft het besturingssysteem?

Verslag: Computer. Naam: Tyrone Ste Luce. Klas: M4B

APPLICATIEBOUW 1E COLLEGE: INTRODUCTIE. Onderdeel van SmartProducts

Modelleren en Programmeren

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

Spreekbeurt Informatica Computers

Android Development CCSS2011

1 Client/Server. 2 Geschiedenis. 3 Toekomst

Windows Training voor 50-plussers. PC50plus trainingen Eikbosserweg AK Hilversum tel:


Sima. Programmeren. 2e graad

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Module 4 Hoofdstuk 1. Programmeertalen

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368

Een.NET-besturingssysteemtoolkit. Discovering Cosmos. Sijmen J. Mulder

UBC op Microsoft Windows 64-bits

BEGINNER JAVA Inhoudsopgave

Cursus Programmeren en Dataverwerking.

Windows Basis - Herman Van den Borre 1

Variabelen en statements in ActionScript

6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica

Programmeren in Java les 3

SBO Nilda Pinto BASISKENNIS BESTURINGSSYTEMEN (MBI 1) PERIODE MATERIAAL BOEK SOFTWARE VOOR ICT SUPPORT 2 EN 3 (HANS VAN RHEENEN)

VAN HET PROGRAMMEREN. Inleiding

Modelleren en Programmeren

1e college Introductie Applicatiebouw. Applicatiebouw{ } Onderdeel van SmartProducts

Module I - Informatica

Applications & Clients

DE ASTRO PI PROGRAMMEREN VOOR MISSION ZERO

Programmeren: Visual Basic

DOMjudge teamhandleiding

Les 11: systeemarchitectuur virtuele machines

Modelleren en Programmeren

APPLICATIEBOUW 1E COLLEGE: INTRODUCTIE. Onderdeel van SmartProducts

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

Een spoedcursus python

Programmeren met Arduino-software

Albert-Jan de Croes & Stefan Willemink V4C Docent: Mevrouw van Uden

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

Algoritme noteren? Algoritmen voor de computer worden vastgelegd met behulp van een programmeertaal.

Hardware. Robert Groen. Jim van Dijk. 13 september 2013 M44 ITTL

Zelftest Inleiding Programmeren

Werkomgeving. Android Studio. Android - werkomgeving 1/6

Virtueel Geheugen en demand paging (1)


Naam: Oumaima Bekour Klas: M4b ICT De Lange. Hardware

WORKSHOP ORANGE PI & PYTHON v september 2017

[8] De ene 1 is de andere niet

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

Kleine cursus PHP5. Auteur: Raymond Moesker

Programmeren in Java

Bij dit hoofdstukken horen geen opgaven.

Software Reverse Engineering. Jacco Krijnen

ASRemote WebService. Via deze webservice kunt u:

Module Limieten van de berekenbaarheid : antwoorden

Assembly en Assemblers. Processoren 5 januari 2015

COMPUTERVAARDIGHEDEN EN PROGRAMMEREN

Transcriptie:

Informatica 2 e semester: les 9 Software, Sorteren en OS Jan Lemeire Informatica 2 e semester februari mei 2019 Informatica 2e semester: HOC 9

Vandaag 1. Software (deel III) 2. Sorteren 3. Het gebruik van static 4. Highscore server 5. Besturingssystemen (deel III)

Waarmaken van Leibniz s droom (9) Artificiële intelligentie (8) Communicatie & internet (7) Operating system (6) Computatietheorie & Software (5) Efficiënt productieproces (4) Hardware architectuur Elektronica: (2) relais -schakeling, (3)geheugen (1) Digitaal & binair (0) Het idee Informatica deel III: technologie, historiek en economische aspecten

1. Kan je hetzelfde met je smartphone als met je PC/laptop? Zijn de computers evenwaardig? 2. Kan je alle mogelijke programma s runnen op je smartphone/pc/laptop? Theoretisch Praktisch (compatibiliteit)

Hoofdstuk 6a: Computatietheorie Jan Lemeire Pag. 5 / 86

Leibniz droom De Calculus ratiocinator Een logisch denkend apparaat 1646 1716 Om met de regels van de logica ondubbelzinnig te kunnen vaststellen of een statement waar of vals is Deductief systeem waarin alle regels afgeleid zijn van een kleine verzameling axiomas Leibniz was één van de eerste die begreep dat als je filosoferen, denken, redeneren, in formele regels kunt gieten, je dit ook door een apparaat kunt Informatica 2e semester: HOC 8 laten doen. Jan Lemeire Pag. 6 / 86

George Boole 1815 1864 Logica herleid tot Booleaanse algebra Boole zette een belangrijke stap met het ontwikkelen van een algebra voor het rekenen met statements over waar/onwaar. Informatica 2e semester: HOC 8 Jan Lemeire Pag. 7 / 86

Gottlob Frege Beschrijft hoe wiskundigen en logici denken 1879: de universele taal van de logica 1903: brief van Betrand Russel die hem op een onvolledigheid wijst 1848 1925 Extra-ordinaire verzameling = verzameling dat een element is van zijn eigen Vb: verzameling van alle dingen die geen spreeuw zijn Maar: de verzameling E van alle ordinaire verzamelingen En wat is E? Ordinair of extra-ordinair Eind 19e eeuw dacht men dat alle natuurwetten binnen handbereik waren (positivisme). Zo begreep men met de Maxwell-vergelijkingen electriciteit en magnetisme. De relativiteitstheorie van Einstein en de kwantummechanica maakte een einde aan dit optimism in de fysica. Maar ook in de logica bleek nietinformatica zo iets2e te semester: bestaan HOC 8 als een mooie verzameling regels die niet tot contradicties leidt. Jan Lemeire Pag. 8 / 86

David Hilbert Wir mussen wissen; wir werden wissen We moeten weten; we zullen weten 1862 1943 Elke logische of mathematische vraag is oplosbaar (en zal opgelost worden) Nodig: een expliciete procedure om vanuit premises na te gaan of een conclusie volgt of niet (Hilbert s beslissingsprobleem) Hilbert s beslissingsprobleem zou leiden tot een doorbraak in de theoretische Informatica 2e semester: HOC 8 informatica. Jan Lemeire Pag. 9 / 86

Alan Turing Hilbert s procedure: algoritme! Als we een mechanische lijst van regels hebben om de oplossing van een mathematisch probleem op te lossen, zouden wiskundigen geen werk meer hebben Bestaat er zo n algoritme? Om tegendeel te bewijzen moest Turing een machine maken dat een algoritme kan uitvoeren Alan Turing wierp zich op Hilbert s probleem. Hij bedacht dat er hiervoor een algoritme gemaakt moest worden (die nagaat of een statement klopt of niet), en vervolgens een machine die het algoritme kan uitvoeren. De Turing Informatica 2e semester: HOC 8 machine werd geboren, een theoretisch model van een computer. Jan Lemeire Pag. 10 / 86

De Turing machine Data: oneindige lange tape voor het lezen of schrijven van 0/1/spatie Kan 1 vakje naar links of rechts bewogen worden Staat (toestand): een aantal binaire variabelen Gedragsregels: Staat Gelezen bit Nieuwe staat Te schrijven bit 0 0 0 0 > 0 1 1 1 < 1 0 1 _ > 1 1 HALT Bewegen Deze Informatica machine 2e semester: is alleen HOC 8 maar van theoretisch nut. Ze is bijvoorbeeld niet gemakkelijk programmeerbaar. Jan Lemeire Pag. 11 / 86

Oplossing van Hilbert s beslissingsprobleem? Met de machine nagaan of een logisch statement waar of vals is: Programma runnen Als de machine stopt is statement bewezen (waar) Je moet dus te weten komen of het programma ooit zal stoppen Halting problem (tegelijkertijd ontdekt door Alonzo Church en Alan Turing) Gegeven een Turing machine en programma, ga na of dit programma zal stoppen. Hier bestaat geen algoritme voor die dit kan nagaan Hilbert s beslissingsprobleem is onoplosbaar Het resultaat van Turing was weer een knak voor het optimisme van de wetenschap. Je kan niet van alles bewijzen of het waar of niet waar is. Hieruit onstond mede de moderne relativistische kijk op de wereld. De wetenschap kan niet alles oplossen/verklaren De VUB blijft echter geloven dat wetenschap veel kan oplossen. Informatica 2e semester: HOC 8 Scienta Vincere Tenebras! Jan Lemeire Pag. 13 / 86

De universele computer Elk algoritme kan er op uitgevoerd worden = Universele Turing Machine Kan alles berekenen wat berekenbaar is Rekenen, maar ook om logisch te denken Universeel Als je met een andere computer deze computer kan simuleren, is hij ook universeel Turing bewees de gelijkwaardigheid van computers Turing s resultaten blijken wel belangrijk voor de informatica. Misschien wel het belangrijkste resultaat van Turing is het idee van een universele computer. Eén computer (hardware) die alles kan berekenen wat maar te berekenen valt. Dit was revolutionair, zeker omdat velen in die tijd niet konden geloven dat je met 1 machine totaal verschillende berekeningen kan doen. Alsof je met een Informatica II: les 6 wasmachine ook kan autorijden. Jan Lemeire Pag. 14 / 86

Misvattingen omtrent computers Howard Aiken, bouwde de eerste computer voor IBM in 1944 en zei in 1956: If it should turn out that the basic logics of a machine designed for the numerical solution of differential equations coincide with the logics of a machine intended to make bills for a department store, I would regards this as the most amazing coincidence I have ever encountered Studie van 1947: slechts zes elektronische digitale computers zullen voldoende zijn om al het rekenwerk van de gehele Verenigde Staten te kunnen doen."

Basisprincipe 1 universele computer kan elke andere computer simuleren Zo is je programma ook maar data die zegt wat de computer moet doen. Voor dat programma heb je geen aparte machine nodig, toch? Nogal logisch, niet? Dit kan je ook toepassen op programmeertalen: je wilt een taal waarmee je alle mogelijke algoritmes kan programmeren, een universele programmeertaal. Als je met 1 computer een andere kan simuleren (nabootsen), kan je alles doen wat die andere ook kan. Als die andere universeel is, is de jouwe ook universeel. Hiermee bewijs je de equivalentie van universele computers. En ook de compleetheid van programmeertalen. Java & Python zijn complete Informatica 2e semester: HOC 8 talen, je kan er alles mee programmeren wat je maar kan bedenken. Jan Lemeire Pag. 16 / 86

De universele computer Elk algoritme kan er op uitgevoerd worden = Universele Turing Machine Kan alles berekenen wat berekenbaar is Rekenen, maar ook om logisch te denken Universeel Als je met een andere computer deze computer kan simuleren, is hij ook universeel Turing bewees de gelijkwaardigheid van computers Turing s resultaten blijken wel belangrijk voor de informatica. Misschien wel het belangrijkste resultaat van Turing is het idee van een universele computer. Eén computer (hardware) die alles kan berekenen wat maar te berekenen valt. Dit was revolutionair, zeker omdat velen in die tijd niet konden geloven dat je met 1 machine totaal verschillende berekeningen kan doen. Alsof je met een Informatica II: les 6 wasmachine ook kan autorijden. Jan Lemeire Pag. 17 / 86

Hoofdstuk 6b: Software Jan Lemeire Pag. 18 / 86

Informatica 2e semester: HOC 8 software: weg met de kabeltjes

software Programmeertalen Een processor biedt een aantal instructies aan die hij begrijpt en kan uitvoeren. Deze instructies zijn binair en noemt men machinecode. Voor de leesbaarheid biedt assembler mnemonische afkortingen aan voor de binaire instructies, alsook Informatica variabelen 2e semester: en HOC 8labels van codelijnen. De assembler zet alle afkortingen om naar binaire machinecode die dan uitgevoerd kunnen worden. Jan Lemeire Pag. 20 / 86

Executable = Machinetaal Grotendeels speciale nullen en enen (binaire codes), onleesbaar. Hier en daar leesbare tekst.

Voorbeeldprogramma (zie hfst 4) Scanner scanner = new Scanner(System.in); System.out.print("Geef een getal:"); int x = scanner.nextint(); int m = x; int t = 0; do { System.out.println(m); m = m * x; t++;

In assembler (javacode vanaf lijn 3) lw $t0, $s0 # load word mv $t1, $t0 # move value mv $t2, 0 l1: sw $t0, $s1 # store word mul $t1, $t1, $t0 # multiply add $t2, $t2, 1 lt # addition $t3, $t1, 1000 # less than lt $t4, $t2, 20 # less than and $t5, $t3, $t4 # and beq $t5, 1, l1 # jump to l1 if equal Lezen van toetsenbord en schrijven naar scherm gebeurt door te lezen en schrijven naar geheugenadressen $s0 en $s1. Variabelen x, m en t staan in registers $t0, $t1 en $t2. Voor de conditie hebben we 3 extra registers nodig ($t3, $t4 en $t5). l1 is een label van een instructie, om er later naar toe te kunnen springen. Resultaat van een bewerking komt in eerste operand. Jan Lemeire Pag. 23 / 86

Machinetaal bestaat uit 3 soorten instructies Hoofdstuk 4 1. Berekeningen en logische bewerkingen Berekeningen: optellen, vermenigvuldigen, bitwise operaties Logisch: vergelijken, and/or/xor/not 2. Controle-instructies De program counter wordt verhoogd/verlaagd: het programma gaat dus niet verder met de volgende instructie, maar springt naar een andere positie 3. Lezen en schrijven van gegevens Van en naar geheugen Van input en naar output

Machinetaal (binair) add $t0, $s1, $s2 00000010001100100100000000100000 assembler machinetaal 000000 10001 10010 01000 00000 100000 special $s1 $s2 $t0 0 add 0 17 18 8 0 32 1 instructies = 32 bits met specifieke betekenis

3 e generatietaal Onafhankelijk van de hardware beschrijving van het algoritme Gebruik van variabelen ipv geheugenadressen Geen JUMP, enkel for/while/if/switch Jumps leidt tot spagetticode, je mag van overal naar overal springen Functies/methodes mogelijk Omzetting naar assembler: compileren Checkt je code op syntaxfouten! Programmeren in assembler is niet produktief. Het is redelijk omslachtig, je maakt snel fouten en de code is heel onleesbaar. Daarom heeft men programmeertalen ontwikkeld die minder code vergen, meer aansluiten bij algoritmes, meer gestructureerd zijn, leesbaarder en minder foutgevoelig. De Nederlander Informatica 2e semester: Edgser HOC Dijkstra 8 was het voornaamste genie achter de 3 e generatietalen. Jan Lemeire Pag. 26 / 86

Edsger Dijkstra (NL) Welke constructies moet een programmeertaal minimaal bevatten? While/for Goto is onnodig. In oude talen kon je zeggen spring naar lijn 111, naar elke willekeurige lijn van je programma. Dit leidde echter tot onoverzichtelijke spaghetti -code. Dijkstra toonde aan dat een while voldoende is Functies In het begin waren er om praktische redenen veel beperkingen op het gebruik van functies. Recursie 1930 2002 Hier was veel tegenkanting tegen, omdat het praktisch tamelijk duur is (vergt veel van de processor)

Programma => computer broncode Applicatie (executable.exe) Operating System (Windows, Linux, Mac, ) Hogere taal compileren Machinetaal uitvoeren Hardware (Intel of AMD processor) Nieuwe compilatie nodig voor elk systeem (operating system + hardware)!

Java: via virtuele machine Java code (.java file) Java applicatie (.class of jar-file) Java Virtual Machine Operating System (Windows, Linux, Mac, ) Hardware (Intel of AMD processor) compileren Specifieke tussentaal die iets hoger is dan assembler uitvoeren Tijdens het uitvoeren wordt instructies van de class-files omgezet naar machinetaal Javacode werkt op elk operating system! Je moet wel de virtuele machine installeren

Ideaal voor internet Java applicatie (.class of jar-file) Java Virtual Machine Operating System (Windows, Linux, Mac, ) Jou code staat op webserver INTERNET Via virtuele machine runt hij op elke lokale machine ( client ) Hardware (Intel of AMD processor) Doordat Javacode via een virtuele machine (die wel specifiek is voor elk systeem) Informatica tijdens 2e semester: het HOC uitvoeren 8 wordt omgezet naar machinetaal, kan je Jan Lemeire Pag. 30 / 86 programma overal uitgevoerd worden.

Python & Matlab Geïnterpreteerde talen Je code wordt tijdens het uitvoeren omgezet naar machinetaal. Je moet Python/Matlab dus geïnstalleerd hebben Javacode wordt wèl gecompileerd, java-files worden omgezet naar class-files. Javacode wordt dus gecontroleerd op fouten. Maar Python en Matlab niet, waardoor je programma zal crashen bij fouten met de types van variabelen bijvoorbeeld Java Virtual Machine gebruikt een Just-in-time compiler om toch optimale machinecode te verkrijgen Pypy is een just-in-time compiler voor Python

Snelheid matrixmultiplicatie Product van twee 200x200 matrices runtime (ms) faster? C (executable) 8,4 java 28 0,30 python 10822 0,0008 python met numpy library functie 11,5 0,73 Python met just-in-time compiler pypy 82 0,10 matlab 172 0,049 matlab library functie 0,713 11,8 gpu (intel) 0,375 22,4 gpu (AMD tahiti) 0,161 52,2 gpu (nvidia geforce GTX 650) 0,077 109,1 https://jakevdp.github.io/blog/2014/05/09/why-python-is-slow/

4e generatietaal High-level specification languages: programmeren wat je wilt, niet hoe het moet gebeuren Vb: GUI aanmaken met een tool Te integreren in Eclipse Google Windowbuilder Pro Visual Editor (Nog) niet echt succesvol Enkel voor specifieke applicaties (zoals GUIs) Mijn mening: nog geen artificiële intelligentie => computer kan nog niet begrijpen wat je wilt Een GUI aanmaken kan via een tool waarbij je niets moet programmeren. Je bouwt Informatica als 2e het semester: ware HOC je 8 applicatie door aan te geven hoe deze er uit moet zien. Deze methode werkt echter nog niet voor algemene applicaties Jan Lemeire Pag. 33 / 86

Tool om GUIs te maken Kan je toevoegen aan Eclipse! Jan Lemeire Pag. 34 / 86

Object-georiënteerde talen Worden als 3 e generatietalen aanzien Toch is de code-organisatie fundamenteel verschillend De code is opgesplitst in klasses ipv functies. Vergt een andere manier van denken Is dè uitdaging van dit semester, zowel voor jullie als voor ons (lesgevers) Informatica 2e semester: HOC 9 Jan Lemeire Pag. 35 / 86

Voor ingenieur: welke taal? moet handig en efficiënt zijn, geschikt voor de taak Python Matlab High-level (doet veel voor u) Java Kleine projecten C/C++ Grote projecten Low-level (kort bij de hardware) Zonder al te diep in te gaan over wat nu de beste taal is (een eeuwige steedshoog-oplopende discussie onder informatici), in dit schema een kleine poging tot conclusie. C/C++ zullen velen later nog zien, het is een veel-gebruikte taal die kort bij de hardware staat, daarvoor uitermate geschikt voor het programmeren van Informatica 2e semester: HOC 8 systemen (chips, robots, kritische applicaties, ) Jan Lemeire Pag. 36 / 86

Wat met je Javaproject? Java-deel: 1.6.5 Executable jar-file Eclipse: Export => Java => Runnable JAR file Je kiest klasse met de main() die uitgevoerd moet worden App for Android Android = java Mogelijk, maar nog iets te moeilijk voor 1e bachelors Informatica 2e semester: HOC 9 Jan Lemeire Pag. 37 / 86

Hoofdstuk 8 Sorteren

p. 78 Sorteren 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 Informatica 2e semester: HOC 9 Jan Lemeire Pag. 41 / 86

1. Selection Sort 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 n stappen Informatica 2e semester: HOC 9 n operaties Jan Lemeire Pag. 42 / 86

public static void selectionsort(int[] array){ 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; Informatica 2e semester: HOC 9

/** 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; } } Om de waarden van 2 variabelen te wisselen heb je altijd een tijdelijke (temporary=tmp) variabele nodig. x=y; y=x; zal niet werken Informatica 2e semester: HOC 9

Performantie Selection Sort: n 2 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 n stappen n/2 operaties

Performantie selection sort De basisoperaties: vergelijkingen en kopies Aantal kopies 3.n = O(n) Aantal vergelijkingen ( n 1) + ( n 2) +... + 1 = n 1 i= 1 n i n 1 = i= 1 i = ( n 1+ 1).( ( n 2 1) ) = n 2 2 n = ( n 2 ) Informatica 2e semester: HOC 9 Jan Lemeire Pag. 46 / 86

p. 80 2. Bubble Sort 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 Informatica 2e semester: HOC 9 Jan Lemeire Pag. 47 / 86

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); } Informatica 2e semester: HOC 9

Performantie Bubble Sort Aantal vergelijkingen Worst case: evenveel als selection sort Bvb in omgekeerde volgorde ( n 2 ) Best case? Reeds gesorteerd Slechts enkelen niet op zijn plaats (n) Informatica 2e semester: HOC 9 Jan Lemeire Pag. 49 / 86

Static in java denken in objecten

Boek java: p. 52 Objecten Hebben elk hun eigen attribuutwaarden, niet static dus Informatica 2e semester: HOC 9 Jan Lemeire Pag. 51 / 86

Handige van static 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) Informatica 2e semester: HOC 9 Jan Lemeire Pag. 52 / 86

Probleem met static 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 Informatica 2e semester: HOC 9 Jan Lemeire Pag. 53 / 86

Wanneer static te gebruiken? 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. 26 (aantaliteraties) en hoofdstuk over sorteren Informatica 2e semester: HOC 9 Jan Lemeire Pag. 54 / 86

Highscore server https://rapptor.vub.ac.be/gamemanager/

Stap 1: aanmaken gebruiker Code nodig: krijg je nog via mail Informatica 2e semester: HOC 9 Jan Lemeire Pag. 56 / 86

Inloggen Informatica 2e semester: HOC 9 Jan Lemeire Pag. 57 / 86

Stap 2: aanmaken game (Submit game) Informatica 2e semester: HOC 9 Jan Lemeire Pag. 58 / 86

Stap 3: toevoegen aan java GM.jar toevoegen aan project (zie documentatie) API (Application Programming Interface) Class ApiBoard in package import gm.apiboard; List<Score> getresults(string gamename) String addresult(float result, String playername, String gamename) public class Score { public String score; public String date; public String player; } => democode is bijgeleverd Informatica 2e semester: HOC 9 Jan Lemeire Pag. 59 / 86

Stap 4: Security Bij verzenden van resultaten Gm.jar zal getal berekenen en meesturen Als project in Eclipse: aantal bytes (Game size) Als jar-file: checksum (=hashfunctie uit de encryptie; zie laatste les) Wordt gecontroleerd als gespecifieerd bij de Game Information op website (stap 2) Als je ze allebei op nul zet wordt het niet gecontroleerd Als getallen niet overeenkomen: resultaat wordt niet weggeschreven Bereken juiste waarde: Game size met ApiBoard.getProjectInfo() Checksum: op website bij game information kan je jar-file uploaden Informatica 2e semester: HOC 9 Jan Lemeire Pag. 60 / 86

Achter de schermen: database Lijkt op opslaan van objecten van 3 klassen (user, game, score) Informatica 2e semester: HOC 9 Jan Lemeire Pag. 61 / 86

Hoofdstuk 7: Operating Systems Jan Lemeire Pag. 62 / 86

Bedrijfscomputers Initieel waren er voornamelijk bedrijfscomputers Centrale computer mainframe systemen Voornaamste fabrikant: IBM Informatica 2e semester: HOC 9 Jan Lemeire Pag. 63 / 86

Interactiviteit via Terminal Scherm van 24 lijnen van 80 tekens groot Gebruikers Informatica 2e werken semester: HOC op 9 de centrale computer via domme terminals die enkel het scherm tonen en de input van de gebruiker (via toetsenbord) doorgeven. Jan Lemeire Pag. 64 / 86

Toepassingen mainframe Gegevens (bvb boekhouding) van banken, bedrijven, winkels etc Gegevens worden bijgehouden in database Database = gestructureerd bijhouden van gegevens Eigenschappen mainframe: Betrouwbaarheid (heel belangrijk) Robuust (crasht bijna nooit) Veiligheid (security) van gegevens (bvb bankgegevens) Informatica 2e semester: HOC 9 Jan Lemeire Pag. 65 / 86

IBM gaat voor Personal Computer Computer voor thuis Kan op eigen kracht werken (niet geconnecteerd met centrale computer) De PC is geboren! IBM: op dat moment het grootste informaticabedrijf Concentreert zich op hardware De PC ontketent een nieuwe revolutie in de informatica Informatica 2e semester: HOC 9 1981 Jan Lemeire Pag. 66 / 86

IBM gaat langs bij Bill Gates en vrienden Zitten thuis te programmeren Steken DOS in elkaar MicroSoft is geboren Nog steeds terug te vinden in Windows Cmd-window Programma s start je met commando (en eventueel argumenten) Informatica 2e semester: HOC 9

IBM heeft Operating System nodig IBM gaat langs bij Bill Gates en zijn hippie -vrienden Zitten thuis te programmeren MicroSoft is geboren Steken DOS (Disc Operating System) in elkaar Nog steeds terug te vinden in Windows Cmd-window Programma s start je met commando (en eventueel argumenten dit zijn de String[] args van de main) Informatica 2e semester: HOC 9 Jan Lemeire Pag. 68 / 86

Commando-based: Je geeft commando s In de terminal of shell Informatica 2e semester: HOC 9 Jan Lemeire Pag. 69 / 86

Bill Gates wordt rijkste man ter wereld 0.1 Informatica 2e semester: HOC 9 Jan Lemeire Pag. 70 / 86

Macht ligt vanaf nu bij software en vooral het besturingsysteem Informatica 2e semester: HOC 9 1984 IBM maakt historische vergissing door op hardware te blijven mikken Ze mist de softwareboot compleet Jan Lemeire Pag. 71 / 86

IBM Informatica 2e semester: HOC 9 Jan Lemeire Pag. 72 / 86

Besturingsysteem = Operating System (OS) OS regelt en organiseert de computer OS wordt van harde schijf gestart bij het booten BIOS zorgt hiervoor Een besturingssysteem (in het Engels operating system of afgekort OS) is een programma (meestal een geheel van samenwerkende programma's) dat na het opstarten van een computer in het geheugen geladen wordt en alle mogelijkheden van de computer aan de gebruiker. Het OS biedt ook de functionaliteiten aan om andere programma's - applicaties genoemd - uit te Informatica 2e semester: HOC 9 voeren. Jan Lemeire Pag. 73 / 86

Application Programming Interface (API) OS verstopt de details van de hardware voor de gebruiker en voor applicaties dmv een API Deze worden op een uniforme wijze aan de applicaties aangeboden. De API abstraheert de toegang tot de verschillende randapparatuur, zonder OS moet elk programma zelf instaan voor het aansturen van randapparatuur (zoals printer, beeldschermen, harde schijf). Een gebruikersprogramma is enkel afhankelijk van het OS, niet van de randapparatuur. Het communiceren van het OS met het randapparaat gebeurt via een driver (die wel specifiek is voor elke apparaat zoals printer).

Interactiviteit Geen interactiviteit = batch programma Programma en gegevens worden op voorhand klaargemaakt Tijdens de uitvoering kan je niet interageren met het programma Resultaten worden op het einde als geheel gepresenteerd Commando-gebaseerd Cf DOS, linux shell De commando s worden geïnterpreteerd en het programma gestart Je kan een lijst van commando s doorgeven ( batch ) Grafische User-Interface (GUI) Windows, muis, toetsenbord, touch screen Informatica 2e semester: HOC 9 Jan Lemeire Pag. 75 / 86

Hoofdtaken OS (vervolg) Verdelen van toegang tot systeembronnen (RAM-geheugen, opslag, printer etc.) tussen actieve programma's Elk programma krijgt een deel van het werkgeheugen toegewezen (java: standaard 64MB, je kan dit anders instellen) OS voorkomt dat programma buiten zijn deel gegevens kan lezen of schrijven (beveiliging!) Aanbieden gegevens (files) en applicaties aan gebruiker OS beheert het filesysteem (georganiseerd in een boomstructuur dmv folders) Verdelen van processortijd over de aktieve programma s Zie verder Informatica 2e semester: HOC 9 Jan Lemeire Pag. 76 / 86

Op een modern OS kan je meerdere programma s tegelijk draaien. Het uitvoeren van een programma resulteert in een proces. Een achtergrondproces is in feite ook een gewoon programma, maar ze is niet zichtbaar voor de gebruiker. De achtergrondprocessen zorgen voor het beheer van het systeem of bieden services aan (zoals het sharen van je (muziek-)files en het checken van je mailbox). Task Manager Windows: start via Control-Alt-Delete Toont actieve applicaties en processen, alsook processorgebruik Applicaties: van gebruiker Processen: naast de processen van de applicaties, ook processen en achtergrondprocessen ( services ) van operating system en applicaties Operating System verdeelt cycles van processor (CPU) over de verschillende processen (process scheduling)

Threads van processen main(){ thread.start();..................... } Hoofdthread Process Zijthread run(){...... } Eén programma kan bestaan uit meerdere threads. Elke thread voert een sequentie van instructies uit. Een sequentie kan je zien als een draad, vandaar de benaming. Vele moderne toepassingen zijn zelf opgebouwd uit een aantal onafhankelijke threads die simultaan uitgevoerd worden. Het tekstverwerkingsprogramma Word bv. gebruikt verschillende threads om teksten en figuren op het scherm te tonen, zodanig dat wanneer men snel door een tekst wenst te lopen men niet hoeft te wachten op het tekenen van alle figuren. Een andere thread zal tegelijkertijd je taalfouten opsporen (de spelling checker).

Threads van je project Boek I: p 50 main(){ Jframe frame = new Jframe(); frame.show();... } Informatica 2e semester: HOC 9 Hoofdthread Hoofdthread doet niets meer Proces Thread voor afhandelen events Windows do{ Wacht op event Bepaal broncomponent Roep Listeners op actionperformed(){... timer.start();... } Uw code } while (frame is shown); Maar 1 GUI-thread: kan maar 1 actie/event tegelijk afhandelen!!! Thread voor timer Windows For(elke x ms){ } Aparte thread voor spellus actionperformed(){......... } Uw code

Process scheduler De process-scheduler is het deel van het besturingssysteem dat op elk ogenblik bepaalt welk van de programma's toegewezen wordt aan de centrale verwerkingseenheid (CPU). Het hart van de computer, de processor of CPU, kan immers maar 1 programma tegelijk uitvoeren. De processor is immers opgebouwd volgens de Von Neumann-architectuur. Karakteristiek voor deze architectuur is dat hij één programma stap-voor-stap uitvoert. De CPU zal om beurten de programma s uitvoeren. Moderne computers hebben intussen meerdere processorcores (dual core, quadcore, ). Dat zijn dan in feite 2, respectievelijk 4 onafhankelijke processoren die elk één proces tegelijkertijd kunnen uitvoeren. De process-scheduler zal per core de processortijd verdelen over de lopende processen en threads: elk proces/thread krijgt een periode ( time slice ) toegekend.

Toestanden van een proces Informatica 2e semester: HOC 9 De lopende processen, kunnen zich, op elk ogenblik in drie toestanden bevinden: 1) actief: de centrale verwerkingseenheid (CPU) is aan het proces aan het werken; dwz. dat instructies van dat programma opgehaald worden door de stuureenheid en worden uitgevoerd. 2) geblokkeerd: een in- of uitvoeroperatie (Input/Output of I/O) is aan de gang en het proces moet wachten tot het einde ervan; 3) wachtend: het proces zou kunnen uitgevoerd worden, maar de centrale verwerkingseenheid is niet beschikbaar, ze is instructies aan het uitvoeren van een ander proces. Het proces moet wachten tot de proces-scheduler processorcycles ter beschikking stelt.

Overgang van 1 proces naar een ander Als het actieve proces op I/O (input/output) moet wachten Dikwijls wordt bij I/O het OS geactiveerd, omdat die de I/O beheert (bvb toegang tot files controleert) Of als de toegekende time slice die een proces toegekend krijgt op is Bij starten van een proces wordt ook een timer gestart die na de time slice een interrupt geeft Interrupt zorgt dat de processor met het actieve proces stopt en de scheduler van het OS wordt gereactiveerd. Deze beslist welk proces nu een time slice toegekend krijgt. Overgang naar een nieuw proces: context switch de staat van het oude proces wordt opgeslagen en dat van het nieuwe wordt geladen

Informatica II: les 9 Interrupts Met een Interrupt ( onderbreking ) wordt een lopend programma onderbroken. Deze is voorzien in de hardware van de processor. Je kan immers niet verwachten dat een lopend programma zelf zal checken of hij verder mag gaan. Ook kan het OS er niet van uitgaan dat elk programma in een redelijke tijd stopt. Het OS moet op elk moment een programma kunnen onderbreken. Anders zou een oneindige lus volledig beslag leggen op je processor zonder dat je er iets aan kan doen (behalve dan de computer herstarten). Let op: het OS is ook niets meer dan een programma. Er is geen big brother in je computer die toekijkt wat de processor doet. Controle over het actieve proces wordt verkregen door interrupts. Processoren bevatten een hardwareschakeling waardoor een programma kan onderbroken worden door middel van een interrupt. Vervolgens bepaalt de interrupt handler welk programma uitgevoerd moet worden. Aan de hand van de oorsprong van de interrupt veroorzaakt deze een sprong naar het gewenste programma. Als er bijvoorbeeld input binnenkomt (muisklik, internetbericht). Of voor de controle door het OS. Stel dat een programma een file wil openen, dan wordt het OS even geactiveerd om te controleren of het programma dat wel mag. Als de file nog open is in een ander programma bvb, wordt de toegang geweigerd.

Conclusie: in de consumentenmarkt is het Windows of Linux. Informatica 2e semester: HOC 9 Unix & Linux UNIX operating system: zoals mainframe initieel bestemd voor bedrijfscomputers User moet inloggen Heeft eigen files op server (in zijn home) Enkel administrator kan dingen aan systeem veranderen Linux: Open Source-versie van UNIX Open Source volgt de GNU-regels: de code mag vrij (gratis) gebruikt worden zolang er geen geld voor gevraagd wordt Apple gebruikt nu ook een Unix-versie Android van Google is java op Linux

Strategie: open versus gesloten Microsoft s Windows: Open besturingssysteem Iedereen mag er software voor ontwikkelen Geeft andere bedrijven kansen Microsoft concentreerde op besturingssysteem & software Apple: niet op hardware en niet op alle software Hield en houdt controle over het hele systeem, software & hardware Werkte initieel tegen hun (eind 90 bijna failliet) Via apps kan je software aanbieden Pakt nu succesvol uit met totaalproducten Gebruiksgemak, stijl en design steeds prioritair Analoog: Samsung/Android versus Apple