[Introtekst/video]
Teknologi og computere spiller en stadig større rolle i vores samfund. Det er vigtigt at give eleverne en forståelse for, hvordan teknologi fungerer, og hvordan man kan anvende teknologi til at løse problemer og skabe kreativitet.
Algoritmisk kunst er en spændende måde at arbejde med teknologiforståelse og kreativitet på. Her kombinerer vi det med fag som billedkunst og matematik, og eleverne skal lære at bruge algoritmer til at skabe kunstneriske værker.
Denne del om Teknologiforståelse består af tre dele. I de to første dele folder vi teknologiforståelse ud med særligt fokus på, hvordan dette fagområde indgår i projektet "Algoritmisk kunst". Dernæst kan du gå videre til undersiden "Perspektivering af projektets teknologifaglige indhold", som tilføjer andre dybere forståelser af computationel tankegang og af andre dele af digital kunst med relevans for projektet.
Faglige mål fra teknologiforståelse i projektet:
Teknologiforståelse er en forsøgsfaglighed, som er blevet afprøvet både som sit eget fag fra 1-9. klasse og som delmængde i eksisterende fag, herunder billedkunst (i indskolingen) og matematik på alle grundskolens trin.
I projektet her tager vi udgangspunkt i teknologiforståelse som fag, og du kan se nedenfor, hvilke faglige mål, vi især har lagt vægt på. Vi har særligt fokus på udvalgte kompetencer som teknologisk handleevne og computationel tankegang.
Hvis du ikke har beskæftiget dig med teknologiforståelse før, kan du se den korte introduktionsvideo fra Undervisningsministeriet her.
I forsøget med teknologiforståelse som fag indgik fire kompetenceområder, nemlig Digital myndiggørelse, Digital design og designprocesser, Computationel tankegang og Teknologisk handleevne. Selvom hvert kompetenceområde dækker over en særlig faglighed, er det i samspillet, at teknologiforståelsesfagligheden træder frem.
Nedenfor kan du læse kort om hvert enkelt område, inden vi zoomer ind på de faglige mål, som vi især adresserer i dette projekt.
I Algoritmisk kunst har vi fokus på nogle særlige kompetenceområder fra forsøgsfaget Teknologiforståelse: Computationel tankegang og Teknologisk handleevne og det er gennem udvalgte færdigheds-/vidensmål, som kan ses nedenfor, vi arbejder med dette fag i projektet.
[Her skrives aktuel brødtekst]
Ja - i en vis grad. Det er vigtigt, at både I og jeres elever forstår de allervæsentligste byggeklodser, når de programmerer. Uanset programmeringssprog er der tale om de samme byggeklodser. På et konceptuelt niveau skal I kende til disse.
Det handler bl.a. om at forstå, hvordan data kan lagres og ændres ved hjælp af variable, og hvordan forskellige kontrolstrukturer kan bruges til at styre programmets flow. Derudover skal I selvfølgelig kende til de syntaksregler, som anvendes i Processing.
Selve kodningen vil I og eleverne blive guidet igennem. Dels vil der være masser af eksempler, hvor koden er skrevet, og eleverne blot skal ændre i den, og dels vil I kunne bruge ressourceark, hvorfra de væsentligste kodelinjer kan kopieres efter behov.
Der vil for mange af jer nok være tale om at skulle tilegne jer et helt nyt vokabular, men bortset fra nye termer er det ikke helt så kompliceret, som det lyder.
Didaktisk er elevmaterialet opbygget ud fra et princip, der hedder Use-Modify-Create. Princippet går ud på, at eleverne møder eksempel-værker, som de afprøver og analyserer, derefter modificerer og til sidst på egen hånd konstruerer noget nyt, enten som tilføjelse til eksempel-værkerne eller helt nye værker, hvor de anvender det lærte. Princippet er godt til nybegyndere, som på den måde gradvist kan blive introduceret til programmeringsdele, som de anvender med det samme, samtidig med, at man kan fokusere på et element ad gangen frem for at skulle forstå hele koden, som vil være nødvendigt hvis alle værker skal laves fra bunden hver gang.
Se video fra EMU's begrebsguide til teknologiforståelse om det didaktiske princip
Forskelle mellem en algoritme og et program
En algoritme løser et problem, mens et program implementerer denne løsning ved hjælp af en computer, som kan udføre programmet.
Funktioner
Alle projekter i Processing starter altid med to faste funktioner, nemlig:
function setup () {
her skrives de instruktioner, som skal udføres, før selve programmet starter, fx størrelse på lærred og baggrundsfarve
}
og
function draw () {
her skrives de instruktioner, som skal udføres, når selve programmet afvikles, dvs. det, der skal tegnes
}
De to funktioner er rigeligt til at lave værker, hvor hver enkelt instruktion, der skrives, er en afgrænset figur, fx en cirkel eller et kvadrat, men hvis nu man gerne vil skabe en figur, som består af flere figurer, der er sat sammen på en bestemt måde, fx en blomst, kan man lave sin egen funktion, fx i eksemplet her "function draw flower".
Først skal man definere funktionen på en bestemt måde med alle instruktioner, så programmet ved, hvad det præcist skal tegne, når man senere beder det om at tegne en blomst. Når man så gerne vil tegne en blomst senere, kan man bare skrive "function draw flower". Man sparer altså at skulle skrive alle instruktionerne, der kræves for at tegne en blomst, hver gang man vil bruge den i sit program.
Når eleverne giver deres forskellige elementer navne, er det en god idé at forklare dem om en meget udbredt måde, som kaldes camelCase (med reference ti kamelens pukler).
Det er vigtigt at være logisk i navngivningen af fx objekter og variable, så mennesker kan forstå, hvad navnet dækker over. Computeren er ligeglad, men længere koder kan være svære at læse og forstå, hvis ikke der er brugt logiske navne for de forskellige elementer. Som udgangspunkt navngives altid med lille forbogstav, fx "cirkel" eller "kvadrat". Hvis der er flere slags cirkler, kan eleverne fx navngive dem cirkelLille, cirkelStor eller cirkelBlå, cirkelRød. Læg mærke til, at efterfølgende ord, der føjes til navnet, starter med stort bogstav. Dette er camelCase notation, og det hjælper med at gøre navnet mere læsbart. Det gælder også ved yderligere tilføjede ord, fx cirkelStorBlå.
Anførselstegn bruges, når computeren skal læse noget som en tekststreng. Det er ligemeget i Processing, om der bruges dobbelt " eller enkelt ' anførselstegn - bare det gøres konsekvent på begge sider af den enkelte tekststreng. En farveangivelse kan fx gøres ved hjælp af RGB værdier (red - green - blue), som er tal, eller ved bare at skrive farvens navn på engelsk, men så skal det læses som tekst, og navnet skal omkranses af anførselstegn, fx "red" eller 'red'.
Alle sætninger (enkeltstående kodelinjer), skal afsluttes med semikolon ; Processing vil reagere med en fejlmelding, hvis semikolon mangler.
Som andre programmeringssprog bruger Processing også parenteser. Generelt er der tre slags parenteser, nemlig;
De laves således:
( ) Mac: Shift + 8 / shift + 9
[ ]Mac: Option + 8 / Option + 9
{ } Mac: Option + shift + 8 /Option + shift + 9
Almindelige parenteser bruges til:
Grouping and containing expressions and parameters. Parentheses have multiple functions relating to functions and structures. They are used to contain a list of parameters passed to functions and control structures and they are used to group expressions to control the order of execution. Some functions have no parameters and in this case, the space between parentheses isblank.
Firkantede parenteser bruges til:
The array access operator is used to specify a location within an array. The data at this location can be defined with the syntaxarray[element] = valueand read with the syntaxvalue = array[element]as shown in the aboveexample.
Krøllede parenteser
Define the beginning and end of functions blocks and statement blocks such as theforandifstructures. Curly braces are also used for defining initial values in arraydeclarations.
Læs: