You are on page 1of 33

Informatica 1

H. Blockeel, B. Geebelen

Twee delen
Java
- Software: programmas die zorgen dat computers doen wat ze moeten doen - leren programmeren

SOCS
- Hardware: de machinerie achter de computer - inzicht in hoe een computer werkt

Hendrik Blockeel
2

Ben Geebelen

Hoorcolleges en oefenzittingen
JAVA: een zestal hoorcolleges + 15 oefenzittingen SOCS: vier hoorcolleges Hoorcolleges Java/Socs afgewisseld Wordt vervolgd in Informatica 2 (2de semester)

Oefenzittingen zijn ZEER belangrijk! Programmeren = vaardigheid, moet geoefend worden Onvoldoende oefening is veruit de grootste reden voor niet slagen op het examen Nog belangrijker in 2e semester! (practicum)

Examen
Mondeling met schriftelijke voorbereiding JAVA: 1 theorievraag, 1 oefening (klein Javaprogramma schrijven of ontwerpen) SOCS: enkel theorie

Cursusmateriaal (voor Inf. 1 en 2)


JAVA: Barnes & Klling: Programmeren in Java met BlueJ, vierde editie (bij VTK of boekhandel) Programmeeromgeving: BlueJ (www.bluej.org) bijgeleverd bij boek ook thuis / op kot installeren! Oefeningen: zie Toledo SOCS: cursustekst B. Geebelen (VTK/Toledo)
5
K.U.Leuven Departement Architectuur, Stedenbouw en Ruimtelijke Ordening Kasteelpark Arenberg 1, B-3001 Heverlee 4 uitgave, november 2008
e

Informatica, Deel I & II, 1 BIRA

STRUCTUUR EN ORGANISATIE VAN


COMPUTERSYSTEMEN
dr. ir.-arch. Benjamin Geebelen

Waarom?
Waarom moeten wij dit vak volgen? De belangrijkste reden: Elke ingenieur moet kunnen programmeren Een ingenieur(-architect) moet voortdurend problemen oplossen waarvoor geen kant- en klare oplossing beschikbaar is Kunnen programmeren biedt een ongevenaarde exibiliteit bij het oplossen van problemen Programmeervaardigheden nodig bij gebruik van tools in vakken in hogere jaren
6

Waarom?
Waarom Java? Momenteel zeer veel gebruikte taal Kennis van Java is handig, programmas kunnen voortbouwen op / aansluiten bij bestaande programmas Maar: de taal zelf is niet het belangrijkste Java wordt binnen 20 jaar waarschijnlijk niet meer gebruikt De aangeleerde concepten zijn universeel ook nodig als je later met andere talen werkt Deze begrijpen en kunnen toepassen

Doelstellingen (JAVA)
Aanleren van objectgericht programmeren (OOP) 1 specieke taal: Java Algemene concepten die Java overstijgen Aanleren van probleemoplossend denken Ontwikkelen van algoritmes Problemen structureren, deelproblemen identiceren en oplossen = Focus op algemene vaardigheden
8

Informatica: Supersnelle evolutie


Geen enkel vakgebied evolueert zo snel als de informatica (en afgeleide domeinen, bv. bio-informatica)
Wet van Moore (1965): Het aantal transistors dat op 1 chip kan geplaatst worden, verdubbelt elke 18 maanden. Gordon Moore
9

Supersnelle evolutie

ENIAC 1 (1946)
5000 operations per second

Smartphone (2011)
30 megaops (30.000.000 ops. per second)

vele duizenden keren krachtiger vele duizenden keren goedkoper


10

Informatica is letterlijk overal


In autos, wasmachines, wenskaarten, domotica, kofeautomaten, ... ambient intelligence: intelligentie ingebouwd in dagelijkse gebruiksvoorwerpen nabije toekomst: koelkast die zegt wat bijgekocht moet worden, wasmachines die zeggen dat de was verkeerd gesorteerd is, ... Kunnen programmeren is voor zeer veel beroepen onmisbaar geworden
11

Computer graphics
(Animatie)lms... Fotorealistische weergave van nog niet bestaande constructies op basis van modellen

12

Robocup
Voetballende robots (jaarlijkse competitie) Doel: By mid-21st century, a team of fully autonomous humanoid robot soccer players shall win the soccer game, complying with the ofcial rule of the FIFA, against the winner of the most recent World Cup.

13

Robot-autos

DARPA Grand Challenge


14

Robot-helicopters
http:/ /www.youtube.com/watch?v=MQUkgk3HyE&feature=player_detailpage

15

Eerste stappen in Java

16

Programmeren...
Programmeren laat toe om relatief ingewikkelde berekeningen uit te voeren vragen beantwoorden die anders wel erg veel manueel werk zouden vergen, ook met een rekenmachine of spreadsheet ter beschikking

