Java de basis

advertisement
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<vakken.length;i++){
if (vakken[i] != null){
score += punten[i] * vakken[i].SP;
totaalSP += vakken[i].SP;
}
}
score /= totaalSP;
return score;
}
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
Download