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

Relevanta dokument
Labora&on 1 Variabler och beräkningar övningar/uppgi9er

Laboration 6 Formulär och stränghantering övningar/uppgifter

Labora&on 5 Dynamisk HTML och &mers övningar/uppgi=er

Labora&on 3 Objekt i JavaScript övningar/uppgi:er

Övningar i JavaScript del 3

Labora&on 3 HTML och struktur övningar/uppgi:er

Labora&on 2 HTML och validering övningar/uppgi:er

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

Introduk+on +ll JavaScript if- sats, funk+oner, bilder

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

Labora&on 4 Händelser och drag and drop övningar/uppgi:er

Loopar och objekt i JavaScript

Övningar i JavaScript del 5

Labora&on 6 CSS och responsiv webbdesign övningar/uppgi:er

Övningar i JavaScript del 2

Sammanfattning av hantering av redovisning av uppgift U1

Labora&on 4 CSS och validering samt fråga D övningar/uppgi?er

Labora&on 4 CSS och validering övningar/uppgi9er

Mappar och filer för webbsidor

Laboration 3 HTML och struktur samt frågorna A - C övningar/uppgifter

Övningar i JavaScript del 4

Labora&on 8 Formulär övningar/uppgi6er

Övningar i JavaScript del 7

Labora&on 5 CSS och layout samt fråga E övningar/uppgi>er

Introduk+on +ll programmering i JavaScript

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

Användarhandledning Version 1.2

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Laboration 1 Introduktion till Visual Basic 6.0

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll

JavaScript del 2 DocumentWrite, Prompt och ParseInt

JAVASCRIPT. Beteende

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

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Textsträngar och formulär i JavaScript

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

Metoder. Inledande programmering med C# (1DV402)

TDDC77 Objektorienterad Programmering

Övningsuppgift. En array baklänges. Steg 1. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Språk för webben introduk4on 4ll HTML

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

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

*Pekarvärden *Pekarvariabler & *

Lektion 3 HTML, CSS och JavaScript

Användarhandledning pcskog Bmwin 2011

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

För att öppna galleriet, ange adressen

TDIU01 - Programmering i C++, grundkurs

Planering Programmering grundkurs HI1024 HT 2014

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

Föreläsning 5-6 Innehåll

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

Föreläsning 10. Besiktningsprotokollet

Kom igång. Readyonet Lathund för enkelt admin. Logga in Skriv in adressen till din webbsida följt av /login. Exempel:

Lektion 7. Datateknik A, Java I, 5 poäng

729G04 Programmering och diskret matematik. Föreläsning 7

Planering av ett större program, del 2 - for och listor. Linda Mannila

Besiktningsprotokollet

Lektion 5 HTML, CSS, PHP och MySQL

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Frekvenstabell över tärningskast med C#

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

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Övningsuppgifter kapitel 8

PROGRAMMERING-Java Omtentamina

Kommentar [k1]: Behöver vi kommentera det som finns till höger ovanför schematyp?

Typkonvertering. Java versus C

Visual Basic, en snabbgenomgång

Frekvenstabell över tärningskast med C#

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

[] Arrayer = Indexerad variabel

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

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

4.4 Swing ett interaktivt grafiskt gränssnitt

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

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

Användarmanual WebNailer. 19 januari 2004

Optimering av webbsidor

Objektbaserad programmering

729G04 Programmering och diskret matematik. Python 3: Loopar

Programmeringsteknik med C och Matlab

Lab5 för prgmedcl04 Grafik

Övning. Introduktion och förberedelser

729G74 - IT och programmering, grundkurs. Dugga.

Föreläsning 5: Introduktion av pekare

Funktioner. Linda Mannila

Uppgifter teknik HT17 (uppdaterad v. 40)

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Att skriva till och läsa från terminalfönstret

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

v. 42 Python HT17 En introduktion Oscar Bergqvist

TDP002 - Imperativ programmering

Objektorienterad Programmering (TDDC77)

Att stjäla kod på ett intelligent sätt

[[Det här är en länk]] Skapar en länk till en passage som heter Det här är en länk.

