De 10 JavaScript eksamensspørgsmål

Relaterede dokumenter
Byggebasen Javascript

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

Programmering 2. dprog2 E

Programmering 2. dprog2 E

IDENTIFON. Emil Hauberg, Jakob Christoffersen, Ninette Nielsen og Senia Lundberg

Rapport. Udarbejdet af: Mayianne Nøks Pedersen. Skole login: knmape68.

Indholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen...

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

PHP guide af Daniel Pedersen

Programmering I Java/C#

Eksamens spørgsmål Software Construction. Objekter. Spørgsmål 1: Januar Giv en beskrivelse af Objekt-begrebet og deres brug

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

Sammenlign og byt. Et eksempel på dokumentering af et program

Eksamensopgaver datalogi, dl/vf 2010 side 1/5. 1. Lodtrækningssystem

Dokumentation. Karen-Louise Fejerskov

HTX, RTG. Rumlige Figurer. Matematik og programmering

Introduktion til ActionScript

Eksamen, DSDS, efterår 2008

3. PROJEKT, 2 SEMESTER

Installationsvejledning til Virk Tæller

Eksamen, DSDS, efterår 2007

Help / Hjælp

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

Synopsis. Hardi Bootlader m. Java ME

Hukommelsesspil. Introduktion. Scratch

Dokumentering af umbraco artikeleksport:

SAX Simple API for XML.

Fra Computer til Virkelighed. TPE-kursus Elektroniske Systemer P1

Eksamensopgaver datalogi, dlc 2011 side 1/5. 1. Lodtrækningssystem

Start på Arduino og programmering

Hvor er mine runde hjørner?

Introduktion til ActionScript, fortsat

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension

DANMARKS TEKNISKE UNIVERSITET

Netværk & elektronik

Modbus data modellen er opbygget af fire primære data typer. I nedenstående skema er en kort oversigt over disse.

Matador. Hvert hus koster: 2000 Et hotel koster: huse Pantsætningsværdien er 2000 kr.

Undervisningsbeskrivelse

Ghostbusters. Introduktion. Scratch. Du skal lave et fangelegsspil med spøgelser! Arbejdsliste. Test dit Projekt. Gem dit Projekt

Python programmering. Per Tøfting. MacFest

Projekt i Programmering C Menu til hjemmeside.

WT-1011RC Programmer User Guide

Software Design (SWD) Spørgsmål 1

Forelæsning Uge 2 Mandag

HTML, PHP, SQL, webserver, hvad er hvad??

Hjælp under login på Mit DLR Oktober 2015

DM502. Peter Schneider-Kamp

Brugerundersøgelse 2. semester 3. projekt

Skriftlig eksamen i Datalogi

WT-1011RC Programmer User Guide

Semesterbeskrivelse Innovation og Digitalisering, 1. semester.

JavaScript. nedarvning.

Programmering C RTG

Udarbejdet af CFU Absalon

Example sensors. Accelorometer. Simple kontakter. Lysfølsomme. modstande. RFID reader & tags. Temperaturfølsomme. Flex Sensor.

Lær Python - Dag 4, modul 2 Objektorienteret programmering

DM507 Algoritmer og datastrukturer

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende

DM507 Algoritmer og datastrukturer

GSM SMS Modem MODEL: SA RTU-1 V1.01

Kort om baggrund for kurset, aktører, kodning.dk

Programmering i Javascript

2. SEMESTER PROJEKT 3 INTERAKTIONSUDVIKLING

Programmering og Problemløsning, 2017

Procesbeskrivelse - Webprogrammering

DM507 Algoritmer og datastrukturer

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

Transkript:

De 10 JavaScript eksamensspørgsmål I det nedenstående præsenteres de 10 JavaScript spørgsmål der sammen med relevante dele af kursets pensum vil udgøre udgangspunktet for den del af den mundtlige eksamen i digitalt materiale og interaktive artefakter der vedrører kursets introduktion til struktureret programmering i JavaScript samt design og implementering af mindre mikroprocessor-kontrollerede digitale/analoge elektriske kredsløb (se i øvrigt kursusbasen for detaljerede læringsmål). Det forventes at den studerende efter simpel lodtrækning blandt de 10 spørgsmål er forberedt på at besvare et af disse spørgsmål samt indgå i en mere generel diskussion af emneområderne som de er blevet præsenteret/diskuteret på kurset igennem pensum, forelæsninger og øvelser. Der er til den mundtlige eksamen afsat 10 minutter til dette. Side 1 af 14

