Introduktion

Så nærmer vi os afslutningen på dette forløb. I løbet af dette første forløb er du blevet introduceret til grundlæggende datatyper, variabler, sekvenser, betingelser og løkker. Den kommende opgave vil indeholde elementer fra alle de emner, du er blevet præsenteret for. Opret gerne en fane under “Noter” i Teams, hvor du kan skrive dine svar.

Variabler og Datatyper

Hvilke af de nedenstående tildelinger af datatype til variabler er tilladte, og hvilke giver fejl.

  1. int alder = 2;
  2. int nyAlder = 2.5;
  3. char bogstav = ’a’;
  4. char niveau = ’2’;
  5. char bogstav = 4;
  6. char karakter = ’42’;
  7. double rentesats = 2.24;
  8. double rente = 2;
Casting af datatype

Har du f.eks. to int’s, men gerne vil have resultatet ud som et kommatal, bliver du nødt til at fortælle Processing at det er det du vil. Dette hedder casting. Det foregår ved at man i parentes skriver den type man gerne vil have resultatet som foran beregningen. Eksempelvis: double antal = (double) 14/4; Nu bliver antal sat til 3.5. Havde der ikke været casting ville antal være blevet sat til 3.0, fordi resultatet af højre side er division af heltal, og derfor selv et heltal. Heltallet vil så blive omdannet til en double, og derfor giver det 3.0. I dette tilfælde kunne det være lavet ved at skrive 14.0, da dette laver det til en beregning double int, der giver en double som resultat.

Hvilke af de nedenstående, har brug for casting?

  1. int tal = 18 / 7;
  2. float rente = 10 * 2.49;
  3. int udregn = 14.7 + 3 + 19.3;
  4. long linje = 5 + 10;
  5. long areal = 2 * 1 / 2 * 5 * 9 + 2 * 1 / 2 * 5.41 * (4 + 12);
Betingelser
Opgave 1

Lav et program der bruger to variabler til to tal, print in konsollen hvilket tal der er størst. Udvid programmet til også at fortælle om tallene er lige eller ulige tal. Hint: se kapitel 13-2 om Modulus.

if(tal % 2 == 0)
Opgave 2

Skriv et program med en variabel med et tal, og afgør om tallet kan deles med 5. Hvis det ikke kan, så afgør om det kan deles af 3. Hint: Man kan sætte flere if/else inden i hinanden.

Opgave 3

En switch statement ser således ud:

switch(expression) {
case værdi1:
  kode hvis expression har værdi1;
  break;
case værdi2:
  kode hvis expression har værdi2;
  break;
case værdi3:
  kode hvis expression har værdi3;
  break;
case værdi4:
  kode hvis expression har værdi4;
  break;
default:
  kode der udføres hvis ingen andre cases matcher;
  break;
}

Bemærk at der kan være vilkårligt mange case værdier. Det er vigtigt at huske break efter koden for hver case, da koden for den næste case ellers udføres efterfølgende. defalut værdien kan udelades, men hvis man ikke mener at det er nødvendigt kan man jo bruge den til en fejlmeddelse, der viser at man er ramt forbi de andre cases. Her er der et eksempel der tager udgangspunkt i karakterskalaen.

int karakter;
karakter = 4;
switch (karakter) {
case -3:
  println("-3: Ringe præstation");
  break;
case 0:
  println("00: Utilstrækkelig præstation");
  break;
case 2:
  println("02: Tilstrækkelig præstation");
  break;
case 4:
  println("4: Jævn præstation");
  break;
case 7:
  println("7: God præstation");
  break;
case 10:
  println("10: Fortrinlig præstation");
  break;
case 12:
  println("12: Fremragende præstation");
  break;
default:
  println("Det er ikke en karakter");
  break;
}

Lav din egen switch der printer hvilken ugedag det er i ugen baseret på variablens værdi(1 = mandag osv.).

Logiske operatorer
Opgave 1
float theta = 0.0;
void setup() {
  size(480, 270);
}
void draw() {
  background(255);
  // The output of the sin() function oscillates smoothly between 1 and 1.
  // By adding 1 we get values between 0 and 2.
  // By multiplying by 100, we get values between 0 and 200 which can be used as the ellipse's x location.
  float x = (sin(theta) + 1) * width/2;
  // With each cycle, increment theta
  theta += 0.05;
  // Draw the ellipse at the value produced by sine
  fill(0);
  stroke(0);
  line(width/2, 0, x, height/2);
  ellipse(x, height/2, 32, 32);
}
  1. Beskriv hvad koden gør med almindeligt sprog.
  2. Kopier koden ind i Processing.
  3. Tilføj noget kode der gør at når man klikker med musen så skifter bolden retning. Dvs. at bolden starter fra modsatte position end hvad den var i da du klikkede.
Opgave 2

Lav et program der checker om et givet årstal er et skudår. Et år er et skudår hvis det er deleligt med 4, med undtagelse af år, der er delelige med 100. Dog er år der er delelige med 400, skudår.

Loops
Opgave 1

Lav et program, der udskriver tallene fra 1 til 100 på skærmen ved hjælp af en for-loop.

Opgave 2

Lav et program, der summerer tallene fra 1 til 100 og udskriver summen på i konsollen ved hjælp af en while-loop.

Opgave 3

Lav et program, hvor programmet udskriver multiplikationstabellen for et tal (fra 1 til 10) ved hjælp af en for-loop.,

Opgave 4

Lav et program, der udskriver alle de lige tal mellem 1 og 50 ved hjælp af en while-loop. Hint: Brug modulus-operatoren % til at finde de lige tal.

Opgave 5

Lav et program, der udskriver en pyramide af tal som vist nedenfor, hvor brugeren bestemmer, hvor mange rækker der skal være. Hint: Brug en for-loop inde i en anden for-loop for at udskrive tallene.

1
22
333
4444
55555