Modell, meldinger og oppdatering

Like dokumenter
Input fra brukeren. Hente tekst fra brukeren. Moduler og program. Modell, meldinger og oppdatering. Skriv ut teksten. Introduksjon

Tell sekunder. Steg 0: Hva er forskjellig fra før? Introduksjon. I denne oppgaven skal vi lage vårt eget spill!

Denne oppgaven innfører funksjoner, og viser hvordan vi kan skrive og teste funksjoner i Ellie.

Steg 1: Vi starter fra toppen

Hver ting i en liste kalles et element. En liste lages ved å skrive elementer inni [], med, mellom elementene:

PXT: Micro:bit repeater

ToPlayer. Introduksjon: Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide

Om du allerede kjenner Scratch og har en Scratchbruker kan du gå videre til Steg 1.

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Steg 1: Canvas-elementet

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

CSS: Style nettsider. Introduksjon. Skrevet av: Arve Seljebu

Skrevet av: Oppgaven er laget av GDG Bergen ( AU/GDGBergen/), og tilpasset Kodeklubbens format på oppgaver.

Fraktaler og datastrukturer

I denne oppgaven skal vi gjøre enkle operasjoner på tekst, som å endre størrelsen på bokstavene og telle ord.

Kom i gang med Learn To Mod

La oss begynne enkelt. Vi vil først se hvordan vi kan flytte og snurre på en figur.

Hvor i All Verden? Del 1. Introduksjon. Steg 1: Styr et helikopter. Skrevet av: Geir Arne Hjelle

Steg 1: Piler og knappetrykk

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

Soloball. Introduksjon. Steg 1: En roterende katt. Sjekkliste. Skrevet av: Geir Arne Hjelle

Finn en partner å prøve spillet sammen med. Det er OK å være tre personer og bytte på hvilke to som spiller.

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Steg 1: Lag bildedeklarasjon

I denne oppgaven forventer vi at du har vært gjennom HTML- og CSS-oppgavene så langt og/eller er kjent med <div> - og HTML5-taggene.

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

"Hjerneteppe!" er en huskelek hvor du skal huske stadig lengre rekker med bokstaver!

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide

Steg 1: Endre bakgrunn og finne figurer

HTML5. Skjemaer på nettsider. Skjemaer med. Informasjonsteknologi 1 og 2. Gløer Olav Langslet Sandvika VGS

Fraktaler og datastrukturer

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

PXT: Flasketuten peker på

Skilpaddekunst. Introduksjon. Skrevet av: Geir Arne Hjelle

La oss begynne enkelt. Vi vil først se hvordan vi kan flytte og snurre på en figur.

Hash-funksjoner. Introduksjon. Steg 1: Strekkoder. Eksempel. Skrevet av: Martin Strand

Steg 1: Regneoperasjoner på en klokke

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

PXT: Det regner mat! Introduksjon. Steg 1: Grunnlag. Sjekkliste. Skrevet av: Helene Isnes

1. Rullende navn, s 3 2. Smilefjes, s 5 3. Skritteller, s 7 4. Orakel, s 9 5. Stein, saks og papir, s Kompass, s 14

Steg 1: En første animasjon

PXT: Tikkende bombe. Introduksjon. Steg 1: Vi starter spillet. Skrevet av: Kolbjørn Engeland

Hvor i All Verden? Del 3. Introduksjon. Steg 0: Forrige gang. Sjekkliste. Skrevet av: Geir Arne Hjelle

HTML: Del inn nettsiden

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

Snurrige figurer. Steg 1: En snurrig figur. Sjekkliste. Introduksjon

Kodetime for Nordstrand barneskole

Bygge en kube. Introduksjon. Steg 1: Lage en ny mod. Skrevet av: Pål G. Solheim

ToPlayer. Steg 1: Kom i gang med metodene setup og draw. Gjør dette: Introduksjon:

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Steg 1: Installere programvaren

Steg 0: Installere Pygame Zero

Her skal du lære å programmere micro:biten slik at du kan spille stein, saks, papir med den eller mot den.

