# Problemlösning med programmering

Vi ska se om vi lärt oss grunderna i programmering genom att försöka lösa några
kortare programmeringsproblem ofta inspiretat av matematik. Problemmen har olika
svårighetsgrader.

Mesta delen av tiden i detta moment kommer gå åt till att lösa
programmeringsuppgifter.

## Olika spår

- Spåret ⬛ för er som satsar på ett högsta betyget. Gör också så många från
  Blått spår som du hinner.
- Spåret 🔷 för er som fick bättre än E i omdöme. Försök göra svarta uppgifter
  om du hinner.
- Spåret 💚 för er som fått F i omdöme eller känner er osäkra. Till vissa
  uppgifter finns det pseudokod som finns som ett lösningsförslag.

## Om uppgifterna

Uppgifterna nedan finns normalt att hämta på https://htsit.se/c. Där vi använder
följande förkortningar:

- VE - Very Easy - Trivial att lösa
- E - Easy - Lätt att lösa utfrån följt en instruktion.
- N- Normal
- H - hard.
- VH -Very Hard
- X - Extreme

Så E10, betyder alltså Easy 10.

## Anndra typer av uppgifter

För problem hämtade från programmeringsolympiaden använder vi följande
konvention: PO2014-1 står för första uppgiften på skolkvalet i
programmeringsolympiaden 2014.

För problem hämtade från adventstävlingar använder vi följande konvention:
J2019-1, står för jultävlingen 2019 första bulletinen.


# Talmagi

X1 Introduktion/Syntax, Små program och spel. Datatyper
X2 Variabler, datatyper, beräkningar
X3 In/output/Statestik/övrigt
X4 Anrop, logiska operatorer, Konverteringar och formler.
X5 Vilkorsatser/Ibland vilkor
X6 For-loopar
X7 Funktioner
X8 Object inklusive klasser
X9 Listor
X0 Bibliotek inklusive koncept så som event, 

# Ideer till fler uppgifter

- Addera kan du bara göra till ett tal

# Tester

En uppgift ska antignen köras i tolkaren eller testas. Om en uppgift 
inte har några test så ska den köras i tolkaren. 

# Definitioner

Välj den kategori som passar bäst.

## Very Easy

- Bara en sak. 
 
Detta betyder att en del uppgifter kommer bara ha vilkor. Eftersom 
vilkor inte är implmenterade och det kan dröja innan de blir så kan det 
vara ett problem.

## Easy

- Varje uppgift ska innehålla ett test.
- Om uppgiften inte innehåller slump. Ska den ha seed.
- Högst ett vilkor till.
- Uppgiften ska ha max två steg förutom test integrationen.
- Tillsamamns ska det finnas minst två krav.

## Normal

- Ska krävas flera än två steg för att lösa uppgiften.
- Vilka steg som krävs ska dock gå att finna utifrån en 
  förstålse av grunläggande programmerings koncept.
- Eller inroduceras API som inte innehåller nya koncept som inte är 
  en del av språket.

## Hard

- De olika stegen för att lösa uppgiften ska inte var självklara utan 
  kräver en viss del av planering.

## Very Hard

- Uppgiftern kan ta lång tid att lösa även för dem som vet hur algorithmen ska vara.

# Special egenskaper

```js
{
previus:
next:
random: true
dynamic: true
interpreter: true
copy: true
}
```

# kopiera

copy: true

# Test finns inte m,en borde göra det.
test: false

