På denne blokdag skal I arbejde med programmering.
I skal bruge de metoder og begreber, I har lært i lektion 1-5 i dette forløb.
Det kan være, at I undervejs i arbejdet bliver nødt til at gå tilbage til de tidligere lektioner, for at få repeteret metoderne I skal benytte.
I forbindelse med opgaverne er der nogle illustrationer eller videoer.
Disse billeder/videoer kan hjælpe jer på vej til en løsning, men giver ikke hele løsningen på opgaven.
HUSK at der til hver opgave kan være mange forskellige løsninger!
Efter hver opgave er der anført teksten ”Upload screenshot på Lectio opgave# (tidspunkt for deadline)”.
(Klasserne g1, g2, g3 og g4 afleverer alle opgaver på Teams!)
De screenshots, I afleverer, skal vise jeres løsning inklusiv den fulde kode. Disse screenshots skal indsættes i et Word-dokument med klassebetegnelse og med gruppens medlemmers navne i sidehovedet.
Der må maksimalt være 4 medlemmer i hver gruppe!
Enkelte opgaver skal desuden afleveres som et Screencast-O-Matic. Dette gælder for opgave 5 og 6 og angives i forbindelse med opgaveformuleringerne.
I arbejder udelukkende i Scratch i dag og løser derfor også kun opgaverne i Scratch.
Løs Opgave#1: Valutaomregner mellem USD og DKr
I ønsker at købe sko på en amerikansk webshop, som tilbyder fri fragt. Da prisen er angivet i dollars (USD), vil I gerne beregne, hvad skoene koster i danske kroner (DKr).
Hvis prisen i USD er 200, og kursen (prisen i DKr for 1 USD) er 6,82, beregnes prisen i DKr ved at gange beløbet i USD med kursen.
Et eksempel på kode kan ses på dette billede fra Scratch:
(bemærk at kursen skrives som 6.82 med '.' i stedet for ',' til angivelse af decimal).
Programkode: Valutaomregner mellem USD og DKr
Ret og tilføj i programmet så:
1. Det er muligt for brugeren selv at indtaste kursen på 1 USD.
Lav et nyt program, hvor:
1. Brugeren skal indtaste et beløb i DKr i stedet for et beløb i USD.
Programmet skal herefter angive prisen i USD som svar til brugeren (husk at brugeren skal indtaste kursen på prisen i USD for 1 DKr).
Upload screenshot på Lectio som opgave#1 (deadline 9.30)
(Klasserne g1, g2, g3 og g4 afleverer alle opgaver på Teams!)
I denne del skal I løse både opgave#2 og opgave#2.1. Begge opgaver har deadline kl. 10.40 på Lectio.
I kan se illustration og video nedenfor om forgreninger.
Her er en programstump, der viser, hvordan I kan bruge en forgrening til at afgøre om en bruger er stemmeberettiget.
I denne video kan I se, hvordan programmet er lavet.
Det giver en god indføring i forgreninger, som I skal bruge i opgave#2.
Oplæg til opgave#2:
I skal nu arbejde videre med jeres program fra opgave#1. (I skal tage afsæt i det oprindelige program, hvor prisen angives i USD og omregnes til Dkr).
Til løsning af denne opgave skal I bruge forgrening.
Når varer indføres i Danmark, pålægges de ofte afgifter, som afhænger af varens pris. Dette skal nu indgå i beregningen af prisen i danske kroner.
Reglerne for afgifter er følgende:
Når prisen på varen er 80 kr. eller derover, pålægges moms på 25% og importgebyr på 160 kr.
Der skal desuden betales told, hvis du køber varer for 1.150 kr eller mere. Tolden beregnes som 17% af varens pris inkl. moms.
Brug jeres program fra opgave#1 til at lave beregninger for tre beløb nedenfor. På denne måde kan I sikre jer, at I jeres program regner rigtigt.
Løs Opgave#2: Anvend programmet fra opgave#1 - nu med afgifter!
I skal i programmet indtaste beløbene i USD ($), kursen skal være 6.82 Dkr for 1 USD.
Svarene som programmet skal vise fremgår herunder:
Beløb 1: 14 USD (svar: ca. 279 Dkr)
Beløb 2: 177 USD (svar: ca. 1.925 Dkr)
Beløb 3: 240 USD (svar: ca. 2.554 Dkr)
Upload screenshot på Lectio opgave #2 (deadline 10.40)
(Som svar skal I uploade et screenshot af hele jeres programkode).
(Klasserne g1, g2, g3 og g4 afleverer alle opgaver på Teams!)
Tip til programmet: Brug 'hvis-så-ellers' løkker til løsning af opgaven.
Det kan være en god ide at sætte flere 'hvis-så-ellers'-løkker ind i hinanden som vist på figuren:
Løs Opgave#2.1: Udvidelse af sko med afgifter
Efter at have løst opgave#2 skal I nu tilføje følgende til jeres program:
Indsæt en forgrening efter, at brugeren har indtastet beløbet i USD.
Hvis beløbet er negativt, skal brugeren vises en besked om fejlagtigt input (fx: 'Beløbet må ikke være under 0 kr! Prøv igen').
Tjek også at beløbet ikke overstiger et maksimumbeløb I selv vælger (det er fx næppe sandsynligt at en vare koster flere millioner USD).
Ellers skal programmet fortsætte som tidligere med indtastning af valutakurs, beregning og visning af beløbet i danske kroner.
Upload screenshot på Lectio opgave #2 (deadline 10.40)
(Klasserne g1, g2, g3 og g4 afleverer alle opgaver på Teams!)
I denne del skal I løse opgave#3 og opgave#3.1. Begge opgaver skal afleveres som screenshot på Lectio kl. 11.50.
En af styrkerne ved en computer er dens evne til at udføre en handling gentagende gange på kort tid. Mennesker kan også gentage den samme handling om og om igen, men det er forbundet med risiko for fejl, og det tager forholdsvis lang tid for et menneske at udføre mange handlinger.
En computer kan programmeres til at udføre præcis den samme handling eller varianter af den samme handling et vilkårligt antal gange på brøkdele af et sekund.
Anvendelse af løkker
Løkker bruges til mange formål. Her er en række eksempler på anvendelsesområder:
Indlæsning (og bearbejdning) af linjerne i en fil med data for en app
Beregning af summen af en række værdier i en liste
Sortering af en liste af fødselsdatoer
Afspilning af et musiknummers data
Finde mellemrum i et digt
While-løkker kan fx også bruges til at gennemgå en 7-tabel.
Herunder er et eksempel på et program, der gennemgår en tabel efter brugerens valg med en 'While-løkke' (det hedder 'Gentag-indtil' i Scratch).
Først er der et billede af program-koden og nedenunder en video, der gennemgår programmet og viser, hvordan det er lavet.
Programkode til 'tabel-program'.
Efter at have set videoen med 'tabel-programmet' skal I løse følgende opgaver:
Løs Opgave#3: Udvidelse af tabel-program
Lav et program magen til det, der er gennemgået på videoen.
Sørg for at rette de problemer med programmet, der nævnes sidst i videoen.
Lav en forgrening, der sikrer, at brugerens indtastning til tabellen er et tal mellem 1 og 10.
Gør det muligt, at programmet kan gentages med nye tabeller indtil brugeren beder om at stoppe.
Lav en ændring i programmet så fx en 7-tabel ikke løber som '7-14-21-28...', men omvendt: '70-63-56...'.
Upload screenshot på Lectio opgave#3 (deadline 11.50)
(Klasserne g1, g2, g3 og g4 afleverer alle opgaver på Teams!)
Opgave#3.1: While-løkke med gentagende sætninger
Lav et program med en while-løkke, der 20 gange skriver "Jeg gentager ofte mig selv.".
Udvid herefter programmet med en forgrening efter eget valg. Det kan fx være, at brugeren selv kan indtaste en sætning, at brugeren kan vælge mellem forskellige sætninger, at brugeren kan vælge antal gentagelser eller noget helt fjerde efter jeres eget valg.
Upload screenshot på Lectio opgave#3.1 (deadline 11.50)
(Klasserne g1, g2, g3 og g4 afleverer alle opgaver på Teams!)
Når man på forhånd ved hvor mange gentagelser man vil have, kan man med fordel anvende en for-løkke i stedet for en while-løkke.
I scratch bruges forskellige løkker. Du kan se eksempler på dem her:
Eksempler på løkker, der kan bruges i Scratch. I kan bruge alle tre former for løkker til de fleste opgaver, hvor løkker skal bruges. Men husk at bruge løkkerne med omtanke, så I kun får det antal gentagelser I ønsker at opnå.
Der er dog ikke nogen af de tre eksempler, der er det, man kalder en for-løkke. En for-løkke findes nemlig ikke i Scratch. I stedet kan bruges en 'gentag (10) gange'-løkke.
Nedenfor er et program, der gennemløber 7-tabellen. Programmet anvender en 'gentag-10-gange'-løkke.
Programkoden kan ses under programmet.
Programkode til 7-tabel program, der bruger løkken 'gentag-10-gange'.
Lister (Arrays)
Vi vil nu udvide vores 7-tabel program, så vi kan gemme alle værdierne i en liste (et andet udtryk for en liste er en Array).
Programkoden kan se nedenfor til venstre. På videoen til højre gennemgås, hvordan programmet er lavet og hvad lister er.
Se videoen igennem, så I selv kan lave lister i jeres næste program!
Programkode til 7-tabel med liste.
I videoen gennemgås brugen af lister (Arrays).
Når man importerer ski og snowboards til Danmark fra lande udenfor EU betales en importtold på 3,4%, når prisen i danske kroner overstiger kr. 1.150.
På billedet nedenunder til højre kan I se en programkode, der beregner told, moms og afgifter.
Til venstre kan I selv prøve programmet at indtaste forskellige værdier.
Programkode til programmet 'Snowboards til Danmark'.
I skal selv indtaste koden udfra billedet ovenfor til højre eller bruget linket: link til kode.
Ovenstående program fungerer fint, men der er behov for nogle forbedringer. Dem skal I nu tilføje programmet.
Løs Opgave#4: Modify programmet Snowboards til Danmark
Giv brugeren mulighed for at indtaste en kurs på GBP.
I det nuværende program skal brugeren svar ja/nej for at fortsætte. Men programmet standser kun, hvis brugeren taster 'nej'. Dette skal I ændre, så denne funktion fungerer bedre.
Der er i programmet en liste, der hedder 'allePriser'. Denne liste nulstilles i starten af programmet. I skal sørge for at alle priserne, der indtastes i GBP og beregnes i Dkr, registreres i denne liste.
Når brugeren ikke har flere varer at indtaste, skal I beregne den gennemsnitlige pris pr sko i Dkr for hver indtastning (Hvis brugeren har indtastet 3 forskellige priser i GBP, skal I beregne de tilsvarende gennemsnitspriser i Dkr efter afgifter - brug jeres liste til dette!).
Upload screenshot på Lectio opgave#4 (deadline 13.20)
(Klasserne g1, g2, g3 og g4 afleverer alle opgaver på Teams!)
Lykkehjulet var en populær tv-quiz, der var inspireret af det amerikanske Wheel of Fortune og blev sendt på TV2 i 90'erne. Målet med quizzen var at gætte et ord inden for en given kategori, f.eks. et sted eller en person. Deltagerne skulle dreje på et hjul og efterfølgende gætte på en konsonant, som kunne være indeholdt i ordet. Hvis ordet indeholdt konsonanten, blev det afsløret hvor i ordet konsonanten optrådte, og spilleren kunne fortsætte sin runde.
I denne del skal I arbejde på en simpel version af Lykkehjulet, som minder om Galgespillet (på engelsk: Hangman). I denne version kan der både gættes på konsonanter og vokaler, og målet er at bruge færrest muligt antal gæt.
Når man i programmering arbejder med ord og bogstaver benyttes 'strenge'.
En streng er en datatype der indeholde en række tegn.
Kør programmet 'Lykkehjulet' og spil spillet ved at klikke på det grønne flag i øverste venstre hjørne:
Spillet fungerer, men det trænger helt åbenlyst til nogle forbedringer.
Hvilke dele mangler spillet, før det fungerer efter hensigten?
Løs Opgave#5: Udvidelse af Lykkehjulet
I skal som minimum tilføje nedenstående til jeres program.
Spillet skal afsluttes, når ordet er gættet.
Der skal foretages en tælling, så man som bruger får oplyst, hvor mange forsøg, man har brugt.
Indsæt jeres egen kategori, og udfyld listen 'words' med nye ord.
Herudover forventes I at tilføje yderlige 1-3 forbedringer efter eget valg.
Upload screenshot + kort Screencast-O-Matic video, der viser spillet i funktion. Uploades på Lectio opgave#5 (deadline 14.30)
(Klasserne g1, g2, g3 og g4 afleverer alle opgaver på Teams!)
I har måske undret jer, hvis I får en fejlmeddelelse, når I indtaster jeres Dankort- eller kreditkortnummer i forbindelse med en transaktion.
Som fejlmeddelelse får I fx beskeden: "Der er fejl i det indtastede kortnummer".
Hvordan kan terminalen/hjemmesiden afgøre dette?
Det skyldes den særlige Luhn Algoritme, der anvendes til at kontrollere det indtastede kortnummer.
I denne opgave skal I lave et program, der fungerer på samme måde som denne algoritme.
I kan se en kort introducerende video her:
Algoritmen til at kontrollere et kort med et 16-cifret kortnummer som angivet:
Startende med det første cifre skal hvert andet cifre adderes (1. ciffer + 3. ciffer + 5. ciffer + ... + 15. ciffer).
Summen af disse cifre skal fordobles.
Tæl antallet af cifre i (1), der er større end 4. Læg antallet til summen i (2).
Læg summen af de resterende cifre til (det er de cifre, der ikke indgik i (1).
(Hele det nævnte forløb gennemgås grundigt i videoen ovenfor).
Hvis summen i (4) ender på 0, så er kortnummeret gyldigt/indtastet korrekt.
Løs Opgave#6: Lav en kreditkortnummer-checker.
I skal lave et program, der kontrollerer om et kortnummer er gyldigt/indtastet korrekt.
Det forventes som minimum at programmet kan følgende:
Kontrollere, at der indtastes præcist 16 cifre
Udføre en test efter ovenstående algoritme
Angive om kortnummeret er gyldigt/korrekt indtastet.
Gøre det tydeligt for brugeren, hvad vedkommende skal gøre. Herunder give mulighed for at indtaste flere numre alternativt afslutte forløbet.
I må meget gerne tilføje yderligere funktioner efter eget valg til programmet.
Når programmet er færdigt skal I optage en video på Screencast-O-Matic, hvor I som minimum tester følgende numre (alle numre indtastes uden bindestreg):
1234-5678-8900-0000
4571-3456-6432-1239
3234-5653-7865-3241
Det skal tydeligt fremgå af videoen om kortnummeret er korrekt.
Upload screenshot + Screencast-O-Matic video. Uploades på Lectio opgave#6 (deadline 14.30)
(Klasserne g1, g2, g3 og g4 afleverer alle opgaver på Teams!)