Visa och dölja element med JavaScript

Transkript:

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er 1M322 Webbteknik 2, 7,5hp Medieteknik 2017 Rune Körnefors rune.kornefors@lnu.se

1. Ladda ner arbetsdokument Till övningarna i denna labora&on finns det em antal filer som du kan ladda ner i en zip-fil. Länk &ll zip-filen finns på labora&onens webbsida. Då du packat upp zip-filen, får du en mapp med tre filer och ymerligare en mapp med em antal bildfiler.

2. Globala variabler och init-funk&onen Programmet kommer byggas upp stegvis i em antal övningar. Du ska skapa olika funk&oner för de olika knapparna. En del av koden visas i bilder i övningarna. Men för andra delar av koden, får du se &llbaks på föregående labora&on eller exempel i föreläsningar och kursboken, för am se hur du ska skriva. All programkod skriver du i filen script.js. Du behöver en del globala variabler och en del ini&ering av dem i init-funk&onen. DeMa kommer också byggas ut i de kommande övningarna, men du börjar här med de första variablerna och ini&eringarna. Globala variabler Deklarera två globala variabler (dvs i början av filen, före funk&onerna). Kalla variablerna inputelem och msgelem. Funk/onen init Variabeln inputelem ska vara en array med referenser &ll de tre tex\älten. Skapa först en tom array. I posi&onerna som indexeras av 1, 2 och 3 lägger du in referenser &ll de tre tex\älten. En array börjar ju med index 0, men vi lämnar den första posi&onen tom och använder index 1 &ll 3, så det blir samma nummer som i de id som används i tex\älten. I variabeln msgelem lägger du in en referens &ll div-elementet med id "message". Lägg också in en programsats, så am funk&onen showfruit anropas, då man klickar på knappen med id "btn1".

3a. Visa bild med frukt Du ska nu skapa funk&onen showfruit, som ska avläsa em tal i det första tex\ältet. Sedan ska bildfilen som motsvarar talet visas i img-taggen. Funk/onen showfruit Skapa en funk&on kallad showfruit. I funk&onen deklarerar du två lokala variabler, nr och fruiturl. Lägg in en sats för am avläsa tex\ältet och spara värdet i variabeln nr. Bilderna ligger i mappen pics och heter fruit1.jpg, fruit2.jpg, etc. Så säm samman en textsträng med en referens &ll den bildfil som bestäms av värdet i nr. Spara textsträngen i variabeln fruiturl. Referera &ll elementet med id "fruitimg" och src-amributet. Lägg där in fruiturl, för am byta ut bilden i img-taggen. Med "lägg in" menas en &lldelning. Du har referensen &ll vänster om likhetstecknet och det som ska läggas in i den skriver du &ll höger om likhetstecknet. Testa Testa programmet i webbläsaren. Öppna också webbkonsolen, då du testar dim program, så am du får eventuella felmeddelanden där. Om din kod inte fungerar, &Mar du på &psen för felsökning på nästa sida. Skriver man in 4 och klickar på knappen "Visa bild", ska bilden med apelsiner visas.