Klask-en-Muldvarp. Introduksjon. Skrevet av: Basert på MITs "MoleMash for App Inventor 2"-guide (

Farger. Introduksjon. Skrevet av: Sigmund Hansen

Ping pong. Introdusjon: Steg 1: Sprettende ball. Sjekkliste. Skrevet av: Torbjørn Vik Lunde

Steg 1: Bli kjent med spillet

Øvingsforelesning i Python (TDT4110)

Hei verden. Introduksjon. Steg 1: Sette opp Xcode. Skrevet av: Andreas Amundsen

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen.

Steg 1: Husker du skilpadden?

JS: Grunnleggende JavaScript

Flagg. Introduksjon. Steg 1: Gå i sirkel. Skrevet av: Sverre Oskar Konestabo og Geir Arne Hjelle

Skrevet av: Oversatt fra microbit-micropython.readthedocs.io (

7-Segment Display. Introduksjon. Steg 1: Finn frem utstyr. Til denne oppgaven trenger du. Skrevet av: Martin Ertsås & Morten Minde Neergaard

PXT: Himmelfall. Introduksjon. Skrevet av: Helene Isnes og Julie Revdahl

Kryptering med vigenere-metoden

Steg 1: Katten og fotballbanen

PXT: Spå fremtiden med bilder

CSS: Animasjon Nybegynner

Donkey Kong. Introduksjon. Oversikt over prosjektet. Skrevet av: Geir Arne Hjelle

Norgestur. Introduksjon. Steg 1: Et norgeskart. Sjekkliste. Skrevet av: Geir Arne Hjelle

Steg 1: Tekst på flere linjer

Skilpaddekunst. Steg 1: Møt skilpadden. Sjekkliste. Introduksjon. Turtles

I dag skal vi lage et nyttig spill, nemlig et spill som hjelper oss å lære andre ting. Vi skal få hjelp til å lære gangetabellen!

Hvor i All Verden? Del 2. Introduksjon. Steg 0: Forrige gang. Skrevet av: Geir Arne Hjelle

I denne oppgåva skal me lage eit enkelt spel der pingvinane har rømt frå akvariet i Bergen. Det er din (spelaren) sin jobb å hjelpe dei heim att.

og Java

Repetisjon Novice Videregående Python PDF

HTML: Legg til lyd og video

Kan micro:biten vår brukes som et termometer? Ja, den har faktisk en temperatursensor!

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

if-tester Funksjoner, løkker og iftester Løkker og Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

Kryptering med Vigenère-metoden

Lærerveiledning - Snøballkrig

Transkript:

Input fra brukeren Skrevet av: Alexander Perry Kurs: Elm Tema: Tekstbasert, Nettside Fag: Programmering, Teknologi Klassetrinn: 8.-10. klasse, Videregående skole Introduksjon Input-felter lar brukere skrive inn tekst, tall, datoer og så videre i nettsiden vår. Informasjonen vi får fra brukerne kan vi endre, skrive ut, og kombinere med annen informasjon. Hente tekst fra brukeren Moduler og program Øverst i koden vår må vi si hvilke moduler vi skal bruke import Html exposing (Html, Attribute, beginnerprogram, text, div, inpu t, button) import Html.Events exposing (oninput, onclick) Modell, meldinger og oppdatering Vi oppretter programmet vårt med en modell som inneholder data ( model ), et brukergrensesnitt hvor vi viser frem data ( view ) og en funksjon for oppdatering av data ( update ). Vi kommer tilbake til hvordan vi oppretter disse, skriv inn følgende i koden:

beginnerprogram { model = "", view = view, update = update } Så trenger vi å si hva slags meldinger ( Msg ) vi skal sende i programmet. Til å begynne med har vi bare én meldingstype, og det er meldingen som sendes når brukeren endrer teksten i input-feltet, her kaller vi den for Endre. type Msg = Endre String Etter det må vi skrive hva som skal skje når teksten oppdateres med en updatefunksjon: Endre tekst -> tekst Nå hentes bare teksten inn, og sendes rett ut igjen. Det er kanskje litt rart, når funksjonen vår heter Endre? La oss endre teksten! For å endre teksten, kan vi bruke innebygde funksjoner i String -modulen. Skriv ut teksten Til slutt må vi ha et sted som viser teksten, da bruker vi et view: div [ [ input [ placeholder "Baklengstekst", oninput Endre [, div - [ [ text model input [ placeholder "Baklengstekst", oninput Endre [ er det som blir til et input-felt. Teksten etter placeholder sier hva som skal stå i feltet før brukeren skriver inn noe. oninput sier hva som skal skje når brukeren skriver inn tekst. I vårt tilfelle sender vi en Endre -melding som hentes inn i update -funksjonen. Når brukeren skriver inn "Teodor", sendes en melding av typen Endre "Teodor" inn i update -funksjonen. Setter vi alle delene sammen, vil koden vår se slik ut:

import Html exposing (Html, Attribute, beginnerprogram, text, div, inpu t) import Html.Events exposing (oninput) beginnerprogram { model = "", view = view, update = update } -- UPDATE type Msg = Endre String Endre tekst -> String.reverse tekst -- VIEW div [ [ input [ placeholder "Baklengstekst", oninput Endre [, div - [ [ text model Kommentarer I koden over har vi skrevet -- UPDATE og -- VIEW. Det har vi gjort for å gjøre koden mer strukturert og lesbar. Alle linjer som starter med to bindestreker (--) ignoreres i Elm. Dette er hva vi kaller kommentarer! Kommentarer er ment for menneskene som leser koden, enten deg selv eller de du samarbeider med. Lag en setning Ny modell

Nå skal vi lagre en setning i tillegg til teksten som brukeren skriver inn. Da må vi endre modellen vår. Den nye modellen skal se slik ut: -- MODEL model = { tekst = "", setning = "" } Her kan vi se at modellen inneholder to tekster, som er tomme når man åpner nettsiden. Oppdater også programmet slik at vi bruker den nye modellen: beginnerprogram { model = model, view = view, update = update } Oppdater Nå skal vi gjøre det mulig å lagre baklengstekstene i en setning med mellomrom mellom hvert ord. Da må vi endre update slik at den kan ta inn tekst og legge den til i setning i modellen vår: -- UPDATE type Msg = Endre String LeggTil String Endre nytekst -> { model tekst = String.reverse nytekst } LeggTil nytekst -> { model setning = model.setning ++ " " ++ nytekst } Msg forteller oss hva slags input-meldinger vi kan ta imot fra nettsiden vår. Tidligere hadde vi bare Endre -funksjonen for når noen skriver inn tekst, nå har vi også LeggTil -funksjonen som gjør det mulig å legge til teksten i en setning. Vi må også oppdatere update med hva som skal skje når den får inn melding av typen LeggTil. Om vi ikke gjør det, vil Elm gi beskjed:

Ny knapp Nå mangler vi bare en knapp for å legge til tekst i setningen: -- VIEW div [ [ input [ placeholder "Baklengstekst", oninput Endre [, button [ onclick (LeggTil model.tekst) [ text "Legg til", div - [ [ text model.tekst, div - [ [ text model.setning onclick bestemmer hva som skal skje når brukeren trykker på knappen. Her kaller vi funksjonen LeggTil og sender med teksten som ligger i modellen vi lagde tidligere. Programmet vårt ser slik ut med den nye knappen:

import Html exposing (Html, Attribute, beginnerprogram, text, div, inpu t, button) import Html.Events exposing (oninput, onclick) beginnerprogram { model = model, view = view, update = update } -- MODEL model = { tekst = "", setning = "" } -- UPDATE type Msg = Endre String LeggTil String Endre nytekst -> { model tekst = String.reverse nytekst } LeggTil nytekst -> { model setning = model.setning ++ " " ++ nytekst } -- VIEW div [ [ input [ placeholder "Baklengstekst", oninput Endre [, button [ onclick (LeggTil model.tekst) [ text "Legg til", div - [ [ text model.tekst, div - [ [ text model.setning Ting du kan prøve Utvid nettsiden med en knapp som snur alle ordene i setningen tilbake til rett vei

Tekst kan manipuleres med mange forskjellige innebygde funksjoner som String.repeat (gjenta en tekst), String.toUpper (gjør alle BOKSTAVENE TIL STORE BOKSTAVER) Se full liste av hva man kan gjøre med tekst i dokumentasjonen (på engelsk) (http://package.elm-lang.org/packages/elm-lang/core/5.1.1/string) Fargevelger Det finnes mange forskjellige type input-felter. Til nå har vi sett på tekst-input, men vi har også muligheten til å bare ta inn tall. I denne oppgaven skal vi lage en fargevelger. Farger på nettsider defineres som oftest i grader av rød, grønn og blå. Hver farge har en verdi fra 0 til 255. Vi skal lagre tre verdier i modellen vår, rød, grønn og blå i feltene rod, gronn og blaa. Legg til det første feltet i modellen vår, rod : import Html exposing (Html, Attribute, beginnerprogram, text, div, inpu t) import Html.Events exposing (oninput) beginnerprogram { model = model, view = view, update = update } -- MODEL model = { rod = "" } Lagre rødstyrken fra en input, men begrens rekkevidden fra 0 til 255 med Html.Attributes.min og Html.Attributes.max :

input [ type_ "number", Html.Attributes.min "0", Html.Attributes.max "2 55" [ Vi trenger også å håndtere bruker-input, slik som i forrige oppgave Legg til koden som mangler: import Html exposing (Html, Attribute, beginnerprogram, text, div, inpu t) import Html.Events exposing (oninput) beginnerprogram { model = model, view = view, update = update } -- MODEL model = { rod = "" } -- UPDATE type Msg = EndreRod String -- VIEW div [ style [("height", "100%"), ("background", "rgb(255, 255, 255)" ) [ input [ type_ "number", Html.Attributes.min "0", Html.Attributes. max "255" [, div [ [ text model.rod Legg til input-felter for de to andre fargene, og meldingene EndreGronn og EndreBlaa

Oppdater rgb(255, 255, 255) slik at den bruker verdiene for rød, grønn og blå fra modellen vår (hint: slå sammen tekst) Bytt ut number-input med range, og se hva som skjer! Innebygd fargevelger Chrome, Edge, Firefox og Opera er nettlesere som kommer med innebygd fargevelger. Fargevelger er også en type input-felt. Lag en ny type input på nettsiden, som bruker fargevelger-type istedenfor range (hint: på engelsk er farge color ) Bytt ut verdien for background med fargen fra fargevelgeren (husk å legge til fargen i modellen og i update ) Lisens: CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0/deed)