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

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

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

Informatica 2e semester

Hoofdstuk 0. Van Python tot Java.

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

Objectgericht programmeren 1.

Modelleren en Programmeren

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Objectgericht Programmeren. (in Python)

Zelftest Programmeren in Java

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

Modelleren en Programmeren


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

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

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

Vakgroep CW KAHO Sint-Lieven

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Overerving & Polymorfisme

Programmeren in Java les 3

Modelleren en Programmeren

Ingebouwde klassen & methodes

Modelleren en Programmeren

Ontwerp van Informatiesystemen

IMP Uitwerking week 13

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Modelleren en Programmeren

Lessen Java: Reeks pag. 1

Programmeren (1) Examen NAAM:

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

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Modulewijzer Tirdat01

Programmeren in C# Samenvatting van C#

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN

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

Programmeren in Java 3

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

N&O: Objectgericht Programmeren. (in Python)

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

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

Scala. Korte introductie. Sylvia Stuurman

Abstracte klassen & Interfaces

Addendum bij hoofdstuk 5 Generieke implementatie van de zoekalgoritmen

Kleine cursus PHP5. Auteur: Raymond Moesker

Lessen Java: Reeks 3. David Blinder Jan G. Cornelis

Game of Life in Java

Wat is een grafische gebruikersinterface (GUI)?

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Noties Informatica. In java fungeren objecten als een model voor de elementen waarin een probleem kan worden opgesplitst

Modelleren en Programmeren

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

Modelleren en Programmeren

SYNTRA-WEST. Initiatiecursus JAVA. Deel

Inhoud leereenheid 7c. JavaScript: Objecten en functies. Introductie 59. Leerkern 60. Samenvatting 82. Opdrachten 83. Zelftoets 89.

BEGINNER JAVA Inhoudsopgave

Inleiding C++ Coding Conventions

Deel 1 : Gesloten Boek

Objectgericht programmeren 1.

Inleiding Programmeren 2

Datastructuren en algoritmen

Inleiding programmeren

Java. Basissyllabus. Egon Pas

Modelleren en Programmeren

Programmeren in Java 3

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

compileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken

Inleiding Programmeren 2

10 Meer over functies

OEFENINGEN PYTHON REEKS 1

MINICURSUS PHP. Op dit lesmateriaal is een Creative Commons licentie van toepassing Sebastiaan Franken en Rosalie de Klerk Bambara

Modelleren en Programmeren


NAAM: Programmeren 1 Examen 21/01/2011

Oefeningen Java Oplossingen

OEFENINGEN PYTHON REEKS 1