Om det inte fungerar Om din kod fungerar, behöver du inte göra det som står på denna sida, men läs gärna igenom dema ändå. Om din kod inte fungerar, ges här lite &ps &ll felsökning. Debuggern Kontrollera i Webbkonsolen am Fel är markerat i JS-menyn. Ladda om sidan och prova igen, för am se om du får något felmeddelande. Om du får em felmeddelande, rämar du felet och provar igen. Stega dig fram i programmet Genom am &llfälligt lägga in en alert-sats på olika ställen och skriva ut en variabel eller en text, kan du se om du kommer dit i koden och om variabeln innehåller em korrekt värde. Lägg in alert("hej"); precis i början av funk&onen showfruit. Då du klickar på knappen "Visa bild" ska det dyka upp en ruta med texten "Hej". Om det inte gör det, så har du em fel i init-funk&onen, där du kopplar funk&onen showfruit &ll knappen. Kontrollera då den koden och se om du lagt &ll onclick och om du skrivit showfruit på likadant säm som i funk&onen, med stora och små bokstäver. Om du får fram "Hej", vet du am du kommer in i funk&onen. Då kan du ta bort alert-satsen och istället lägga in en alert(nr); e:er den rad där du läser in talet från tex\ältet. Då du skriver in em tal och klickar på knappen ska det talet dyka upp i alert-rutan. Om det inte gör det, så är det fel vid inläsningen. Kontrollera am du skrivit inputelem korrekt, indexerat med 1 och lagt &ll.value i slutet. Om du får fram talet, tar du bort alert-satsen och lägger &ll alert(fruiturl); e:er den rad där den variabeln &lldelas. Kontrollera am du får ut räm textsträng i alert-rutan, då du klickar på knappen. Om du inte får det, jämför du det du skrivit i koden med det som anges i övning 3a. Om du ändå inte får fram bilden, då du klickar på knappen, är det fel i raden där du byter ut bilden. Kontrollera då am du stavat getelementbyid räm, am du har räm id och am du avlutar med.src samt am du har variabeln fruiturl e:er likhetstecknet. Om det i alla fall inte fungerar, får du be om hjälp.

3b. Visa bild med frukt För am kunna visa korrekta bilder, ska användaren skriva en siffra mellan 1 och 5 i tex\ältet. men det är ju möjligt am också skriva något annat. Så du ska nu lägga &ll if-satser, för am kontrollera det som läses in från tex\ältet. DeMa är nu nym, så här visas hela koden för if-satserna. Kontrollera om det är eb tal E:er programsatsen där du läst in nr från tex\ältet, lägger du in en if-sats, där du kontrollerar om nr är em tal eller ej. Använd funk&onen isnan. Om det inte är em tal, skriver du i elementet för meddelanden am man ska skriva siffror. Avsluta sedan funk&onen med return. Kontrollera ab talet ligger inom räb intervall Lägg &ll ymerligare en if-sats, för am kontrollera om talet ligger utanför intervallet 1 &ll 5, dvs är mindre än 1 eller större än 5. Skriv i så fall ut em meddelande och avsluta med return. Konvertera /ll eb heltal Även om det är em tal i räm intervall, så kan det ju vara på fel form. Skriver man t.ex. in 3.45, så är det em tal mellan 1 och 5, men det blir fel, om man sedan använder det &ll am säma samman textsträngen för filnamnet. Så du ska nu konvertera &ll em heltal, genom am ta bort en eventuell decimaldel. Det gör du med funk&onen parseint. E:er if-satserna lägger du &ll en rad där nr konverteras &ll em heltal. Skriv sedan in det korrigerade värdet i tex\ältet, så am användaren också kan se det. Testa Testa programmet i webbläsaren. Om din kod inte fungerar, kollar du felmeddelanden i debuggern eller stegar dig fram med alert, så som det beskrevs e:er övning 3a.

4. Kommentarer Det är all&d en god sed am skriva kommentarer i programmet, så det ska du nu också göra. Förklara vad en funk/on gör eller är /ll för Ovanför funk&onen showfruit lägger du in en rad med en kommentar som förklarar vad funk&onen gör. Förklara vad variabler är /ll för E:er varje deklara&on av en variabel med var, skriver du en kort kommentar som förklara vad variabeln är &ll för. DeMa gör du både för de globala variablerna i början av filen och de lokala variabler som deklareras inu& funk&onen showfruit. I de kommande övningarna fortsämer du sedan med am skriva kommentarer varje gång du skapar en ny funk&on eller deklarerar en ny variabel.

