JavaScript del 5 Funktioner

Relevanta dokument
JavaScript del 2 DocumentWrite, Prompt och ParseInt

JavaScript del 3 If, Operatorer och Confirm

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

C++ Slumptalsfunktioner + switch-satsen

JavaScript del 9 Dynamik och animeringar

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

Laboration 1 Introduktion till Visual Basic 6.0

Uppgifter teknik HT17 (uppdaterad v. 40)

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Digitalt lärande och programmering i klassrummet. Introduktionsworkshop - Interaktiva berättelser med Twine

Lathund för spel med karta

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Övningsuppgifter till föreläsning 2 Variabler och uttryck

JavaScript Block Editor:

Användarhandledning Version 1.2

Tentamen i Introduktion till programmering

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Datorteknik 2 (AVR 2)

Övning. Introduktion och förberedelser

HI1024 Programmering, grundkurs TEN

Metoder (funktioner) Murach s: kap Winstrand Development

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Uppgift 1 ( Betyg 3 uppgift )

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

HI1024 Programmering, grundkurs TEN

Uppgift 1 (grundläggande konstruktioner)

Micro:bit. Börja skapa egna program

Funktioner. Linda Mannila

Extramaterial till Matematik Y

Datalogi för E Övning 3

Game of 40. Regler och om sidan är in princip samma sak. Det som skiljer dem åt är att de inte har samma text.

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Genetisk programmering i Othello

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

COBOL. från grunden. monitors. Peter Sterwe. training people

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

v. 42 Python HT17 En introduktion Oscar Bergqvist

Hundrarutor, markörer, penna och miniräknare. På följande sidor finns hundrarutor för kopiering.

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

ID1004 Laboration 4, November 2012

Sphero SPRK+ Appen som används är Sphero Edu. När appen öppnas kommer man till denna bild.

v. 43 Python HT17 En introduktion Oscar Bergqvist

Chapter 3: Using Classes and Objects

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter

Extramaterial till Matematik Y

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Föreläsning 4 Programmeringsteknik DD1310. Felhantering. Syntax. try och except är reserverade ord som används för hantering av exekverings fel.

HI1024 Programmering, grundkurs TEN

Inledande programmering med C# (1DV402) Tärningarna ska kastas

kl Tentaupplägg

i LabVIEW. Några programmeringstekniska grundbegrepp

Metoder. Inledande programmering med C# (1DV402)

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

Föreläsning 4: Poster

Instruktion för laboration 1

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Att använda pekare i. C-kod

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Uppgift 1 ( Betyg 3 uppgift )

Inledande programmering med C# (1DV402) Summera med while"-satsen

Programmering = modellering

Extramaterial till Matematik Y

HI1024 Programmering, grundkurs TEN

Microsoft Office Excel, Grundkurs 2. Funktioner

MMA132: Laboration 2 Matriser i MATLAB

kl Tentaupplägg

TDIU01 - Programmering i C++, grundkurs

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

PROGRAMMERING-Java Omtentamina

Instruktion för laboration 1

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Three Monkeys Trading. Tärningar och risk-reward

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

TDDC77 Objektorienterad Programmering

MicroPython Ett textbaserad programmeringsspråk för Micro:bit

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Excel Övning 1 ELEV: Datorkunskap Sida 1 Niklas Schilke

Föreläsning 6 pekare och pekare tillsammans med arrayer

TDP002 - Imperativ programmering

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

Programexempel: tärningsspel. Programexempel: tärningsspel Kasta tärning tills etta. Klassen Die Specifikation. Slumptalsgenerator Klassen Random

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Omtentamen i Programmering C, Fri, Kväll,

Värmedistribution i plåt

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Andragradsekvationer. + px + q = 0. = 3x 7 7 3x + 7 = 0. q = 7

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

Transkript:

