~~NOTOC~~ ==== Øvelse 1 - Der er rod i mit array ==== Ordene i mit sprit nye array har den forkerte rækkefælge :-O. String[] words = {"over", "quick", "lazy", "fox", "brown", "The", "the", "dog", "jumps"}; - Lav først en funktion **printStringArray** der tager et string array som parameter, og skriver det ud. - Byt om elementer i Array så de står i den rigtige rækkefølge, og udskriv igen Array med din **printStringArray** funktion. - Lav nu en funktion **swapElements** til at håndtere det at skulle bytte om på to elementer i array. swapElements skal tage de to **index** der skal byttes om som parameter. * Brug nu denne funktion istedet til at bytte om på elementer i array. String[] words = {"over", "quick", "lazy", "fox", "brown", "The", "the", "dog", "jumps"}; printStringArray(words); swapElements(0, 5); swapElements(2, 4); swapElements(4, 8); swapElements(7, 8); printStringArray(words); void swapElements(int a, int b) { // din kode som bytter plads på to elementer i array. } void printStringArray(String[] arr) { // // Her anvender du en løkke til at udskrive Array et element ad gangen. // } ---- ==== Opgave 2: Tegn Et Liniediagram ==== **Mål:** Lære at bruge arrays til at tegne et linjediagram. * **Beskrivelse:** Opret et array af data og brug en funktion til at tegne linjer mellem punkterne i diagrammet. **Kodeeksempel:** int[] data = {50, 80, 150, 120, 90, 160, 110, 130, 170, 200}; void setup() { size(500, 400); drawLineChart(data); } void drawLineChart(int[] values) { stroke(0); noFill(); // Her skal du gennemløbe array og tegne et liniestykke for hvert element. } * Antag at X tilvæksten er 20-40 pixels * **Ekstra:** Tilføje akseetiketter og ændre linjens farve. ---- ==== Opgave 3 Visualisér temperaturudvikling i vandbad ==== === 🎯 Formål === Du skal bruge arrays og funktioner i Processing til at visualisere temperaturmålinger over tid i et vandbad. Du lærer at: * gemme måledata i arrays * bruge funktioner til at strukturere din kode * tegne søjlediagrammer * (ekstra) farvekode søjler afhængigt af en grænseværdi === 🔬 Fysik === I faget Fysik har du varmet vand i et bægerglas og målt temperaturen **hvert minut** i 10 minutter. Du skal nu visualisere, hvordan temperaturen har ændret sig over tid, og gøre det med god kodestil ved at bruge funktioner. === 🧩 Opgave – trin for trin === === ✅ Del 1 – Temperaturdata === * Opret et array i Processing med følgende temperaturmålinger: float[] temperatur = {20, 25, 30, 35, 42, 51, 61, 68, 75, 82, 90}; * Hver værdi repræsenterer temperaturen efter 0, 1, 2, ..., 10 minutter. === Opret og brug funktioner === * For at få en god struktur på din kode opret følgende funktioner: * **void drawGraph(float[] data, float threshold)** * **void drawBar(float x, float value, float w, int index, float threshold)** * **void drawThresholdLine(float threshold)** * Kald dem inde fra `draw()`. ==== Hints ==== ++++ Hint: draw() og drawGraph() | void draw() { background(255); drawGraph(temperatur, threshold); drawThresholdLine(threshold); } void drawGraph(float[] data, float threshold) { float barWidth = width / data.length; for (int i = 0; i < data.length; i++) { float x = i * barWidth; drawBar(x + 10, data[i], barWidth - 20, i, threshold); } } ++++ ++++ Hint: drawBar() | void drawBar(float x, float value, float w, int index, float threshold) { float barHeight = map(value, 0, 100, 0, height - 60); float y = height - barHeight - 20; if (value > threshold) { fill(255, 0, 0); // Rød } else { fill(0, 100, 255); // Blå } rect(x, y, w, barHeight); fill(0); text(value + "°C", x + w / 2, y - 5); text(index + " min", x + w / 2, height - 5); } ++++ ++++ Hint: drawThresholdLine() | void drawThresholdLine(float threshold) { float y = height - map(threshold, 0, 100, 0, height - 60) - 20; stroke(200, 0, 0); line(0, y, width, y); noStroke(); fill(200, 0, 0); text("Threshold: " + threshold + "°C", width - 100, y - 10); } ++++ === Ekstra Ekstra – Farvekod søjlerne === * Opret en variabel: ''float threshold = 60;'' * Hvis temperaturen er **over threshold**, farv søjlen **rød** * Ellers farv den **blå** * Brug `drawThresholdLine()` til at vise en tydelig grænse ---- ==== Øvelse 4: Stacked Bar Graph ==== **Mål:** Lære at bruge 2D-arrays og tegne et stacked bar chart. * **Beskrivelse:** Opret et 2D-array for at gemme lagene i et stacked bar chart og tegn hver bar ved at stable lagene ovenpå hinanden. **Kodeeksempel:** int[][] stackedData = { {100, 50, 30}, // Bar 1: 100 + 50 + 30 {120, 60, 20}, // Bar 2: 120 + 60 + 20 {90, 40, 10}, // Bar 3: 90 + 40 + 10 {150, 70, 30}, // Bar 4: 150 + 70 + 30 }; void setup() { size(500, 400); drawStackedBarGraph(stackedData); } void drawStackedBarGraph(int[][] values) { int barWidth = width / values.length; for (int i = 0; i < values.length; i++) { float x = i * barWidth; float y = height; for (int j = 0; j < values[i].length; j++) { fill(100 + j * 50, 150, 255); y -= values[i][j]; rect(x, y, barWidth - 10, values[i][j]); } } } * **Øvelse:** Prøv at ændre farverne eller tilføje labels til de forskellige sektioner af hver bar.