Informatica Deel II: les 1 Java versus Python
Jan Lemeire Informatica deel II februari – mei 2014
Parallel Systems: Introduction
Arabidopsis (zandraket)
Arabidopsis (zandraket)
MMIQQA Multimodal Microscopic Imaging: Quality, Quantification and Acceleration
The third pillar of the scientific world: computational science
25/02/2014
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: deeltijds 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, dsp, 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 Code http://parallel.vub.ac.be: alle info Informatica II: les 1
Jan Lemeire
Pag. 13 / 37
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
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. 15 / 37
Informatica II: les 1
Jan Lemeire
Pag. 16 / 37
Wat berekent GHI?”
Informatica II: les 1
Jan Lemeire
Pag. 17 / 37
p. 5
GGD in python def berekenGrootstGemeneDeler(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 = berekenGrootstGemeneDeler(a, b) print "Grootste gemene deler van", a, "en", b, "is", ggd Informatica II: les 1
Jan Lemeire
Pag. 18 / 37
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. 19 / 37
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. 20 / 37
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. 21 / 37
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. 22 / 37
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. 23 / 37
Waarom een burgerlijk ingenieur aanwerven?
• • • • •
Doorzettingsvermogen Zelfdiscipline Werkmethode Analytisch denken Probleemoplossend vermogen
Deze cursus: kennis & vaardigheden Nieuwe ‘taal’ onder de knie krijgen Nauwkeurigheid Debuggen – problemen oplossen Doorzettingsvermogen
Informatica II: les 1
Jan Lemeire
Pag. 25 / 37
Objecten
Persoon-object
Informatica II: les 1
Jan Lemeire
Pag. 27 / 37
p. 23
Informatica II: les 1
Jan Lemeire
Pag. 28 / 37
Niet in cursus
Persoonobjecten
Informatica II: les 1
Jan Lemeire
Pag. 29 / 37
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 / 37
p. 26
Uitbreiding: vrienden
Informatica II: les 1
Jan Lemeire
Pag. 31 / 37
p. 28
Overerving
Informatica II: les 1
Jan Lemeire
Pag. 32 / 37
p. 25
Informatica II: les 1
Jan Lemeire
Pag. 33 / 37
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. 34 / 37
Overerving (Inheritance): hiërarchie Vehicle
Generalizatie
Light Vehicle
Heavy Vehicle
Car Truck
Bus Racing Car
Specializatie
Jan Lemeire
Pag. 35 / 37
p. 26
Informatica II: les 1
Jan Lemeire
Pag. 36 / 37
p. 4
Pijlers van object-georiënteerde programmeertalen I. Encapsulatie
2.4 Conclusies ArrayList versus array p. 34 3.2 Stapel-datastructuur p. 39 5.2 Java’s LinkedList p. 52 6.7.2 AVL-boom p. 70
II. Overerving (inheritance) 4.3 FunctieMetAfgeleide-interface p. 47 - 48 6.7.4 AVLTree subklasse p. 72
III. Polymorfisme en abstractie
4.2 Functie-interface p. 45 8.6 Mapimplementaties p. 97 9.2.2 Abstract zoekalgoritme p.100 9.2.7 Vergelijking van zoekalgoritmes p.110
Informatica II: les 1
Jan Lemeire
Pag. 37 / 37
Feedbackpermanentie Theorie & oefeningen op afspraak met Ann Dooms
https://kwaliteitszorg.vub.ac.be/evaluatie
Informatica II: les 1
Jan Lemeire
Pag. 38 / 37