1. Design og implementer JavaScript kode der kan indgå i en tyverialarm applikation. Forestil dig at du har en Tessel med en passende sensor monteret på cyklen. Alarmen skal give besked på din telefon, når din cykel flyttes. Hvilken sensor vil du bruge? Hvordan skal kredsløbet der forbinder Tessel og sensoren være? Alarm applikationen skal endvidere laves i en version, hvor 5 af dine venners mobiltelefoner også modtager beskeden (Brug PubNub til kommunikation fra Tessel til telefonen). Forbered dig på at præsentere/diskutere den overordnede struktur af din kode samt de anvendte kontrol- og datastrukturer. Side 2 af 14

2. Design og implementer JavaScript kode der kan indgå i en applikation der kan spille Yatzy med 5 terninger. Efter hvert kast, skal de terninger, der viser 6 øjne lægges til side og de resterende terninger kastes indtil Yatzy opnås. Yatzy er opnået når alle 5 terninger viser 6 øjne. Applikationen skal vise en statistik over hvor mange terningekast, der skal til for at opnå Yatzy. For at etablere et bedre statistisk grundlag, skal der opnås Yatzy 500 gange før det gennemsnitlige antal anvendte kast beregnes. Hvordan vil du følge og vise processen mens applikationen gennemfører de 500 Yatzy spil? (Vise statistik løbende måske? Eller på anden måde vise at processen er i gang?) Forbered dig på at præsentere/diskutere den overordnede struktur af din kode samt de anvendte kontrol- og datastrukturer. Side 3 af 14

3. Design og implementer JavaScript kode og kredsløb, der kan indgå i en bils baksensor med en Tessel og en ultralydssensor (afstandssensor), samt 3 LEDs som output. Vis afstanden opdelt i 3 intervallen hhv. langt fra, tæt på, meget tæt på. Hvert interval vises med lys i LEDerne. Hvordan er kredsløbet mellem ultralydssensor, Tessel og LEDs? Forbered dig på at diskutere forskellen mellem analog og digital input og output. Forbered dig på at præsentere/diskutere den overordnede struktur af din kode samt de anvendte kontrol- og datastrukturer. Side 4 af 14

4. Design og implementer JavaScript kode der kan indgå i en applikation der gemmer de 20 mest almindelige efternavne i en passende datastruktur. Navnene kan du hente fra Danmarks Statistik: http://www.dst.dk/da/statistik/emner/befolkning-og-valg/navne/navne-i-hele-befolknin gen Applikation skal kunne udskrive navnene i alfabetisk sorteret rækkefølge. Efterfølgende skal det længste navn (navnet med flest bogstaver) udskrives. Hvis der er flere kandidater til det længste navn, skal disse navne skrives ud i alfabetisk rækkefølge. Forbered dig på at præsentere/diskutere den overordnede struktur af din kode samt de anvendte kontrol- og datastrukturer. Side 5 af 14

5. Forbered dig på at præsentere/diskutere nedenstående JavaScript kode. Tag udgangspunkt i de med blåt fremhævede linier i koden når du forklarer hvad koden gør. Vis også det elektriske kredsløb der tænkes brugt i forbindelse med brug af koden. (OBS! Koden fortsætter på næste side) var mytessel = require( "tessel" ); var EventEmitter = require( 'events' ).EventEmitter; var util = require( 'util' ); util.inherits(ultrasoundsensor, EventEmitter ); /* Inherit methods from the standard js EVentEmitter object and hence, make them part of our object. We want to emit events */ function UltraSoundSensor(anPin, samplerate, minimumdistance) var self = this ; var dist = 4097; // A value we know cannot be from a real measurement var intervalid; function gomeasure() anpin.analogread(dothesensing); function dothesensing (error,number) dist = Math.round(4095*number); if (dist < minimumdistance) self.emit( 'tooclose',dist); // name and emit event // methods to help start and stop the timers controlling the samlping process this.start = function () console.log( 'starting sensor' ); intervalid = setinterval(gomeasure,samplerate); ; this.stop = function () clearinterval(intervalid); console.log( 'sensor stopped' ); ; Side 6 af 14

module.exports = UltraSoundSensor; /* make our object avaible as module that can we can 'require' from somewhere outside this module */ Og når vi vil bruge et UltraSoundSensor objekt: var mytessel = require( "tessel" ); ultrasoundsensor = require( "./UltraSoundSensorObject.js" ); var myanaloginputpin = mytessel. port.b.pin[2]; myultrasoundsensor = new ultrasoundsensor (myanaloginputpin,100,200); function handletoocloseevent (d) console.log(d + " taking Care Of too close event" ); myultrasoundsensor.on( 'tooclose', handletoocloseevent ); myultrasoundsensor.start(); Side 7 af 14