5a. Kontrollera fruktnamn I det andra tex\ältet ska användaren skriva namnet på den frukt som visas i bilden. DeMa ska göras i en ny funk&on som ska kopplas &ll den andra knappen, men du behöver också em par nya variabler. Globala variabler Du behöver två nya globala variabler. En array med alla fruktnamn och en variabel med numret på vald frukt. Inför två nya globala variabler med namnen fruitnames och fruitnr. Ini/ering av variablerna och knappen I init-funk&onen lägger du &ll en rad där frukternas namn läggs in i en array som sparas i fruitnames. I första posi&onen skriver du "ingen frukt". Då hamnar frukterna i posi&on 1 &ll 5, vilket stämmer med det nummer som användaren skriver in i det första tex\ältet, för am välja frukt. Lägg in värdet 0 i fruitnr. Variabeln fruitnr ska sedan användas för am indexera fruitnames och från början är ingen frukt vald. Lägg också in en programsats, så am funk&onen checkname anropas, då man klickar på den andra knappen. Uppdatering av variabeln fruitnr Sist i funk&onen showfruit lägger du in en programsats, så am fruitnr blir lika med nr. Variabeln nr är ju en lokal variabel i showfruit och försvinner, då man lämnar funk&onen. Men fruitnr är en global variabel och där sparas värdet, så am det sedan kan användas i en annan funk&on.

5b. Kontrollera fruktnamn Nu ska du skriva funk&onen checkname. Funk/onen checkname Skapa en ny funk&on sist i filen och kalla den checkname. Inför en lokal variabel, som du kallar name. Läs in det andra tex\ältet och spara innehållet i variabeln name. Använd ingen konvertering med Number. Det ska ju nu vara en text som läses in. I en if-sats jämför du om name är lika med fruitnames[fruitnr]. Om de är lika skriver du "RäP namn." i fältet för meddelanden (som du refererar med msgelem). Annars skriver du "Fel namn.". Testa Testa programmet i webbläsaren. Om din kod inte fungerar, kollar du felmeddelanden i debuggern eller stegar dig fram med alert, så som det beskrevs e:er övning 3a.

5c. Kontrollera fruktnamn Man kan ju skriva in em namn och klicka på knappen Kontrollera, innan man valt en frukt. Du ska nu testa om en frukt är vald, innan namnet kontrolleras. Kontroll om en frukt är vald I funk&onen checkname lägger du in en if-sats i början av funk&onen (e:er deklara&on av variabeln). I denna nya if-sats kontrollerar du om fruitnr är lika med 0. I så fall skriver du ut em meddelande om am man först måste välja frukt. Avsluta sedan funk&onen med return. Testa Testa programmet i webbläsaren. Om din kod inte fungerar, kollar du felmeddelanden i debuggern eller stegar dig fram med alert, så som det beskrevs e:er övning 3a.

6a. Funk&on för am läsa in em tal från em tex\ält I det tredje tex\ältet ska det skrivas in em tal mellan 1 och 9. Det görs på samma säm som då du läser in det första tex\ältet i funk&onen showfruit, fast det är en annan input-tagg och en annan övre gräns för talet. Du ska nu flyma ut koden för dema ur showfruit och skapa en särskild funk&on för dema. Den funk&onen kan sedan anropas både då man läser in tal från det första och från det andra tex\ältet. Funk/onen getnr Skapa en ny funk&on och kalla den getnr. Lägg in en lokal variabel, som du kallar nr. I funk&onen showfruit kopierar du raderna där nr läses in från tex\ältet, de båda if-satserna samt de båda raderna där du konverterar med parseint och sedan skriver in nr i tex\ältet igen. Dvs koden som visas i figuren här in&ll. Lägg in denna kod i funk&onen getnr. Parametrar och ändringar i koden Lägg in elemnr och high, som två parametrar i funk&onen getnr. Med elemnr specificeras vilket tex\ält som ska läsas och med high anges den övre gränsen för talet. Värden för dessa parametrar ska alltså sedan ges, då funk&onen anropas. I koden ändrar du indexet för inputelem från 1 &ll elemnr. Det finns både i början och i slutet av koden. I den andra if-satsen byter du ut 5 mot high.