JavaScript del 5 Funktioner När man skriver JavaScriptkod eller program i andra programmeringsspråk för den delen så kan det finnas anledningar till att man vill dela upp sitt stora program i flera mindre program. Dessa kallas i JavaScript för funktioner. Det finns flera anledningar till att man kan vilja göra detta, tex: Det kan vara lättare att hitta fel i koden om man bara behöver leta i en liten avgränsad del i stället för i ett stort komplext program. Gör man ett större projekt som omfattar flera personer kan det vara smidigt att dela upp det hela så att olika personer jobbar med olika delar av programmet samtidigt. Uppgiften man ger sig på kan vara väldigt stor och komplex, då kan det vara lättare att dela upp den i mindre delar som kan bearbetas var för dig. En viss del av koden vill man kanske använda flera gånger, säg tex att du skapar ett Yatzyspel, då ska man ju slå massor av tärningsslag under spelets gång, tänk då att i stället för att skriva koden för ett tärningsslag mängder av gånger bara behöva skriva den en gång och sedan kan man anropa den koden varje gång man vill slå ett tärningsslag. Återvinning genom att dela upp din kod i mindre delar som utför särskilda funktioner så blir det lätt att återvinna den koden i andra projekt. Om du tex efter att ha gjort ditt Yatzy-spel vill göra ett nytt spel som använder sig av tärningsslag så kan du återanvända den träningsfunktion du skapade i ditt förra spel. Vi skapar en enkel funktion Låt oss säga att vi vill skapa ett Yatzy-spel och för att göra detta så måste spelaren kunna slå tärningsslag. Vad vi i princip behöver göra är att slumpa fram ett tal mellan 1 6, JavaScript har inbyggd kod för att kunna slumpa fram tal: Det är alltså följande rad som ger oss ett slumpat tal mellan 1-6: (Math.floor(Math.random() * 6))+1; Besöker jag webbsidan så kan jag snabbt testa och se att det hela fungerar genom att refresha den ett antal gånger och se att jag får olika resultat: Jakob Envall 1

Om vi nu skulle bygga ett spel där användaren ska slå med flera tärningar varje gång det är dennes tur så skulle vi behöva upprepa den här koden massor av gånger. I stället kan vi placera den i en funktion: En funktion skapar man alltså genom att skriva nyckelordet function följt utav ett namn du själv bestämmer och (). Mellan { och } skriver du sedan den kod som funktionen skall innehålla, i det här fallet så slumpar vi fram ett tal mellan 1 6. Därefter anger du vad funktionen skall retunera, dvs när funktionen anropas, vad ska den skicka tillbaka för svar. Vi anropar sedan funktionen genom att skriva namnet på den följt av (). Besöker vi webbsidan så ser vi att vi får samma resultat som tidigare, dvs varje gång vi uppdaterar den så får vi ett random tal mellan 1 6. För att tydliggöra det hela så skulle vi kunna anropa tarning() flera gånger: Besöker vi sedan sidan så möts vi av (bild på nästa sida): Jakob Envall 2

I stället för skriva om slumpa-koden varje gång har vi nu skrivit den en gång, i en funktion, därefter anropar vi den funktionen varje gång vi vill slå ett tärningsslag. Vi kan naturligtvis kombinera det hela med en loop om vi skulle vilja, tex: Vilket ger oss: Jakob Envall 3

Parametrar Man brukar oftast sträva efter att göra sin kod så dynamisk som möjligt, vi har ju i det här fallet skapat en tärning som slumpar mellan 1 6, men det finns ju andra typer av tärningar med, tex tärningar med 20 sidor vilka naturligtvis ger oss 1 20, vore det inte mer dynamiskt att ha en tärningsfunktion som kan hanterar alla typer av tärningar och inte bara den sexsidiga? En sak som kan göra en funktion mer dynamisk är att låta den ta emot en eller flera parametrar och beroende på vad man skickar med för värde så varieras också den informationen som funktionen skickar tillbaka till oss. I exemplet med tärningen vore kanske en bra lösning att vi skickar med vad vi vill att den ska slumpa mellan, dvs om vi skickar med siffran 6 så slumpar den mellan 1 6 och skickar vi med siffran 20 så slumpar den mellan 1 20. Så här skapar man en funktion som tar emot en parameter: Det vi ändrat med vår funktion är till att börja med inom parentesens efter funktionen namn, där det tidigare stod tarning() står det nu tarning(antalsidor). Om du sedan tittar på när vi anropar metoden så gjorde vi det tidigare genom att skriva tarning(), nu har vi lagt till en siffra inom parentesen så att det står tarning(20). Vad betyder då detta? Jo den siffran vi skickar med när vi anropar funktionen, i det här fallet 20 sparas i en variabel med namnet antalsidor. Därefter kan vi använda oss av den variabeln i vår funktion. Detta använder vi sedan för att modifiera vår slump-kod som tidigare så ut så här: (Math.floor(Math.random() * 6))+1; Så att vi bytte ut siffran 6 mot variabelnamnet: (Math.floor(Math.random() * antalsidor))+1; Detta gör så att vår kod i stället för att slumpa mellan 1 6 slumpar mellan 1 och det värdet som antalsidor har. När vi testar det hela så ser vi också att vi nu slumpar mellan 1-20: Jakob Envall 4

