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 (jan.lemeire@vub.ac.be) 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
2 e 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 Jan Lemeire Pag. 13 / 37
1 e semester Basis programmeervaardigheden While for Lijsten/arrays Functies Recursie Object-georiënteerd programmeren Regels Organisatie van de code Gebruik klasses Pijlers Datastructuren Arrays ArrayLists Stack, Queue, Linked lists trees - maps 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, THEORIE III: technologie, historiek en economische aspecten
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 Jan Lemeire Pag. 15 / 37
Jan Lemeire Pag. 16 / 37
Wat berekent GHI? 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 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 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 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 Jan Lemeire Pag. 21 / 37
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 Jan Lemeire Pag. 22 / 37
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 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 Jan Lemeire Pag. 25 / 37
Objecten
Persoon-object Jan Lemeire Pag. 27 / 37
p. 23 Jan Lemeire Pag. 28 / 37
Niet in cursus Persoonobjecten 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 Jan Lemeire Pag. 30 / 37
p. 26 Uitbreiding: vrienden Jan Lemeire Pag. 31 / 37
p. 28 Overerving Jan Lemeire Pag. 32 / 37
p. 25 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) Jan Lemeire Pag. 34 / 37
Overerving (Inheritance): hiërarchie Generalizatie Vehicle Light Vehicle Heavy Vehicle Car Truck Bus Specializatie Racing Car Jan Lemeire Pag. 35 / 37
p. 26 Jan Lemeire Pag. 36 / 37
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 p. 4 Jan Lemeire Pag. 37 / 37
Feedbackpermanentie Theorie & oefeningen op afspraak met Ann Dooms https://kwaliteitszorg.vub.ac.be/evaluatie Jan Lemeire Pag. 38 / 37