Recursie. public static int faculteit( int n ){ // Deze functie berekent n! // pre: n = N en n >= 0 // post: faculteit = N!

Modulewijzer tirprog02/infprg01, programmeren in Java 2

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

OEFENINGEN PYTHON REEKS 1

Datastructuren Werkcollege Intro

Transcriptie:

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

identificeren van cellen Arabidopsis (zandraket)

Arabidopsis (zandraket)

MMIQQA Multimodal Microscopic Imaging: Quality, Quantification and Acceleration

De Digitale Wereld

Automated plant phenotyping platform

Hyperspectral camera setup VNIR (400 1000 nm) SWIR (1000-2500 nm)

High-resolution hyperspectral imaging

Hyperspectral image issues Differences in intensity due to leaf orientation effects

The third pillar of the scientific world: computational science

7/03/2016 15

Informatica = tool

Jan Lemeire (jan.lemeire@vub.ac.be) Burgerlijk ingenieur, 1994, VUB + bijkomende masters in de computerwetenschappen (1995) Werkte 4 jaar in de privé, voor 2 IT-consultancybedrijven 2000-2007: doctoreerde aan de VUB als assistent Gaf oefeningen informatica Sinds 2008: professor aan VUB Vak parallel systems in de masters Sinds 2011: titularis Informatica eerste bachelors Sinds oktober 2013: geeft ook les aan industrieel ingenieurs Bachelors: Informatica en Basiselektronica Masters: Computerarchitectuur Onderzoeksdomeinen: parallel processing & data mining/machine learning/probabilistische modellen http://parallel.vub.ac.be

+ Eerste semester Python: procedureel programmeren Algoritmes Recursie Maken van een eigen functie Maken van een while-lus Gebruiken van lijsten Maken van een for-lus Variabelen

2 e semester Cursustekst deel I Cursustekst deel II Verschillen met vorig jaar: op website Cursustekst deel III Slides: alles staat in cursus Indien niet: staat duidelijk aangegeven Code http://parallel.vub.ac.be: alle info Informatica II: les 1 Jan Lemeire Pag. 19 / 40

2e zit en vrijstellingen Zie parallel.vub.ac.be Met een 10/20 gemiddeld ben je geslaagd, anders 2e zit. Vanaf 12/20 heb je een officieuze vrijstelling voor een onderdeel (theorie/oefeningen/project) van 1e naar 2e zit. In juni bieden we de mogelijkheid om facultatief je punten van het 1e semester te verbeteren, indien je een 7, 8 of 9 behaalde in het eerste semester (gemiddelde over theorie en oefeningen) en je slaagt voor je mondeling examen met minstens een 12/20. Informatica II: les 1 Jan Lemeire Pag. 20 / 40

1 e semester Basis programmeervaardigheden While for Lijsten/arrays Functies Recursie CURSUS I Object-georiënteerd programmeren Regels Organisatie van de code Gebruik klasses Pijlers Datastructuren Arrays ArrayLists Stack, Queue, Linked lists trees - maps CURSUS II Algoritmen Numerieke algoritmen: nulpunten, sorteren Zoekalgoritmen Beheers het gebruik van bibliotheken: Programmeervaardigheden Klassestructuur PROJECT Voorbeelden Documentatie GUI-klassen JFrames Jpanels Jbuttons - Events Eventlisteners - mouse Paint, layout, JApplet Utility-klassen Timer, Thread, Random, File, CURSUS III: technologie, historiek en economische aspecten

Deel I 4 pagina s referentie java Java s spelregels Pijlers van object-georiënteerde programmeertalen Jan Lemeire Pag. 23 / 40

Java versus Python 1. Object-georiënteerde taal. 2. public static void main 3. Puntkomma s en accolades 4. System.out.println 5. Typeren: sterk en statisch 6. Arrays en ArrayLists 7. Verschil tussen letters en woorden 8. De for-lus 9. Varia p. 8 Informatica II: les 1 Jan Lemeire Pag. 24 / 40

Statements eindigen met ; p. 9 Informatica II: les 1 Jan Lemeire Pag. 25 / 40

Wat berekent GHI? p. 10 Informatica II: les 1 Jan Lemeire Pag. 26 / 40

p. 10 GGD in python def berekenghi(x, y): while x!= y: if x > y: x = x-y else: y = y-x return x; s = raw_input("geef 2 getallen: ") a = int(s) s = raw_input() b = int(s) ggd = berekenghi(a, b) print GGD van", a, "en", b, "is", ggd Informatica II: les 1 Jan Lemeire Pag. 27 / 40

p. 12 Getypeerde parameters public static int berekengrootstgemenedeler(int x, int y) Java: Enkel op te roepen met integers In python: ook reëel getal mogelijk! Elk type, dus ook string Parameters 4.5 & 5.5 werkt Parameters 4.5 en 5.1 werkt het niet NOK Informatica II: les 1 Jan Lemeire Pag. 28 / 40

Type checking nuttig Je weet als gebruiker wat mee te geven In python: input documenteren Geruststelling, je kan niets fouts doen Hier: negatieve waarden geeft fouten: checken In Python: steeds extra checks doen op type Parameters kunnen ingewikkelde objecten zijn Informatica II: les 1 Jan Lemeire Pag. 29 / 40

p. 16 Functie: maar 1 teruggeefwaarde Java, zoals de meeste programmeertalen Functie kan maar 1 waarde teruggeven Voorbeeld: celsius-conversie, ggd Indien meerdere waarden: truken nodig Informatica II: les 1 Jan Lemeire Pag. 30 / 40

Voorlopige conclusie conclusie Python Snel, voor kleine programma s High-level, handige basisfunctionaliteiten Cf Matlab Java Voor grote programma s en bibliotheken, te delen met andere programmeurs Iets meer low-level Meest-gebruikte industriële taal Informatica II: les 1 Jan Lemeire Pag. 31 / 40

Java versus Python 1. Object-georiënteerde taal. 2. public static void main 3. Puntkomma s en accolades 4. System.out.println 5. Typeren: sterk en statisch 6. Arrays en ArrayLists 7. Verschil tussen letters en woorden 8. De for-lus 9. Varia Informatica II: les 1 Jan Lemeire Pag. 32 / 40

Objecten

p. 17 Persoon-object Informatica II: les 1 Jan Lemeire Pag. 35 / 40

p. 18 operator:?... : p. 16 Informatica II: les 1 Jan Lemeire Pag. 36 / 40

p. 19 Persoonobjecten Informatica II: les 1 Jan Lemeire Pag. 37 / 40

Objecten Gedefinieerd met een klasse (type object) Heeft attributen De eigenschappen van het object Aangemaakt met een constructor Object is instantiatie van een welbepaalde klasse Heeft methodes Methode heeft toegang tot de attributen, kan deze veranderen Informatica II: les 1 Jan Lemeire Pag. 38 / 40

Overerving

p. 20 Een student is een persoon public class Student extends Persoon{ enum Faculteit {IR, WE, GF, LK, LW, ES, RC, PE}; int rolnummer; Faculteit faculteit = Faculteit.IR; Student(String voornaam, String naam, int rolnummer){ super(voornaam, naam); this.rolnummer=rolnummer; } } Informatica II: les 1 Jan Lemeire Pag. 40 / 40

p. 5 regel 6 Overerving (inheritance) Subklasse erft alle attributen en methodes over van moederklasse Subklasse kan attributen toevoegen Subklasse kan methodes toevoegen of methodes overschrijven Constructor van subklasse moet een constructor van moederklasse oproepen (superconstructor) Informatica II: les 1 Jan Lemeire Pag. 41 / 40

Overerving (Inheritance): hiërarchie Generalizatie Vehicle Light Vehicle Heavy Vehicle Car Truck Bus Specializatie Racing Car Jan Lemeire Pag. 42 / 40

Pijlers van object-georiënteerde programmeertalen p. 7 Jan Lemeire Pag. 43 / 40

Super-constructor Het aanmaken van een Student-object vergt ook het aanmaken van een Persoon-object Op de eerste lijn van de Student-constructor roep je een constructor van Persoon op met super(voornaam, naam); Informatica II: les 1 Jan Lemeire Pag. 44 / 40

Objectattributen

p. 21 Informatica II: les 1 Jan Lemeire Pag. 46 / 40

public class Student extends Persoon { enum Faculteit {IR, WE, GF, LK, LW, ES, RC, PE}; int rolnummer; Faculteit faculteit = Faculteit.IR; ArrayList<Vak> vakken; Map<Vak, Integer> punten; float score; Student(String voornaam, String naam, int rolnummer, Faculteit fac){ super(voornaam, naam); this.rolnummer=rolnummer; this.faculteit = fac; vakken = new ArrayList<Vak>(); punten = new HashMap<Vak, Integer>(); } } public class Vak { String naam, titularis; int SP; Vak(String naam, String titularis, int SP){ this.naam = naam; this.titularis = titularis; this.sp = SP; } } Informatica II: les 1 Jan Lemeire Pag. 48 / 40

Aanmaken objecten public static void main(string[] args) { Student rik = new Student("Rik", "Vermeulen", 37365, Faculteit.IR); Student jana = new Student("Jana", "Laplace", 101670, Faculteit.WE); Vak informatica = new Vak("Informatica", "Jan Lemeire", 7); Vak materiaalkunde = new Vak("Materiaalkunde", "Herman Terryn", 4); Vak mechanica = new Vak("Mechanica", "Dirk Lefeber", 7); rik.vakken.add(informatica); rik.punten.put(informatica, 14); rik.vakken.add(materiaalkunde); rik.punten.put(materiaalkunde, 12); rik.vakken.add(mechanica); rik.punten.put(mechanica, 17); } jana.vakken.add(informatica); jana.punten.put(informatica, 16); jana.vakken.add(mechanica); jana.punten.put(mechanica, 13); Informatica II: les 1 Jan Lemeire Pag. 49 / 40

Berekening score int berekentotaal(){ score=0; for-lus int totaalsp=0; for(vak vak: vakken){ score += punten.get(vak) * vak.sp; totaalsp += vak.sp; } score /= totaalsp; return score; } p. 15-16 float scorerik = rik.berekentotaalscore(); float scorejana = jana.berekentotaalscore(); System.out.println(rik+" behaalde "+scorerik+"/20"); System.out.println(jana+" behaalde "+scorejana+"/20"); Informatica II: les 1 Jan Lemeire Pag. 50 / 40