6b. Funk&on för am läsa in em tal från em tex\ält Värdet från tex\ältet läses in &ll den lokala variabeln nr. DeMa ska nu returneras, så man kan ta emot det då getnr anropas. Returvärde Sist i funk&onen returnerar du nr med return. Det finns också redan två andra return-satser i if-satserna i koden. Förut räckte det med am endast ha return, för am avbryta funk&onen och programmet, men nu ska du där returnera null. Då kan man e:er anropet av getnr kontrollera om resultatet blev null eller ej, för am se om man läst in en korrekt siffra. Byt de båda return &ll return null. Anropa getnr i showfruit Den kod som du kopierade från showfruit, tar du nu bort. Istället lägger du där in em anrop av getnr. Det är det första tex\ältet som ska läsas in, så den första parametern ska vara 1 och den övre gränsen för talet är 5, så den andra parametern ska vara 5. Det värde som returneras från getnr, sparar du i variabeln nr. Kontrollera det returnerade värdet E:er anropet av getnr lägger du in en if-sats, för am kontrollera om nr är skilt från null. I så fall har du fåm en korrekt siffra och de tre raderna för byte av bild ska u\öras. Testa Testa i webbläsaren am det nu for\arande fungerar am skriva in em tal i det första tex\ältet och få fram bilden för frukten. Om din kod inte fungerar, kollar du felmeddelanden i debuggern eller stegar dig fram med alert, så som det beskrevs e:er övning 3a.

7a. Lägg &ll frukter i en lista av valda frukter Den sista funk&onen du ska skriva i denna labora&on, är en funk&on som ska avläsa det tredje tex\ältet. Sedan ska du lägga &ll bilder av vald frukt i div-elementet med id "selectedfruits". Du behöver då ymerligare en global variabel med en referens &ll det div-elementet. Globala variabler och ini/ering Inför den globala variabeln selfruitselem. I init-funk&onen tar du fram en referens &ll elementet med id "selectedfruits" och sparar i selfruitselem. Lägg också in en programsats, så am funk&onen addfruits anropas, då man klickar på den tredje knappen. Funk/onen addfruits Skapa en ny funk&on och kalla den addfruits. Deklarera två variabler, amount och imglist. Variabeln amount ska vara det tal som läses in från tex\ältet och imglist ska vara en textsträng med HTML-kod som ska läggas in i elementet "selectedfruits". Lägg in en if-sats, som kontrollerar am en frukt är vald, annars avbryter du med return. Denna if-sats blir likadan som i funk&onen checkname. Avläs sedan tex\ältet genom am anropa getnr. Det är nu det 3:e tex\ältet och övre gränsen är 9. Spara det returnerade värdet i variabeln amount. I en if-sats kontrollerar du om amount är skilt från null. I så fall ska det som beskrivs i nästa övning u\öras.

7b. Lägg &ll frukter i en lista av valda frukter Här skriver du den kod som ska finnas i if-satsen i föregående övning. Kod i if-satsen I variabeln imglist ska du lägga &ll kod för img-taggar med vald frukt (dvs den som bestäms av fruitnr). Det ska vara så många img-taggar som bestäms av det inlästa talet (som nu finns i amount). Så dema ska göras i en for-loop, där du lägger &ll en img-tagg för varje varv i loopen. Före loopen måste du då ini&era imglist som en tom sträng (två cita&onstecken utan något emellan). E:er loopen lägger du &ll (med +=) imglist &ll elementet som bestäms av selfruitselem. Om man sedan väljer en annan frukt och lägger &ll den, kommer listan am byggas på med fler och fler bilder. I början av funk&onen deklarerar du också variabeln i med var. Testa Testa i webbläsaren. Om din kod inte fungerar, kollar du felmeddelanden i debuggern eller stegar dig fram med alert, så som det beskrevs e:er övning 3a.

8. Publicera och testa Då du är klar med dim program publicerar du det i Web publishing i FirstClass, på samma säm som du publicerade labb 1. Kommentarer Gå först igenom dim program och kontrollera am du skrivit en förklarande kommentar för varje variabel och varje funk&on. Publicera dib program Lägg upp dim program i en mapp kallad lab2 i mappen dold i Web Publishing i FirstClass. Skapa en länk från ingångssidan i din por\olio (index.htm i Web Publishing) &ll den första sidan i dim program (index.htm i lab2). Testa Ta fram din por\olio i webbläsaren och kontrollera am länken fungerar samt am allt i dim program fungerar.