17

Voorbeeld
342 x 123 = ? gemakkelijk te berekenen Prijs van een ticket: 3 euro; vanaf 10 : 2,5 euro per bijkomend ticket; vanaf 50: 2 euro per bijkomend stuk. Druk een tabel af met prijzen voor 1 tot 100 tickets kan met excel of andere spreadsheet-software Warmteverlies (isolatie) van een woning Afhankelijk van gebruikte materialen, oppervlaktes, ... Persoon beschrijft woning, programma berekent automatisch warmteverlies Van beschrijving (plan, materialen, ...) naar getal: ingewikkelde berekening

18

De computer als geavanceerde rekenmachine


Programmeren = instructies opstellen die de computer later (en telkens opnieuw, wanneer gevraagd) kan uitvoeren We beginnen vandaag met iets eenvoudiger: instructies die de computer nu meteen zal uitvoeren De BlueJ tool maakt dit mogelijk via zijn Code Pad
19

Uitdrukkingen

20

Eenvoudige berekeningen uitvoeren


Zie BlueJ interface Menu: View -> Show Code Pad We kunnen uitdrukkingen opschrijven in Java een uitdrukking stelt een berekening voor een uitdrukking heeft een resultaat (nl. de uitkomst van die berekening) Bv.: 3+2, 5*7
21

Voorbeeld
5 7*5 4+2 3.2 3 / 3.0 3 /

+ 5*5 2 / 2.0 2.0

22

We kunnen niet alleen met getallen rekenen Bv. 3<7 is ook een uitdrukking, net als 3+2 Wat is het resultaat?

23

Voorspel het antwoord van BlueJ


1 < 3 Math.PI < 4 5 >= 2 2 == 2 25*25 > 24*26 Math.PI == 3.14 2 - 2 == 0 2.3 - 2.3 == 0 Math.PI/2 + Math.PI/2 == Math.PI 1 == 1.0
24

Types
0, 1, 2, 3, ... -1, -2, -3, ... zijn integers (gehele getallen), in Java: int true, false zijn booleaanse waarden, in Java: boolean 3.2, 36.2751 zijn rele getallen; in Java: oat of double niet echt rele getallen: hebben steeds een beperkte precisie (beperkt aantal cijfers); double = dubbele precisie (bij voorkeur te gebruiken) Probeer bv.: (oat) 1.0/3.0; (double) 1.0/3.0 Wetenschappelijke notatie: 4.2e3 = 4.2*103 =4200 5.42e-5 = 0.0000542

25

Voorspel het antwoord van BlueJ


Math.PI Math.sin(0) Math.cos(Math.PI) Math.cos(Math.PI/2.0)

26

Voorspel het antwoord van BlueJ


Math.cos(Math.PI/2.0) == 0 Math.sin(Math.PI/2.0) == 1 4096*4096*4096

27

Nog een ander type: String


Let op de hoofdletter! (Eigenlijk geen type maar een klasse - zie later) Een rij tekens is een String Genoteerd tussen dubbele aanhalingstekens (!) abc, Het regent binnen. Merk op: 12 12 ! het ene is een getal, het andere een string Strings kunnen samengevoegd worden met + abc + def resulteert in abcdef 12 + 12 = ?

28

Operatoren
wiskundige: +, -, *, /, % opmerking: / heeft twee betekenissen! gehele vs. rele deling betekent gehele deling wanneer toegepast op 2 waarden van type int, rele deling in alle andere gevallen %: modulo = rest na deling door... Bv. test of x even is: x % 2 == 0 logische: && (en), || (of), ! (niet) vergelijkende: < , > , <= , >= , == , != Strings: + (dus + heeft ook twee betekenissen)

29

Voorspel het antwoord van BlueJ


a + b 12 + 4 Math.PI > 3 && Math.PI < 4 ! (3 < 2) 12 + 4 ! false ! false 3 < 4 || 4 < 3 Math.PI = + Math.PI
30

Variabelen

31

Variabelen
Een variabele heeft een naam en type Van een variabele is niet meteen duidelijk welke waarde ze voorstelt; kan voor eender welke waarde van dat type staan In Java moeten we een variabele introduceren alvorens we ze mogen gebruiken Algemene vorm: <type> <variabele> ; Bv. : int x ; (x is een variabele van type int) Aan een variabele kan een waarde toegekend worden Tot nader order staat de variabele dan voor die waarde Algemene vorm: <variabele> = <uitdrukking> ; Bv. x = 4 ; (x krijgt de waarde 4)

Bv. x = 7+2 ; (x krijgt de waarde 9)

32

Voorspel het antwoord van BlueJ


int x; boolean y; String z; x = 3; x < 2 x = 4; y = (x>2); y y && !(x<3) z = hello; z + 12 z + false
33

You might also like