6. Vis eksempler i JavaScript på anvendelsen af hhv. repetition, selektion og sekvens som kontrolstrukturer i designet og konstruktionen af JavaScript applikationer. Anvend eventuelt et af de andre 9 spørgsmål som inspiration og til konkretisering af diskussionen af de tre i øvrigt generiske kontrolstrukturer. Anvendelsen af lokale variable som del af kontrolstrukturer? Hvad hvis der skal vælges (selekteres) mellem mere end to muligheder? Diskuter de forskellige slags repetitioner ( for, while ) vi har til rådighed og hvordan vi vælger imellem dem når vi står med en konkret programmeringsopgave? Side 8 af 14

7. Analyser projektet Light Kinetics af Studio Espadaysantacruz. https://player.vimeo.com/video/90523113 Design og implementer JavaScript kode og det elektriske kredsløb, der kan prototype projektet med en Tessel og 7 LEDs. Hvilken sensor vil du anvende? Hvordan undgår du at lyset flimrer og sikrer du flydende overgange mellem LEDs? Hvordan undgår du at en LED springes over, hvis brugeren bevæger vippen hurtigt? Forbered dig på at præsentere/diskutere den overordnede struktur af din kode samt de anvendte kontrol- og datastrukturer. Side 9 af 14

8. Forbered dig på at præsentere/diskutere nedenstående JavaScript kode. Tag udgangspunkt i de med blåt fremhævede linier i koden når du forklarer hvad koden gør. Vis også det elektriske kredsløb der tænkes brugt i forbindelse med brug af koden. (OBS! Koden fortsætter på næste side) var mytessel = require( "tessel" ); var PubNub = require( "pubnub" ); var mprefs = require( "./pubnubprefs" ); var beskednummer = 0; var minpubnub = new PubNub () ( publishkey : mprefs. minepubnubkeys. publishkey, subscribekey : mprefs. minepubnubkeys. subscribekey ); minpubnub.subscribe( channels : [mprefs. minchannel ]; ); function sendbesked (BeskedObj) minpubnub.publish( channel : mprefs. minchannel, message : BeskedObj ) function lavogsendbesked () var mbesked = new mprefs.minbesked( "Switch Opened!", beskednummer++); sendbesked (mbesked); var myinputpin = mytessel. port.b.pin[2]; function readmypin (P) P. read ( dosomething ); ; var oldnumber = true ; // 1 as true, 0 as false function dosomething (error, number) Side 10 af 14

console.log(number); if ((number!= oldnumber) && (number== true )) lavogsendbesked (); oldnumber = number; // number = 1 true swtich opent setinterval( readmypin,500,myinputpin); Side 11 af 14

9. Forbered dig på at præsentere/diskutere nedenstående JavaScript kode. Tag udgangspunkt i de med blåt fremhævede linier i koden når du forklarer hvad koden gør. Koden omfatter en HTML og to JS filer. (OBS koden fortsætter på næste side) HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> </head> <body> <script src="https://cdn.pubnub.com/sdk/javascript/pubnub.4.4.3.js"></script> <script src="minepubnubprefs.js"></script> <span id ="datafield"></span> <script src="tesselpubnubreceivermonitor.js"></script> </body> </html> Java Script (1) var datadisplay = document.getelementbyid( "datafield" ); var minpubnub = new PubNub ( subscribekey : minepubnubkeys. subscribekey, restore : true ); minpubnub.addlistener ( message : hentogvisminbesked ); minpubnub.subscribe ( channels : [ minchannel ], restore : true ); function hentogvisminbesked (mobj) datadisplay. innerhtml = "Data modtaget: " + mobj. message. data ; Side 12 af 14

Java Script (2) const myuuid = PubNub.generateUUID(); const minepubnubkeys = publishkey : "pub-xxxxxxx", subscribekey : "sub-xxxxxxx" ; const minchannel = "BDMA17" ; function minbesked (beskedtxt,beskednummer) this. text = beskedtxt; this. nummer = beskednummer; this. uuid = myuuid ; Side 13 af 14

10. Design en augmenteret kontorstol. Montér en smartphone på en kontorstol og anvend denne telefon til at detekterer/registrerer stolens bevægelser. Bevægelserne skal vises som farveskift på en web-side. Opgaven løses naturligt i 2 dele: 1) Design og implementer den JavaScript kode der gør det muligt at detekterer/registrerer stolens bevægelser ved hjælp af telefonen og 2) Design og implementer den HTML-kode der med udgangspunkt i data fra telefonen kontrollerer og viser baggrundsfarven på en web-side. Web-siden vises i en browser (eksempelvis i Chrome på en laptop ). Baggrundsfarven i HTML-dokumentet er som udgangspunkt sort når stolen står stille, og ændrer sig når stolen bevæges. Forklar hvilken sensor du benytter i telefonen og hvordan du tilgår data fra denne. Brug PubNub til kommunikation mellem stolens påmonterede telefon og den computer der viser HTML siden. Forbered dig på at præsentere/diskutere den overordnede struktur af din kode samt de anvendte kontrol- og datastrukturer. Side 14 af 14