Inleiding programmeren

Vergelijkbare documenten
Studiewijzer. Bachelor Informatica. Inleiding Programmeren Studiejaar en semester: jaar 1, semester 1 (blok 1)

Syntax- (compile), runtime- en logische fouten Binaire operatoren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Modulewijzer tirprog02/infprg01, programmeren in Java 2

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Modelleren en Programmeren

Tentamen Imperatief Programmeren

Programmeren in Java les 3

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.


Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Modelleren en Programmeren

Project 2: LOTTO simulatie Programmeren I

Zelftest Inleiding Programmeren

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeren in Java 3

Modulewijzer Tirdat01

Functioneel programmeren

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

Vakgroep CW KAHO Sint-Lieven

Studiewijzer BACHELOR KUNSTMATIGE INTELLIGENTIE EXTRA KEUZENVAK VAK: C++ PROGRAMMEERMETHODEN

eerste voorbeelden in Java

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma

Hoofdstuk 0. Van Python tot Java.

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.

Programmeren en Wetenschappelijk Rekenen in Python. Wi1205AE I.A.M. Goddijn, Faculteit EWI 22 april 2014

Programmeren in Java 2

Programmeermethoden NA. Week 5: Functies (vervolg)

Java. Basissyllabus. Egon Pas

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Variabelen en statements in ActionScript

Ingebouwde klassen & methodes

Inleiding C++ Coding Conventions

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

9 Meer over datatypen

APPLICATIEBOUW 1E COLLEGE: INTRODUCTIE. Onderdeel van SmartProducts

Opdracht 4: Overzichtelijker en generieker

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Ontwerp van Informatiesystemen

Een korte samenvatting van enkele FORTRAN opdrachten

DOMjudge teamhandleiding

Inleiding programmeren

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

Programmeermethoden NA. Week 3: Controlestructuren

Kleine cursus PHP5. Auteur: Raymond Moesker

Overerving & Polymorfisme

IMP Uitwerking week 13

Python voor Natuur- en Sterrenkundigen Week 1

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Zelftest Programmeren in Java

Programmeren (1) Examen NAAM:

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

Datastructuren en algoritmen

SYNTRA-WEST. Initiatiecursus JAVA. Deel

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Practicumopgave 3: SAT-solver

Arduino Cursus, Deel 2 Programmeren. Simon Pauw, ZB45, Amsterdam

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

C++ programmeermethoden Bachelor Kunstmatige Intelligentie

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

17 Operaties op bits Bitoperatoren en bitexpressies

Programmeren in C# Samenvatting van C#

Algoritmisch Denken: Dodo s Bit Parity

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

Scala. Korte introductie. Sylvia Stuurman

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Oefententamen 2. Tijd: 2 uur. Maximaal aantal punten: 30. Naam: Studentnummer:

{ auteur, toelichting }

Probleem met dobbelspel. 2IP05: Programmeren Blok A. 5 spelers,2 dobbelstenen. wstomv/edu/2ip05/ Per ronde werpt elke speler 1

