/ CMI Programmeren in Java 1 TINPRO01-1 Aantal studieunten: 2 ects Modulebeheerder: Wessel Oele Goedgekeurd door: (namens toetscommissie) Datum: TINPRO01-1 4 september 2015
Inhoudsopgave 1 Algemene omschrijving 3 1.1 Inleiding....................................... 3 1.1.1 Soorten programmeertalen......................... 3 1.1.2 Imperatieve talen.............................. 3 1.1.3 Declaratieve talen.............................. 3 1.1.4 Objectgeoriënteerde talen.......................... 4 1.2 Relatie met andere onderwijseenheden....................... 4 1.3 Leermiddelen..................................... 4 2 Programma 5 3 Toetsing en beoordeling 5 3.1 Procedure...................................... 5 4 Bijlage 1: Toetsmatrijs 7 5 Bijlage 2: Voorbeeldtoets 8 6 Bijlage 3: Studielast (normering in ecs) 11 TINPRO01-1 4 september 2015 1
Modulebeschrijving Modulenaam: Programmeren in Java 1 Modulecode: TINPRO01-1 Aantal studiepunten en Deze module levert 2 studiepunten op, hetgeen overeenkomt met 56 uur. studiebelastingsuren: 8 120 minuten hoorcollege 8 120 minuten practicum 12 120 minuten zelfstudie Vereiste voorkennis: Werkvorm: Toetsing: Leermiddelen: Draagt bij aan competentie geen hoorcollege en practicum schriftelijk tentamen, gesloten boek zonder hulpmiddelen Schaum s outlines Programming with Java second edition, auteur: John R. Hubbard, uitgever: McGraw hill, ISBN: 0-07-142040-1 analyse advies ontwerp realisatie beheer gebruikersinteractie bedrijfsprocessen software 1 1 1 1 infrastructuur hardware interfacing Leerdoelen: Inhoud: Het kunnen adviseren over en analyseren, ontwerpen en realiseren van een computerprogramma op niveau 1. Het kunnen ontwerpen, schrijven, compileren en uitvoeren van een correct werkend Java programma. Het in correct Nederlands en met gebruikmaking van het juiste jargon kunnen communiceren over de programmeertaal. Kort geschiedkundig overzicht van programmeertalen imperatief, functioneel en objectgeoriënteerd paradigma werking van een compiler en verschil met een interpreter verschil tussen broncode, bytecode en binaries enkele editors De virtuele machine elementaire taalconstructies Opmerkingen: Modulebeheerder: Wessel Oele Datum: 4 september 2015 TINPRO01-1 4 september 2015 2
1 Algemene omschrijving 1.1 Inleiding Java is de naam van een programmeertaal die in 1993 is ontwikkeld door Sun Microsystems. De taal wordt gezien als de geschiedkundige opvolger van het in 1986 ontwikkelde C++ dat op zijn beurt weer een opvolger was van het in 1980 ontwikkelde C. Java wordt in een groot aantal verschillende toepassingen gebruikt. Hierbij valt te denken aan: grote applicaties, werkend op verschillende platformen zoals Unix, Windows, e.a. applicaties die werken over het internet. gebruikersinterfaces (zowel hardware- als softwarematig, bijvoorbeeld een koffieautomaat) handheld apparaten: mobiele telefoons, MP3-spelers,etc. het welbekende programma Azureus is geschreven in Java. Het bovenstaande rijtje is niet bepaald volledig. Het aantal applicaties, waarin Java wordt gebruikt groeit met de dag... 1.1.1 Soorten programmeertalen Op deze planeet wordt met een groot aantal verschillende soorten programmeertalen gewerkt. Hoewel er meerdere manieren zijn om een onderverdeling te maken, volgt hier een veelgebruikte: imperatieve talen: C, Pascal, Fortran, C++, Java Declaratieve talen: Prolog, Gofer, Haskell objectgeoriënteerde talen: Smalltalk, Object Pascal, C++, Java 1.1.2 Imperatieve talen Het woord imperatief komt uit het Latijnse imperare hetgeen bevelen betekent. Bij een imperatieve programmeertaal schrijft de programmeur een programma, waarin precies wordt aangegeven wat de onderliggende hardware(doorgaans een computer) moet doen. Dergelijke programma s kan men dus opvatten als een bestand met daarin een lange lijst instructies die de computer zonder pardon dient uit te voeren. 1.1.3 Declaratieve talen Declaratieve talen worden bedacht vanuit een bepaalde wetenschappelijke denkwijze, een zogeheten paradigma (zoek dat woord eens op op wikipedia of in het woordenboek!). Een taal als Prolog is bijvoorbeeld volledig gebaseerd op logica. Bij deze taal vertellen we de computer niet wat deze van moment tot moment moet doen, maar zeggen we alleen tegen de computer wat waar is. Een prolog programma wordt dan ook niet uitgevoerd, maar door een speciaal daarvoor geschreven programma geïnterpreteerd. Wanneer de computer een aantal waarheden kent, kunnen we de computer vragen gaan stellen. De computer gaat vervolgens de gegeven waarheden combineren en geeft ons het antwoord true of false. Andere talen (bijv. Lisp, Haskell, e.v.a.) zijn gebaseerd op andere paradigma s en worden in andere wetenschappelijke disciplines gebruikt. TINPRO01-1 4 september 2015 3
1.1.4 Objectgeoriënteerde talen Bij objectgeoriënteerde talen wordt een groot en ingewikkeld computerprogramma opgedeeld in kleinere stukken, de zogeheten objecten. Ieder object functioneert zoveel mogelijk op zichzelf en neemt een klein stukje van de functionaliteit voor zijn rekening. Door alle objecten te laten samenwerken ontstaat een groot programma dat (hopelijk) doet wat de programmeur ervan verwacht. Het grote voordeel van objectgeoriënteerd programmeren ligt hem in het feit dat de individuele objecten, waaruit een programma bestaat, kunnen worden hergebruikt in andere programma s. Een goed voorbeeld hiervan vinden we in het Microsoft Office pakket. Hoewel dit pakket bestaat uit een aantal verschillende applicaties kom je toch iedere keer weer dezelfde Ok en annuleren knopjes tegen. Deze knoppen zijn op hun beurt weer zichtbaar in Windows of dialoogvensters die (dat moet je toch wel zijn opgevallen) veel op elkaar lijken. Welnu: iedere knop, schuifbalk, venster, tabblad, combobox, invoervenster, etc. etc. is een object. De programmeercode die nodig is om, bijvoorbeeld, een knop op het scherm te tekenen is één maal geschreven en werd daarna eindeloos hergebruikt in een groot aantal verschillende situaties. Van deze eigenschap wordt in de industrie gretig gebruikt gemaakt hetgeen er toe leidt dat een informaticus het objectgeoriënteerde paradigma moet begrijpen. 1.2 Relatie met andere onderwijseenheden Op deze module wordt voortgebouwd in de modules tirpro01, tirpro02, tirdat01, tirdat02 en diverse andere vakken, waarin verondersteld wordt het programmeren in een imperatieve taal te beheersen. 1.3 Leermiddelen Verplicht: Boek: Schaum s outlines Programming with Java second edition, auteur: John R. Hubbard, uitgever: McGraw hill, ISBN: 0-07-142040-1 Software: Java Development Kit (JDK) versie 6, te downloaden van http://www.javasoft. com Presentaties die gebruikt worden in de hoorcolleges (pdf): te vinden op http://med.hro. nl/oelew Opdrachten, waaraan gewerkt wordt tijdens het practicum (pdf): te vinden op http:// med.hro.nl/oelew Facultatief: Boek: Introduction to Java programming, auteur: Y. Daniel Liang, uitgever: Prentice Hall, ISBN:0132221586 Text editors: Emacs, VI, Jedit, Gedit, etc. TINPRO01-1 4 september 2015 4
2 Programma Week Literatuur Lesinhoud Producten 1 Schaum t/m blz. 15, inleiding, compiler, eerste programma 2 Schaum t/m blz. 30 variabelen, primitieve datatypedracht inleveren practicumop- 1 3 Schaum t/m blz. 45 strings, werken met methodedracht inleveren practicumop- 2 4 Schaum t/m blz. 60 taalconstructies: selectie inleveren practicumopdracht 3 5 Schaum t/m blz. 75 taalconstructies: iteratie inleveren practicumopdracht 3 6 Schaum t/m blz. 90 methodes inleveren practicumopdracht 4 7 Schaum t/m blz. 105 arrays inleveren practicumopdracht 4 8 Schaum t/m blz. 120 elementaire wiskunde inleveren practicumopdracht 5 9 voorbeeldtentamen bespreking voorbeeldtentamedracht inleveren practicumop- 5 10 vragenuur/inhaalles 3 Toetsing en beoordeling 3.1 Procedure Deze module wordt getoetst middels een schriftelijk tentamen (gesloten boek, zonder verdere hulpmiddelen) dat aan het einde van deze module wordt gegeven. Alvorens je aan het tentamen mag deelnemen zul je eerst in het practicum de uitwerkingen van een aantal opdrachten bij de docent of assistent moeten laten aftekenen. Deze opdrachten zijn te vinden op de website van de docent (http://med.hro.nl/oelew) Voorwaarden en uitgangspunten: Het tentamen bepaalt het eindcijfer. Met practicumopdrachten kunnen geen punten behaald worden. Practicumopdrachten dienen bij de practicumdocent te zijn afgetekend voor de dag, waarop het tentamen wordt afgenomen. In de eerste les van het volgende kwartaal wordt het tentamen in zijn geheel besproken tijdens het hoorcollege. Inzage in het tentamen kan altijd: maak per email een afspraak met de docent. Het tentamen kan tijdens een collegejaar éénmalig worden herkanst. Studenten die vanwege een handicap behoefte hebben aan een groter lettertype dienen de modulebeheerder minimaal één week van te voren een email te sturen, zodat hier rekening mee kan worden gehouden. TINPRO01-1 4 september 2015 5
Spel- en grammaticafouten worden door de vingers gezien, tenzij het maken van een spelfout of grammaticale fout de betekenis van de zin zodanig verandert dat deze onbegrijpelijk of onjuist is. Voor deze manier van toetsen is gekozen om de volgende redenen: De programmeervaardigheid (het daadwerkelijk in een editor kunnen schrijven van een programma) wordt aangetoond middels de practicumopdrachten. Het in correct Nederlands kunnen communiceren over een progammeertaal en het, op papier, kunnen aantonen van kennis over en inzicht in de programmeertaal wordt getoetst tijdens het tentamen. TINPRO01-1 4 september 2015 6
4 Bijlage 1: Toetsmatrijs Leerdoelen Dublin descriptoren Verwijzing naar opdracht / vraag / criteria 1,2,3,4 practicumopdracht 1 t/m 5, tentamen 1 editor, compiler, source, binary, statements, declaratieve/imperatieve talen 2 variabelen: integer, float, double, boolean, char, String 3 selectie: if, if-else, if-elseif, switch 4 iteratie: for, while, dowhile 1,2,3,4 practicumopdracht 1 t/m 5, tentamen 1,2,3,4 practicumopdracht 2 t/m 5, tentamen 1,2,3,4 practicumopdracht 3 t/m 5, tentamen 5 arrays 1,2,3,4 practicumopdracht 5, tentamen 6 methodes, recursie, 1,2,3,4 practicumopdracht 4 en scope 5, tentamen 7 elementaire wiskunde: 1,2,3,4 practicumopdracht 4 en faculteit, sommatie, 5, tentamen binomiaalcoëfficiënt, priemgetallen Dublin-descriptoren: 1. Kennis en inzicht 2. Toepassen kennis en inzicht 3. Oordeelsvorming 4. Communicatie TINPRO01-1 4 september 2015 7
5 Bijlage 2: Voorbeeldtoets Dit tentamen bestaat uit vijf open vragen. Werk netjes en overzichtelijk; Onleesbare tekst wordt fout gerekend... Lees goed en let op de tijd. Vraag 1 Wat is nodig om van een gegeven stuk (foutloze) broncode tot een werkend programma te komen? Beschrijf alle relevante hard-en software en beschrijf wat al deze onderdelen doen. Beperk het antwoord tot maximaal een halve bladzijde. Antwoord Zie boek! Vraag 2 Onderstaande statements worden na elkaar uitgevoerd in een programma. Noteer de uitvoer van dit programma. int x=5,y=10,z=20; x*=y-z--; System.out.println("x: "+x+" y: "+y+" z: "+z); z*=2+2; x=++y/2; System.out.println("x: "+x+" y: "+y+" z: "+z); for(x=0;x<5;x++){y+=x;} z%=15; System.out.println("x: "+x+" y: "+y+" z: "+z); y-=z+x/2; System.out.println("x: "+x+" y: "+y+" z: "+z); Antwoord x: -50 y: 10 z: 19 x: 5 y: 11 z: 76 x: 5 y: 21 z: 1 x: 5 y: 18 z: 1 Vraag 3 Gegeven de signatuur van een methode: public static float convert(float temp); Deze methode rekent het aantal graden Celcius om naar het aantal graden Fahrenheit. Het verband tussen het aantal graden Fahrenheit en het aantal graden Celcius is als volgt: Schrijf de betreffende methode. T Celcius = (T F ahrenheit 32). 5 9 TINPRO01-1 4 september 2015 8
Antwoord public static float convert(float temp) { return(temp*(9.0/5.0)+32); } Vraag 4 Wat is het verschil tussen de while en de for loop? Teken een stroomschema om dit aan te duiden. Antwoord Vraag 5 Het Σ teken wordt geacht u bekend te zijn. Naast het Σ teken, bestaat ook het Π teken. Betekenis en notatie zijn de volgende: i=3 i=1 2i = 2 4 6 = 48, ook geldt: i=n i=1 = n! Schrijf de methode public static float foo(int a, int b) die het volgende uitrekent: x=a y=b x=1 y=1 2xy + 1; Antwoord public static float foo(int a, int b) { int result=0; for(int x=1;x<=a;x++) { int mulresult=1; for(int y=1;y<=b;y++) { mulresult=mulresult*(2*x*y+1); } result+=mulresult; } return result; } TINPRO01-1 4 september 2015 9
Figuur 1: De for loop Figuur 2: De while loop TINPRO01-1 4 september 2015 10
6 Bijlage 3: Studielast (normering in ecs) aantal weken aantal lesuren van klokuren 50 minuten lesuren 10 4 33 zelfstudie leestijd aantal pagina s 3 per uur 6 per uur 120 10 per uur 12 presentaties overlegtijd uitzoektijd/research 11 niet ingeroosterde lestijd toetsen voorbereiden 3.5 toets 1.5 nabespreking 1 werkstuk,verslag,rapport,scriptie Stage, Praktijkopdracht uitzoeken overleggen schrijven voorbereiding aanwezigheid overleg Subtotaal in klokuren 56 Ruis 5% Totaal in klokuren 56 Totaal in studiepunten (ects) 2 TINPRO01-1 4 september 2015 11