Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 3: Werken met numerieke gegevens
Inleiding Informatica Prof. Dr. O. De Troyer 2 Gehele getallen Geen voorgedefinieerde klasse maar ingebouwd data type int –Gehele getallen –Voorziet in een basis van rekenkundige operaties +, -, *, /,, % (rest bij gehele deling) Vb: * 4 * 3 –Afdrukken door print en println System.out.println( 14) ; System.out.println( 89 * 67) ;
Inleiding Informatica Prof. Dr. O. De Troyer 3 Data typen Zijn geen klassen Hebben geen methoden of instantie variabelen Er is geen constructor nodig
Inleiding Informatica Prof. Dr. O. De Troyer 4 Primitieve data typen Zijn ingebouwd in de programmeertaal
Inleiding Informatica Prof. Dr. O. De Troyer 5 Data typen & Variabelen Kunnen direct aan een variabele toegekend worden int i ; i = 3; 3 i
Inleiding Informatica Prof. Dr. O. De Troyer 6 Data typen Referentie variabele versus data type variabele lijn “youhouu” een object x 5 data type variabele dienen vóór het gebruik een waarde te krijgen int x ; x = 5; x ? x 5
Inleiding Informatica Prof. Dr. O. De Troyer 7 Data typen Kunnen geen ontvanger zijn (zijn geen objecten) Kunnen wel gebruikt worden als argument van een methode mijnAuto.rijden(90) Kunnen wel gebruikt worden als “return” waarde van een methode
Inleiding Informatica Prof. Dr. O. De Troyer 8 Literals 2 * ( x + y) - ( z / 73) literals hun naam is een representatie van hun waarde
Inleiding Informatica Prof. Dr. O. De Troyer 9 Constanten Variabelen waarvan de waarde niet wijzigt Aangeduid door sleutelwoord final final int gridGrootte = 10 ; Constanten te verkiezen boven literals plaats = 10 * afstand ; Beter: final int gridGrootte = 10 ; plaats = gridGrootte * afstand ;
Inleiding Informatica Prof. Dr. O. De Troyer 10 Voorrangsregels en haken * 2 8 * 2 of ? Eerst * en / dan + en - Haakjes gebruiken maakt alles duidelijker en voorkomt fouten (5 + 3) * (3 * 2)
Inleiding Informatica Prof. Dr. O. De Troyer 11 Afkortingen salaris = salaris * 1.20 ;// 20% opslag Verkorte notatie salaris *= 1.20 ; x = x + 5 ; Verkorte notatie x += 5 ; Idem -= /= %= Voorkomt fouten: i = j + 1; i.p.v. i = i + 1;
Inleiding Informatica Prof. Dr. O. De Troyer 12 Afkortingen (2) Meervoudige toekenning x = y = z = 0 ; Verkorte notatie voor x = 0 ; y = 0 ; z = 0 ;
Inleiding Informatica Prof. Dr. O. De Troyer 13 Afkortingen (3) x = x + 1 ; of x += 1 ; Of x ++ ; Idem x -- ; Fout: 6 ++ ; 6 is een literal; kan men niet wijzigen (x + y)++; x + y is een uitdrukking, geen veranderlijke; kan men niet wijzigen
Inleiding Informatica Prof. Dr. O. De Troyer 14 Afkortingen (4) Opgelet in expressies! ++ variabele telt 1 op bij de waarde en geeft resultaat terug variabele ++ geeft waarde terug en telt er dan 1 bij op -- variabele trekt 1af van de waarde en geeft resultaat terug variabele -- geeft waarde terug en trekt er dan 1 van af Voorbeeld telkens kost == kost -> 101 waarde kost = 101 kost ++ -> 100 waarde kost = kost -> 99 waarde kost = 99 kost -- -> 100 waarde kost = 99
Inleiding Informatica Prof. Dr. O. De Troyer 15 Opgelet string1 + string2 Is een afkorting voor string1.concat(string2)
Inleiding Informatica Prof. Dr. O. De Troyer 16 Andere data typen voor gehele getallen int voor gehele getallen tussen en (2 31 ) –Gebruikt 32 bits long voor gehele getallen tussen en 2 63 (meer dan ) –Gebruikt 64 bits short voor gehele getallen tussen en –Gebruikt 16 bits byte voor gehele getallen tussen -127 en 127 –Gebruikt 8 bits
Inleiding Informatica Prof. Dr. O. De Troyer 17 Data typen voor gehele getallen Meer bits nodig meer computer geheugen nodig Mengen van typen byte short int long long l1, l2; int i1 = 55, i2 ; short s ; byte b =10; l1 = 98 ; l2 = i1 ; l1 = 2 * i1 ; i2 = l2 ; s = b ; s = i2 ; l2 = s ; b = i2 ; b = l1 ;
Inleiding Informatica Prof. Dr. O. De Troyer 18 Converteren van typen Voorbeeld: long x ; int i ; x = 10 ; i = x ; ----> niet toegelaten! Maar waarde van x is klein genoeg voor int! Oplossing i = (int) x ; Dwingt een omzetting (van de waarde van x) naar int af. x blijft van het type long! Dwingt een omzetting (van de waarde van x) naar int af. x blijft van het type long!
Inleiding Informatica Prof. Dr. O. De Troyer 19 Reële getallen float voor reële getallen met 7 cijfers van precisie –Getallen tussen x en x double voor reële getallen met 15 cijfers van precisie –Getallen tussen x en x Niet alle getallen; enkel deze met resp. 7, 15 cijfers of precisie –Bv. niet maar
Inleiding Informatica Prof. Dr. O. De Troyer 20 Reële getallen - notatie Wetenschappelijke notatie – x wordt E38 Om onderscheid te maken tussen float en double en andere int literals –float : E38f f 38f –double : E38d d 38d
Inleiding Informatica Prof. Dr. O. De Troyer 21 Voorbeeld double oppervlakte, straal, pi = d; straal = 12.0 ; oppervlakte = pi * straal * straal ; int j = ; float x = f; System.out.println(“j =“ + j); System.out.println(“x =“ + x); j += 1; x += 1.0 ; System.out.println(“j =“ + j); System.out.println(“x =“ + x); j = ; x = E9; j = ; x = E9; Enkel 7 cijfers precisie!
Inleiding Informatica Prof. Dr. O. De Troyer 22 Mixen van float en double float double int float/double long float/double maar kan verlies aan precisie betekenen Hier ook conversie mogelijk: (int) (float)...
Inleiding Informatica Prof. Dr. O. De Troyer 23 De klasse Math Math is klasse met wiskundige functies als (klasse) methoden Voorbeeld: static int abs( int a) { …} // geeft de absolute waarde van a terug int i = -2 ; int j = Math.abs(i) ;
Inleiding Informatica Prof. Dr. O. De Troyer 24 De klasse Math (2) final double Ewaarde van e final double PIwaarde van pi double cos(double x)cosinus van hoek x in radialen double sin(double x)sinus van hoek x in radialen double tan(double x)tanginus van hoek x in radialen … abs(… x)absolute waarde van x … min(… x, … y)het kleinste van x en y … max(… x, … y)het grootste van x en y... round(... x)x float wordt afgerond naar integer; double naar long double log(double x)natuurlijk logaritme van x double random()random getal tussen 0.0 en 1.0 double sqrt(double x)positieve vierkantswortel van x double pow(double x, y) x y double exp(double x)e x e.a.
Inleiding Informatica Prof. Dr. O. De Troyer 25 “Enveloppe” klassen Met elk primitief data type correspondeert een klasse –Klasse Integer correspondeert met int –Klasse Byte, Short, Long, Float, Double correspondeert met byte, short, long, float, double Laten toe om een data type element om te zetten naar een object en omgekeerd int i = 10 ; Integer object = new Integer(i); i = object.intValue() ;
Inleiding Informatica Prof. Dr. O. De Troyer 26 “Enveloppe” klassen (2) Laten conversie van getal naar string toe –Klasse methode: toString int i = 10 ; String s = Integer.toString(i) ; //s wordt “10” float f = 12.34f ; String s = Float.toString(f) ; //s wordt “12.34” Twee nuttige constanten Long.MIN_VALUE Long.MAX_VALUE Idem voor de andere numerieke klasse