import java.io.*; één klasse public class Hallo { public static void main (String[] a) ...met één functie System.out.println("Hallo!

Programmeren Het gesloten boek examen 1.1

Modelleren en Programmeren

BEGINNER JAVA Inhoudsopgave

Python. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14

Dynamisch Programmeren. Het Rugzakprobleem

Java Les 3 Theorie Herhaal structuren

Lessen Java: Reeks pag. 1

Programmeren. a. 0, 0, 0 b. 0, 0, 27 c. 15, 12, 0 d. 15, 12, 27

inleiding theoretische informatica practicum 1 deadline woensdag 20 februari 2008 om uur

Transcriptie:

Inleiding programmeren Docent: José Lagerberg Assistenten: Robin de Vries, Jordy Perlee, Dimitri Belfor, Stephen Swatman, Erik Kooistra, Daan Kruis, Daniel Louwrink Cursusinformatie: https://staff.fnwi.uva.nl/j.m.lagerberg José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 1 / 45

Huishoudelijke mededelingen Cursus in een blok van 8 weken Elk week bevat: 1 2 maal 2 uur hoorcollege maandag dinsdag 2 3 maal 2 uur practicum José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 2 / 45

Doelstellingen van vak het kunnen omzetten van een probleem in een computeralgoritme het omzetten van algoritme naar Java code het construeren van goed gestructureerde code (o.a. DRY code) het toevoegen zinvol commentaar aan code het doorzien van andermans code het correct afhandelen van foute invoer het ontwikkelen van object georienteerde code (klassen, overerving en interfaces) het ontwikkelen van inzicht in het ontwerpen van programma s met goede (klasse)structuur José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 3 / 45

Toetsing 1 Tentamen Deeltoets 1 in week 4 op maandag 21 september 15.00-17.00 uur in C1.110 en H0.08 Deeltoets 2 in week 8 op dinsdag 20 oktober 9.00-11.00 uur in USC sporthal 1 Tentamencijfer is gemiddelde van deeltoets 1 en 2 ( 5.0) Herkansing van deeltoets 1 èn 2 dinsdag 5 januari 18.00-21.00 uur 2 Practicum 1 Er zijn 7 practicumopgaven die allemaal ingeleverd moeten worden. 2 Alle 7 opgaven inleveren voor deadline (is strict) 3 Beoordeling opgaven 1 t/m 5 door assistenten tijdens eerste practicum in de week erna (verplicht) te weinig moeite (wordt beschouwd als niet ingeleverd) 4 6.5 8.5 4 opgaven 6 en 7 beoordeeld met cijfer in schaal 1 t/m 10 5 Practicumcijfer is gewogen gemiddelde van alle 7 opgaven ( 5.0) 3 Eindcijfer is 1/2 tentamencijfer + 1/2 practicumcijfer 4 Je hebt Inleiding Programmeren gehaald indien tentamen èn practicum 5.0 en alle 7 practicumopgaven ingeleverd José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 4 / 45

Practicum Aanwezigheid op practicum is verplicht Als je door omstandigheden een keer niet kunt komen, van te voren doorgeven aan assistenten De deadline voor het inleveren is strict. Elke dag die te laat is, kost 1 punt aftrek Inleveren kan alleen via blackboard De assistent kijkt de opdracht na en geeft ter plekke feedback tijdens het practicum. De practicumopdrachten moeten individueel gemaakt worden. Bij identieke of vergelijkbare programma s wordt je naam doorgegegeven aan de examencommissie Het zonder bronvermelding copiëren van code van internet wordt gezien als fraude. José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 5 / 45

Practicum Practicum moet gedaan worden onder Linux Link naar Linux-introductie staat op blackboard Voor eerste practicum moet student zelf Linux-introductie doen José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 6 / 45

10084602 61.4 59.9 58.7 5806185 87.0 8909557 88.0 75.2 55.5 53.2 7696946 7972610 65.0 100.0 9732340 6530414 65.0 80.5 9582647 Total number of students: 41 Range <0, 50%] : 33 Range <50%, 65%] : 2 Range match <65%,100] : 6 Edge Label colors: index3.html : green index4.html : blue index5.html : orange index6.html : red José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 7 / 45

Inhoud cursus Syntax in Java 1 basiscomponenten Java: waarden, literals, variabelen en types 2 operatoren en constructie van expressies met variabelen en operatoren, statements met expressies code-blocks met statements 3 methoden Concepten in OOP (Object Oriented Programming) 1 velden en methoden 2 constructie klassen en interfaces José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 8 / 45

College Vandaag klassen, methoden en variabelen blocks, statements print statement variabele van type int command-line argumenten control flow: herhaling en selectie Random klasse stijl van Java code José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 9 / 45

Compiler en Java VM 1 Source code wordt gecompileerd naar byte code 2 byte code wordt gerund door de Virtual Machine José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 10 / 45

