Informatica Deel II: les 1 Java versus Python
Jan Lemeire Informatica deel II februari – mei 2015
Parallel Systems: Introduction
Arabidopsis (zandraket)
Arabidopsis (zandraket)
MMIQQA Multimodal Microscopic Imaging: Quality, Quantification and Acceleration
The third pillar of the scientific world: computational science
9/02/2015
9
Informatica = tool
Jan Lemeire (
[email protected]) • Burgerlijk ingenieur, 1994, VUB + bijkomende masters in de computerwetenschappen (1995)
• Werkte 4 jaar in de privé, voor 2 IT-consultancy companies • 2000-2007: doctoreerde aan de VUB als assistant – 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 – Computerarchitectuur, operating systems, gevorderde programmeertechnieken
• Onderzoeksdomeinen: parallel processing & data mining/machine learning/probabilistische modellen • http://parallel.vub.ac.be
+
Eerste semester
Algoritmes Recursie
Maken van een eigen functie Maken van een while-lus Gebruiken van lijsten Maken van een for-lus
Variabelen
2e semester Boek: Java de basis - Andree Hollander Cursustekst deel II 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. 13 / 40
1e semester Basis programmeervaardigheden While – for Lijsten/arrays Functies Recursie
Datastructuren Arrays – ArrayLists Stack, Queue, Linked lists trees - maps
Algoritmen Numerieke algoritmen: nulpunten, sorteren Zoekalgoritmen
Object-georiënteerd programmeren Regels Organisatie van de code Gebruik klasses Pijlers
• • • •
Beheers het gebruik van bibliotheken: Programmeervaardigheden PROJECT Klassestructuur Voorbeelden Documentatie GUI-klassen JFrames – Jpanels – Jbuttons - … Events – Eventlisteners - mouse Paint, layout, JApplet Utility-klassen Timer, Thread, Random, File, …
THEORIE III: technologie, historiek en economische aspecten
Deze cursus: kennis & vaardigheden • • • •
Nieuwe ‘taal’ onder de knie krijgen Nauwkeurigheid Debuggen – problemen oplossen Doorzettingsvermogen
• Brede vorming
– Alhoewel kans groot is dat je met programmeren in aanraking komt
Informatica II: les 1
Java versus Python 1. 2. 3. 4. 5. 6. 7. 8. 9.
Object-georiënteerde taal. public static void main Puntkomma’s en accolades System.out.println Typeren: sterk en statisch Arrays en ArrayLists Verschil tussen letters en woorden De for-lus Varia
Informatica II: les 1
Jan Lemeire
Pag. 16 / 40
Informatica II: les 1
Jan Lemeire
Pag. 17 / 40
Wat berekent GHI?”
Informatica II: les 1
Jan Lemeire
Pag. 18 / 40
p. 6
GGD in python def berekenGGD(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 = berekenGGD(a, b) print “GGD van", a, "en", b, "is", ggd Informatica II: les 1
Jan Lemeire
Pag. 19 / 40
p. 8
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. 20 / 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. 21 / 40
p. 11
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. 22 / 40
Voorlopige 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. 23 / 40
Java versus Python 1. 2. 3. 4. 5. 6. 7. 8. 9.
Object-georiënteerde taal. public static void main Puntkomma’s en accolades System.out.println Typeren: sterk en statisch Arrays en ArrayLists Verschil tussen letters en woorden De for-lus Varia
Informatica II: les 1
Jan Lemeire
Pag. 24 / 40
Objecten
Persoon-object
Informatica II: les 1
Jan Lemeire
Pag. 27 / 40
p. 13
Informatica II: les 1
Jan Lemeire
Pag. 28 / 40
p. 14
Persoonobjecten
Informatica II: les 1
Jan Lemeire
Pag. 29 / 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. 30 / 40
Student-voorbeeld
Jan Lemeire
Pag. 31 / 40
p. 16
Informatica II: les 1
Jan Lemeire
Pag. 32 / 40
Overerving
Jan Lemeire
Pag. 33 / 40
public class Student extends Persoon{ enum Faculteit {IR, WE, GF, LK, LW, ES, RC, PE}; int rolnummer; Faculteit faculteit = Faculteit.IR; Vak[] vakken; int[] punten; float score;
}
Student(String voornaam, String naam, int rolnummer){ super(voornaam, naam); this.rolnummer=rolnummer; vakken = new Vak[4]; }
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. 34 / 40
Aanmaken objecten /** PROGRAMMA */ public static void main(String[] args) { Student rik = new Student("Rik", "Vermeulen", 37365); Student jana = new Student("Jana", "Laplace", 101670); 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[0] = informatica; rik.vakken[1] = materiaalkunde; jana.vakken[0] = materiaalkunde; jana.vakken[1] = mechanica; }
Informatica II: les 1
Jan Lemeire
Pag. 35 / 40
Berekening score int berekenTotaal(){ score=0; int totaalSP=0; for(int i=0;i
Informatica II: les 1
Jan Lemeire
Pag. 36 / 40
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. 37 / 40
Overerving (Inheritance): hiërarchie Vehicle
Generalizatie
Light Vehicle
Heavy Vehicle
Car
Truck Bus Racing Car
Specializatie
Jan Lemeire
Pag. 38 / 40
p. 3
Pijlers van object-georiënteerde programmeertalen Encapsulatie 2.4 Conclusies ArrayList versus array p. 45 3.2 Stapel-datastructuur p. 50 6.2 Java’s LinkedList p. 88 7.8.2 AVL-boom p. 110 Overerving (inheritance) 4.3 FunctieMetAfgeleide-interface p. 60 - 61 7.8.4 AVLTree subklasse p. 113 Polymorfisme en abstractie 4.2 Functie-interface p. 55 9.6 Mapimplementaties p. 116 Addendum bij hoofdstuk 5 (zie website) Abstract zoekalgoritme Vergelijking van zoekalgoritmes Informatica II: les 1
Jan Lemeire
Pag. 39 / 40