Vi kan naturligtvis bättre illustrera det hela genom att skapa en kod som anropar tarning() flera gånger men skickar med olika parametrar: Vilket ger oss: Jakob Envall 5

Flera parametrar En funktion kan ta emot fler än en parameter, säg tex att vi vill skapa funktionen summa() vilken tar emot två stycken heltal och sedan summerar dom och ger oss resultatet av den beräkningen så skulle den kunna se ut så här: Vilket ger oss följande resultat: Jakob Envall 6

Funktioner som inte returnerar något Det går att skapa funktioner som inte returnerar något, tex: Vilket ger oss: Som du kan se så har inte funktionen ovan nyckelordet return följt av en variabel, vilket våra tidigare exempel haft. Detta betyder att vi inte skulle kunna skriva tex: var test = likastora(tal1, tal2); Eftersom inte funktionen returnerar något så finns det inte heller något värde från den att stoppa in i variabeln test. Jakob Envall 7

Uppgifter 1. Skapa en funktion som tar två stycken tal som parametrar. Dessa tal ska användaren själv ha fått mata in. Därefter skriver funktionen ut på skärmen vilket av talen som var störst, alternativt om de var lika stora. 2. Denna uppgift skall erbjuda användaren ett antal valmöjligheter genom att mata in ett värde i en prompt. Valen skall bestå av 1. Konvertera grader från Celcius till Fahrenheit Användaren får i en prompt ange ett gradantal i Celcius som räknas om till Fahrenheit. Resultatet visas upp i en alert-ruta 2. Addera två tal med varandra Användaren får upp två prompt-rutor som begär att han/hon skall mata in ett tal. Talen läggs ihop och resultatet visas upp i en alert-ruta 3. Subtrahera ett tal från ett annat Användaren får upp två prompt-rutor som begär att han/hon skall mata in ett tal. Det första talet skall sedan dras från det andra och resultatet visas upp i en alert-ruta 4. Gissa ett hemligt nummer Användaren får upp en ruta där han/hon ombeds gissa ett hemligt nummer. En alertruta skall sedan tala om ifall det angivna talet är för lågt, för högt eller rätt. (Använd den lösningen ni tidigare gjort för detta). 5. Avsluta En alert-ruta visas upp som tackar användaren för att han varit på din sida. Inga flera val skall sedan visas upp. När något av de olika valen har utförts skall användaren åter igen få upp den ursprungliga prompten som frågar vilket av valen han/hon önskar utföra. En ledtråd är att du kan placera det hela i en loop som körs om och om igen tills användaren valt att avsluta. På så vis kommer menyn upp igen varje gång. Ni ska skapa en funktion för varje moment. Dvs en funktion ni kan anropa för att konvertera Fahrenheit till Celsius, en ni kan anropa för att addera två tal, en för att subtrahera två tal och en för att köra nummergissningsspelet. Ni avgör själva vilka eventuella lämpliga parametrar era funktioner ska ta. Följande skärmdumpar kan ge lite hintar på hur det hela skulle kunna tänkas se ut: Jakob Envall 8

Jakob Envall 9