Eerste applicatie HelloWorldApp 1 Creëer source file HelloWorldApp.java door in te typen in teksteditor / P r i n t H e l l o World! I e d e r s e e r s t e programma / p u b l i c c l a s s HelloWorldApp { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { System. out. p r i n t l n ( H e l l o World! ) ; José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 11 / 45

Eerste applicatie HelloWorldApp 1 Creëer source file HelloWorldApp.java 2 Compileer source file door te typen: % j a v a c HelloWorldApp. j a v a Dit creëert een Java bytecode file met naam HelloWorldApp.class José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 12 / 45

Eerste applicatie HelloWorldApp 1 Creëer source file HelloWorldApp.java 2 Compileer source file naar.class file % j a v a c HelloWorldApp. j a v a 3 Run the program door in te typen % j a v a HelloWorldApp H e l l o World! José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 13 / 45

HelloWorldApp.java / P r i n t H e l l o World! I e d e r s e e r s t e programma / p u b l i c c l a s s HelloWorldApp { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { System. out. p r i n t l n ( H e l l o World! ) ; Bevat 3 componenten: 1 commentaar 2 definitie van HelloWorldApp klasse 3 definitie van main methode José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 14 / 45

Source code commentaar / t e x t / c o m p i l e r i g n o r e s e v e r y t h i n g from / to /. / documentation / i n d i c a t e s documentation comment ( doc comment, f o r s h o r t ). c o m p i l e r i g n o r e s t h i s k i n d o f comment j a v a d o c t o o l u s e s doc comments when p r e p a r i n g a u t o m a t i c a l l y g e n e r a t e d documentation // t e x t c o m p i l e r i g n o r e s e v e r y t h i n g from // to the end o f the l i n e De compiler negeert commentaar Commentaar is belangrijk Commentaar tussen /* en */ mag meerdere regels beslaan Commentaar achter // loopt tot het eind van de regel José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 15 / 45

Klasse definitie p u b l i c c l a s s HelloWorldApp { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { System. out. p r i n t l n ( H e l l o World! ) ; Basis van klasse definitie: c l a s s Naam {... José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 16 / 45

Public klasse Een file mag meer dan een klasse bevatten, maar er mag er maar één public zijn. Deze moet dezelfde naam hebben als de.java file die het programma bevat (in dit geval dus HelloWorldApp.java). José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 17 / 45

main methode p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { System. out. p r i n t l n ( H e l l o World! ) ;... Elke applicatie moet main methode bevatten: p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {... modifiers public en static kunnen ook andersom argument is args in Java José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 18 / 45

Argumenten van main methode main methode heeft één argument: array van elementen van type String p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {... Via args kun je informatie doorgeven aan applicatie. Bijvoorbeeld: % j a v a HelloWorldApp arg1 arg2 arg1 en arg2 zijn command-line argumenten: deze argumenten geven informatie door aan programma zonder te hoeven recompilen José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 19 / 45

Printen en String / P r i n t e n van t e k s t met ( S t r i n g ) / p u b l i c c l a s s P r i n t T e k s t { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { System. out. p r i n t l n ( 5 ) ; System. out. p r i n t l n (5 + 3 ) ; System. out. p r i n t l n ( som i s + 5 + 3 ) ; System. out. p r i n t l n ( som i s + (5 + 3 ) ) ; System. out. p r i n t l n ( som van + 3 + en 5 i s + (3 + 5 ) ) ; % j a v a P r i n t T e k s t 5 8 som i s 53 som i s 8 som van 3 en 5 i s 8 José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 20 / 45

Hoe verwissel ik twee variabelen? / I e d e r s tweede programma Hoe v e r w i s s e l i k de inhoud van a en b? / p u b l i c c l a s s V e r w i s s e l { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t a, b ; a = 1 0 ; b = 2 0 ; a = b ; b = a ; System. out. p r i n t l n ( a ) ; System. out. p r i n t l n ( b ) ; José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 21 / 45

Dit is niet wat we willen / I e d e r s tweede programma Hoe v e r w i s s e l i k de inhoud van a en b? / p u b l i c c l a s s V e r w i s s e l { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t a, b ; a = 1 0 ; b = 2 0 ; a = b ; b = a ; System. out. p r i n t l n ( a ) ; System. out. p r i n t l n ( b ) ; % j a v a V e r w i s s e l 20 20 José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 22 / 45

Gebruik hulpvariabele / I e d e r s tweede programma G e b r u i k h u l p v a r i a b e l e temp. / p u b l i c c l a s s V e r w i s s e l { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t a, b, temp ; a = 1 0 ; b = 2 0 ; temp = a ; // bewaar de oude inhoud van a a = b ; // v e r v a n g a door de inhoud van b b = temp ; // v e r v a n g b door de v o r i g e inhoud van a System. out. p r i n t l n ( Na v e r w i s s e l i n g ) ; System. out. p r i n t l n ( a ) ; System. out. p r i n t l n ( b ) ; José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 23 / 45

Command line argumenten, declaratie van String p u b l i c c l a s s TestArgumenten { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { S t r i n g a, b, c ; a = a r g s [ 0 ] ; // 1 s t e argument b = a r g s [ 1 ] ; // 2 de argument c = a r g s [ 2 ] ; // 3 de argument System. out. p r i n t l n ( a i s + a ) ; System. out. p r i n t l n ( b i s + b ) ; System. out. p r i n t l n ( c i s + c ) ; % j a v a TestArgumenten v a n a l l e s 91 3. 1 4 a i s v a n a l l e s b i s 91 c i s 3. 1 4 José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 24 / 45

Integer operaties p u b l i c c l a s s I n t R e k e n { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t a, b, prod, quot, rem ; a = I n t e g e r. p a r s e I n t ( a r g s [ 0 ] ) ; b = I n t e g e r. p a r s e I n t ( a r g s [ 1 ] ) ; prod = a b ; quot = a / b ; rem = a % b ; System. out. p r i n t l n ( a + + b + = + prod ) ; System. out. p r i n t l n ( a + / + b + = + quot ) ; System. out. p r i n t l n ( a + % + b + = + rem ) ; % j a v a I n t R e k e n 13 10 13 10 = 130 13 / 10 = 1 13 % 10 = 3 José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 25 / 45

Argumenten niet meegegeven p u b l i c c l a s s I n t R e k e n { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t a, b, prod, quot, rem ; a = I n t e g e r. p a r s e I n t ( a r g s [ 0 ] ) ; b = I n t e g e r. p a r s e I n t ( a r g s [ 1 ] ) ; prod = a b ; quot = a / b ; rem = a % b ; System. out. p r i n t l n ( a + + b + = + prod ) ; System. out. p r i n t l n ( a + / + b + = + quot ) ; System. out. p r i n t l n ( a + % + b + = + rem ) ; % j a v a I n t R e k e n E x c e p t i o n i n t h r e a d main j a v a. l a n g. ArrayIndexOutOfBoundsException : 0 at I n t R e k e n. main ( I n t R e k e n. j a v a : 3 ) José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 26 / 45

Herhaling met for-loop / Bereken som van g e t a l l e n 1 t /m 10 / p u b l i c c l a s s ForLoop { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t som = 0 ; f o r ( i n t i = 1 ; i <= 1 0 ; i ++) { som = som + i ; System. out. p r i n t l n ( som i s + som ) ; % j a v a ForLoop som i s 55 José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 27 / 45

Herhaling met for-loop vanaf 0 / v i j f k e e r / p u b l i c c l a s s ForLoop { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t k = 1 ; f o r ( i n t i = 0 ; i < 5 ; i ++) { System. out. p r i n t l n ( i + + k ) ; k = 2 k ; 0 1 1 2 2 4 3 8 4 16 José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 28 / 45

Selectie statements: if If statement: i f ( c o n d i t i o n ) blockt Als condition wordt geëvalueerd als true, wordt blockt uitgevoerd. Wanneer de evaluatie false oplevert gaat de executie verder met het volgende statement. i f ( r a d i u s >= 0) { o p p e r v l a k t e = r a d i u s r a d i u s Math. PI ; System. out. p r i n t l n ( opp. c i r k e l i s : + o p p e r v l a k t e ) ; José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 29 / 45

Selectie statements: if-else If-else statement: i f ( c o n d i t i o n ) blockt e l s e blockf Als condition wordt geëvalueerd als true, wordt blockt uitgevoerd. Wanneer de evaluatie false oplevert gaat de executie verder met blockf i f ( r a d i u s >= 0) { o p p e r v l a k t e = r a d i u s r a d i u s Math. PI ; System. out. p r i n t l n ( opp. c i r k e l i s : + o p p e r v l a k t e ) ; e l s e { System. out. p r i n t l n ( N e g a t i e v e i n p u t ) ; José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 30 / 45

Meervoudige selectie statements: if-else i f ( c o n d i t i o n 1 ) b l o c k 1 e l s e i f ( c o n d i t i o n 2 ) b l o c k 2 e l s e i f ( c o n d i t i o n 3 ) b l o c k 3... // T1 // F1 en T2 // F1 en F2 en T3 i f ( aantalmensen < 50) System. out. p r i n t l n ( Minder dan 50 ) ; e l s e i f ( aantalmensen < 100) System. out. p r i n t l n ( Minstens 50 en minder dan 100 ) ; e l s e i f ( aantalmensen < 200) System. out. p r i n t l n ( Minstens 100 en minder dan 200 ) ; e l s e System. out. p r i n t l n ( Minstens 200 ) ; José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 31 / 45

Nested If p u b l i c c l a s s N e s t e d I f { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t anumber = 7 ; i f ( anumber >= 0) i f ( anumber == 0) System. out. p r i n t l n ( f i r s t s t r i n g ) ; e l s e System. out. p r i n t l n ( second s t r i n g ) ; System. out. p r i n t l n ( t h i r d s t r i n g ) ; José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 32 / 45

Parsen naar int, testen van invoer p u b l i c c l a s s TestArgumenten { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t a ; a = I n t e g e r. p a r s e I n t ( a r g s [ 0 ] ) ; i f ( a < 1 a > 100) System. out. p r i n t l n ( a + n i e t t u s s e n 1 en 100 ) ; e l s e System. out. p r i n t l n ( a + wel t u s s e n 1 en 100 ) ; % j a v a TestArgumenten 20 20 wel t u s s e n 1 en 100 % j a v a TestArgumenten 200 200 n i e t t u s s e n 1 en 100 José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 33 / 45

Klasse Random import j a v a. u t i l. Random ; p u b l i c c l a s s TestEven { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t x ; Random random = new Random ( ) ; / G e n e r e e r g e t a l t u s s e n 1 t /m 100 / x = random. n e x t I n t (100) + 1 ; % j a v a TestEven 66 i s even i f ( x % 2 == 0) System. out. p r i n t l n ( x + i s even ) ; e l s e System. out. p r i n t l n ( x + i s oneven ) ; José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 34 / 45

Stijl van programma s 1 Gebruik goede namen (identifiers) 2 Gebruik goede layout 3 Schrijf altijd commentaar bij je programma. 4 Let op indentatie 5 Let op dat methode-namen overeenkomen met wat de methode doet José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 35 / 45

1. Gebruik goede namen (identifiers) Heleboel dingen krijgen naam: constanten, typen, variabelen, methoden, objecten, programma zelf Namen van variabelen: i n t i n t a a n t a l S t u d e n t e n l i n e a i r e C o e f f i c i e n t Namen van constanten alleen hoofdletters: s t a t i c f i n a l i n t MAX AANTAL STUDENTEN Namen van klassen: c l a s s S t u d e n t e n I n f o r m a t i c a José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 36 / 45

2. Gebruik goede layout staat altijd vertikaal onder bijbehorende methode, for, while of if i f ( e x p r e s s i e ) {... ;... ;... p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { // l e e s c o e f f i c i e n t e n van command l i n e double b = Double. p a r s e D o u b l e ( a r g s [ 0 ] ) ;... Tussen twee methodes minstens één lege regel Tussen declaratie variabelen en opdrachten lege regel José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 37 / 45

3 Commentaar nooit in plaats van goed programmeren Overbodig commentaar heeft geen zin / Som k r i j g t de waarde van de som van de g e t a l l e n. / som = 0 ; f o r ( i n t i = 0 ; i < a a n t a l ; i ++) { som = som + i ; Ter zake doende commentaar op de juiste plekken / s o r t e e r t met b u b b l e s o r t a l g o r i t m e / void s o r t e e r L i j s t ( ) {... José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 38 / 45

4. Let op indentatie i f ( denom == 0) denom = 1 ; // Make the numerator s t o r e the s i g n i f ( denom < 0) { numer = numer 1; denom = denom 1; José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 39 / 45

5. Naamgeving van methoden Methoden dienen om programma op te splitsen in kleinere stukken Naam van methode moet aangeven wat methode doet: p u b l i c c l a s s V i e r k a n t s V e r g e l i j k i n g T e s t { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { l e e s C o e f f i c i e n t e n ( ) ; l o s V i e r k a n t s V e r g e l i j k i n g O p ( ) ; p r i n t T w e e O p l o s s i n g e n ( ) ; José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 40 / 45

/ NAAM : K. K l a a s s e n CKNUM : 12345678 STUDIE : I n f o r m a t i c a V o o r b e e l d. j a v a : Dit programma b e r e k e n t de w o r t e l s van de v e r g e l i j k i n g ax ˆ2 + bx + c = 0 Deze o p l o s s i n g wordt berekend met de a b c f o r m u l e De c o e f f i c i e n t e n moeten i n de command l i n e opgegeven worden A l s de d i s c r i m i n a n t k l e i n e r i s dan 0, i s e r geen o p l o s s i n g I n v o e r : 3 c o e f f i c i e n t e n v i a command l i n e U i t v o e r : 2 o p l o s s i n g e n, 1 o p l o s s i n g o f geen o p l o s s i n g G e b r u i k : j a v a V o o r b e e l d 3 1 2 / p u b l i c c l a s s V o o r b e e l d { José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 41 / 45

Overzicht Aan de orde gekomen zijn de volgende begrippen: 1 block, klasse, methode, variabele, commentaar 2 print, println, printf, String 3 variabele van type int en alle operaties 4 invoer via command line 5 herhaling met for-loop 6 selectie met if-else 7 klasse Random 8 stijl Control flow beschrijving voorbeeld statements regel voor regel in volgorde zoals gegeven selectie enkele statements uitgevoerd if afhankelijk van variabelen if-else loop enkele statements herhaald for José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 42 / 45

Tutorials http://docs.oracle.com/javase/tutorial/getstarted/ cupojava/unix.html http://docs.oracle.com/javase/tutorial/java/ nutsandbolts/index.html José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 43 / 45

Practicum Lees de opdracht altijd eerst goed door Zet je naam en collegekaartnummer in je opdracht Schrijf altijd commentaar bij je programma Beschrijf voor elk programma wat programma doet Let op de indentatie Geef voor iedere methode beschrijving van invoer, uitvoer en functie Let op dat de methode-namen overeenkomen met wat de methode doet In Java moet de bestandsnaam exact hetzelfde zijn als de class-naam José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 44 / 45

Beoordeling practicum Stijl (vooral goede indent is belangrijk) Commentaar (alleen /*... */) Spelfouten mogen niet voorkomen in het commentaar. Correctheid van het programma Opbouw en modulariteit van de code Invoercontrole bij elke opgave Opmerking: in je code alleen tabs of alleen spaties bij inspringen José Lagerberg (UvA) Inleiding programmeren, College 1 31 augustus 2015 45 / 45