Modelleren en Programmeren Jeroen Bransen 13 november 2015 Expressies Functies Ingebouwde functies Variabelenbereik Inleveropgave 1
Terugblik Programma is een lijst van opdrachten
Terugblik Programma is een lijst van opdrachten Bij begin van programma worden de opdrachten uit main uitgevoerd
Terugblik Programma is een lijst van opdrachten Bij begin van programma worden de opdrachten uit main uitgevoerd Opdrachten wijzigen geheugen:
Terugblik Programma is een lijst van opdrachten Bij begin van programma worden de opdrachten uit main uitgevoerd Opdrachten wijzigen geheugen: int var1; declaratie (declaration) van variable met naam var1 van het type int (geheel getal)
Terugblik Programma is een lijst van opdrachten Bij begin van programma worden de opdrachten uit main uitgevoerd Opdrachten wijzigen geheugen: int var1; declaratie (declaration) van variable met naam var1 van het type int (geheel getal) var2 = var1 + 20; toekenning (assignment) van de waarde van var1 plus 20 aan de variabele var2
Terugblik Programma is een lijst van opdrachten Bij begin van programma worden de opdrachten uit main uitgevoerd Opdrachten wijzigen geheugen: int var1; declaratie (declaration) van variable met naam var1 van het type int (geheel getal) var2 = var1 + 20; toekenning (assignment) van de waarde van var1 plus 20 aan de variabele var2 Met System.out.println kunnen we iets op het scherm printen
Expressies
Expressies Stukjes programma met een waarde
Expressies Stukjes programma met een waarde Worden gebruikt in:
Expressies Stukjes programma met een waarde Worden gebruikt in: Rechterkant van toekenning: var2 = var1 + 20;
Expressies Stukjes programma met een waarde Worden gebruikt in: Rechterkant van toekenning: var2 = var1 + 20; Parameter van een methode: System.out.println(var1);
Expressies Expressies worden opgebouwd uit:
Expressies Expressies worden opgebouwd uit: Constantes: 10, 1024,...
Expressies Expressies worden opgebouwd uit: Constantes: 10, 1024,... Variabelen: var1, x,...
Expressies Expressies worden opgebouwd uit: Constantes: 10, 1024,... Variabelen: var1, x,... Operatoren: a + b, x - 5,...
Expressies Expressies worden opgebouwd uit: Constantes: 10, 1024,... Variabelen: var1, x,... Operatoren: a + b, x - 5,... Haakjes: 3 * (a + b),...
Expressies Expressies worden opgebouwd uit: Constantes: 10, 1024,... Variabelen: var1, x,... Operatoren: a + b, x - 5,... Haakjes: 3 * (a + b),...... en functieaanroepen, die we later zien.
Operatoren + voor optellen
Operatoren + voor optellen - voor aftrekken
Operatoren + voor optellen - voor aftrekken * voor vermenigvuldigen
Operatoren + voor optellen - voor aftrekken * voor vermenigvuldigen / voor delen
Operatoren + voor optellen - voor aftrekken * voor vermenigvuldigen / voor delen % voor rest na delen (modulo)
Operatoren + voor optellen - voor aftrekken * voor vermenigvuldigen / voor delen % voor rest na delen (modulo) Dus 14 / 3 geeft 4 en 14 % 3 geeft 2, want 14 = 3 * 4 + 2
Prioriteit van operatoren vermenigvuldigen en delen gaan voor optellen en aftrekken: 1 + 2 * 3 geeft 7
Prioriteit van operatoren vermenigvuldigen en delen gaan voor optellen en aftrekken: 1 + 2 * 3 geeft 7 bij gelijke prioriteit van links naar rechts: 10-5 - 2 geeft 3
Prioriteit van operatoren vermenigvuldigen en delen gaan voor optellen en aftrekken: 1 + 2 * 3 geeft 7 bij gelijke prioriteit van links naar rechts: 10-5 - 2 geeft 3 wil je het anders, gebruik dan haakjes: (1 + 2) * 3 geeft 9
Types van expressies 10 10.0 2 * 3 "Hallo" "De waarde is " + var1
Types van expressies 10 heeft als type int 10.0 2 * 3 "Hallo" "De waarde is " + var1
Types van expressies 10 heeft als type int 10.0 heeft als type double 2 * 3 "Hallo" "De waarde is " + var1
Types van expressies 10 heeft als type int 10.0 heeft als type double 2 * 3 heeft als type int "Hallo" "De waarde is " + var1
Types van expressies 10 heeft als type int 10.0 heeft als type double 2 * 3 heeft als type int "Hallo" heeft als type String "De waarde is " + var1
Types van expressies 10 heeft als type int 10.0 heeft als type double 2 * 3 heeft als type int "Hallo" heeft als type String "De waarde is " + var1 heeft als type String
Meer types int is een geheel getal (bv 10)
Meer types int is een geheel getal (bv 10) double is een kommagetal (bv 10.0)
Meer types int is een geheel getal (bv 10) double is een kommagetal (bv 10.0) char is een enkele letter (bv x )
Meer types int is een geheel getal (bv 10) double is een kommagetal (bv 10.0) char is een enkele letter (bv x ) String is een rijtje letters (bv "hallo")
Meer types int is een geheel getal (bv 10) double is een kommagetal (bv 10.0) char is een enkele letter (bv x ) String is een rijtje letters (bv "hallo") boolean heeft twee waardes: true (waar) en false (onwaar)
Maximale waardes int is een geheel getal tussen 2 31 en 2 31 1
Maximale waardes int is een geheel getal tussen 2 31 en 2 31 1 long is een waarde tussen 2 63 en 2 63 1
Maximale waardes int is een geheel getal tussen 2 31 en 2 31 1 long is een waarde tussen 2 63 en 2 63 1 Meer hierover volgende week, maar long nodig voor inleveropgave 1
Vergelijkingsoperatoren We kunnen int waardes ook vergelijken: < voor kleiner dan
Vergelijkingsoperatoren We kunnen int waardes ook vergelijken: < voor kleiner dan > voor groter dan
Vergelijkingsoperatoren We kunnen int waardes ook vergelijken: < voor kleiner dan > voor groter dan <= voor kleiner dan of gelijk aan
Vergelijkingsoperatoren We kunnen int waardes ook vergelijken: < voor kleiner dan > voor groter dan <= voor kleiner dan of gelijk aan >= voor groter dan of gelijk aan
Vergelijkingsoperatoren We kunnen int waardes ook vergelijken: < voor kleiner dan > voor groter dan <= voor kleiner dan of gelijk aan >= voor groter dan of gelijk aan == voor is gelijk aan
Vergelijkingsoperatoren We kunnen int waardes ook vergelijken: < voor kleiner dan > voor groter dan <= voor kleiner dan of gelijk aan >= voor groter dan of gelijk aan == voor is gelijk aan Het resultaat is een boolean waarde, dus bijvoorbeeld 3 < 5 is true
Programma met boolean public class FirstBoolean { public static void main(string[] args) { int x; int y; x = 20; y = x + 1; // y wordt 21 boolean check; check = x < y; // 20 < 21 is waar } } System.out.println(check); // dit print true
Functies
Functies Tot nu toe hebben we alle code in de main functie gezet
Functies Tot nu toe hebben we alle code in de main functie gezet Code opdelen in functies (voor overzicht, tegen codeduplicatie)
Functies Tot nu toe hebben we alle code in de main functie gezet Code opdelen in functies (voor overzicht, tegen codeduplicatie) Functie bestaat uit:
Functies Tot nu toe hebben we alle code in de main functie gezet Code opdelen in functies (voor overzicht, tegen codeduplicatie) Functie bestaat uit: public static void
Functies Tot nu toe hebben we alle code in de main functie gezet Code opdelen in functies (voor overzicht, tegen codeduplicatie) Functie bestaat uit: public static void De naam van de functie (mag je zelf kiezen)
Functies Tot nu toe hebben we alle code in de main functie gezet Code opdelen in functies (voor overzicht, tegen codeduplicatie) Functie bestaat uit: public static void De naam van de functie (mag je zelf kiezen) Een lijst van parameters met hun type, die staan tussen haakjes
Functies Tot nu toe hebben we alle code in de main functie gezet Code opdelen in functies (voor overzicht, tegen codeduplicatie) Functie bestaat uit: public static void De naam van de functie (mag je zelf kiezen) Een lijst van parameters met hun type, die staan tussen haakjes Een lijst van opdrachten, dus de implementatie van de functie
Functies Tot nu toe hebben we alle code in de main functie gezet Code opdelen in functies (voor overzicht, tegen codeduplicatie) Functie bestaat uit: public static void De naam van de functie (mag je zelf kiezen) Een lijst van parameters met hun type, die staan tussen haakjes Een lijst van opdrachten, dus de implementatie van de functie Bij de aanroep van een functie moet voor elke parameter een waarde worden gegeven
Functies Tot nu toe hebben we alle code in de main functie gezet Code opdelen in functies (voor overzicht, tegen codeduplicatie) Functie bestaat uit: public static void De naam van de functie (mag je zelf kiezen) Een lijst van parameters met hun type, die staan tussen haakjes Een lijst van opdrachten, dus de implementatie van de functie Bij de aanroep van een functie moet voor elke parameter een waarde worden gegeven Niet helemaal waar, we negeren voor nu het resultaat van een functie.
Voorbeeld met functies public class FirstFunctions { public static void printhallo() { System.out.println("Hallo!"); } } public static void main(string[] args) { System.out.println("Hallo vanuit main"); printhallo(); System.out.println("Dit komt als laatste"); }
Functieaanroep Bij een functieaanroep: Onthouden we waar we waren.
Functieaanroep Bij een functieaanroep: Onthouden we waar we waren. Voeren we de statements uit die bij die functie horen
Functieaanroep Bij een functieaanroep: Onthouden we waar we waren. Voeren we de statements uit die bij die functie horen Als we daarmee klaar zijn, ga verder bij waar we waren.
Functieaanroep Bij een functieaanroep: Onthouden we waar we waren. Voeren we de statements uit die bij die functie horen Als we daarmee klaar zijn, ga verder bij waar we waren. Als de functie die we aanroepen ook weer andere functies aanroept, kan waar we waren kan best ingewikkeld worden!
Functie met parameters public class FunctionsWithArguments { public static void main(string[] args) { System.out.println("We printen wat kwadraten"); printkwadraat(2); printkwadraat(3); printkwadraat(4); } } public static void printkwadraat(int x) { int xkwadraat; xkwadraat = x * x; System.out.println(x + "^2 is " + xkwadraat); }
Ingebouwde functies
Ingebouwde functies We hadden al functieaanroepen gezien: System.out.println("Hallo"); is ook een functieaanroep!
Ingebouwde functies We hadden al functieaanroepen gezien: System.out.println("Hallo"); is ook een functieaanroep! Ergens in de Java klasse System.out is er een definitie: public static void println(string text) {... } die een tekst als argument neemt en die naar de Console print.
Java API Op http://docs.oracle.com/javase/7/docs/api/ zijn alle ingebouwde functies te vinden.
Java API Op http://docs.oracle.com/javase/7/docs/api/ zijn alle ingebouwde functies te vinden. Nuttig voor de eerste opgave zijn: De klasse System (basis functionaliteit)
Java API Op http://docs.oracle.com/javase/7/docs/api/ zijn alle ingebouwde functies te vinden. Nuttig voor de eerste opgave zijn: De klasse System (basis functionaliteit) De klasse Math (wiskundige operaties)
Gebruik van Math public class Hoeken { public static void main(string[] args) { double overstaande; double aanliggende; overstaande = 3.0; aanliggende = 4.0; } } // tan(hoek) = overstaande / aanliggende double hoek; hoek = Math.atan(overstaande / aanliggende); // Print hoek System.out.println(hoek + " radialen"); System.out.println(Math.toDegrees(hoek) + " graden");
Resultaat van een functie Functies kunnen ook een resultaat hebben, dus een functieaanroep is ook een expressie, bijvoorbeeld in: double hoek; hoek = Math.atan(overstaande / aanliggende);
Casting (omzetting) Stel, je hebt: double x; x =...; int y; // dit kan niet, want round geeft long y = Math.round(x);
Casting (omzetting) Stel, je hebt: double x; x =...; int y; // dit kan niet, want round geeft long y = Math.round(x); Met het type tussen haakjes kun je dit omzetten: double x; x =...; int y; // dit kan wel, zolang waarde van x niet te groot is y = (int)math.round(x);
Variabelenbereik
Variabelenbereik Een variabele kan alleen gebruikt worden binnen de functie waar je hem declareert.
Variabelenbereik Een variabele kan alleen gebruikt worden binnen de functie waar je hem declareert. En alleen in opdrachten die na de declaratie komen, dus werkt niet. x = x + 1; int x;
Variabelenbereik Een variabele kan alleen gebruikt worden binnen de functie waar je hem declareert. En alleen in opdrachten die na de declaratie komen, dus werkt niet. x = x + 1; int x; Een variabele kan ook globaal gedeclareerd worden, deze is in elk functie te gebruiken (met public static).
Variabelenbereik voorbeeld public class VariabelenBereik { public static int x; } public static void main(string[] args) { int y; x = 10; y = 20; printx(); } public static void printx() { System.out.println(x); // dit print 10 System.out.println(y); // dit werkt niet }
Inleveropgave 1
Inleveropgave 1 Introductie van inleveropgave 1 door Stella Donker