diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b416c1d --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.ruby-version +.vscode/* +**/.DS_STORE +docs/index.html \ No newline at end of file diff --git a/chapters/chapter_template_folder/chapter.html b/chapters/chapter_template_folder/chapter.html new file mode 100644 index 0000000..1ad012c --- /dev/null +++ b/chapters/chapter_template_folder/chapter.html @@ -0,0 +1,697 @@ + + + + + + + +Chapter Title Goes Here + + + + + + +
+
+

Wut?

+
+
+
+Sinatra Logo +
+
+
+ + + + \ No newline at end of file diff --git a/chapters/chapter_template_folder/images/logo.png b/chapters/chapter_template_folder/images/logo.png new file mode 100644 index 0000000..061d2ec Binary files /dev/null and b/chapters/chapter_template_folder/images/logo.png differ diff --git a/chapters/combining_strategies/chapter.html b/chapters/combining_strategies/chapter.html new file mode 100644 index 0000000..89b60f3 --- /dev/null +++ b/chapters/combining_strategies/chapter.html @@ -0,0 +1,707 @@ + + + + + + + +Kombinering av verktyg + + + + + + +
+
+

Sammanfogning

+
+ +
+
+
+

Nästning

+
+ +
+
+
+

Ihopvävning

+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/chapters/combining_strategies/images/logo.png b/chapters/combining_strategies/images/logo.png new file mode 100644 index 0000000..061d2ec Binary files /dev/null and b/chapters/combining_strategies/images/logo.png differ diff --git a/chapters/flow_and_state/chapter.html b/chapters/flow_and_state/chapter.html new file mode 100644 index 0000000..3356fd2 --- /dev/null +++ b/chapters/flow_and_state/chapter.html @@ -0,0 +1,737 @@ + + + + + + + +Flöde och State + + + + + + +
+
+
+
+

Att programmera är att ge instruktioner till en dator, eller snarare datorns processor.

+
+
+

En processor kan bara göra en sak åt gången, och instruktionerna utförs därför en efter en, i ett flöde.

+
+
+

Under flödets gång kommer variabler att skapas och deras värden uppdateras.

+
+
+

State är värdet på alla variabler i ett program, vid ett givet tillfälle.

+
+
+

Programmets state ändras alltså allteftersom programmet körs.

+
+
+

Att programmera handlar därför om att skapa ett flöde som bearbetar state och ser till att programmet har rätt state när det är klart.

+
+
+

Man kan alltså se flödet som en serie av transformationer av state.

+
+
+

För att konstruera programmets flöde och för att transformera state finns ett begränsat antal verktyg som används av alla programmerare oavsett vilka program de skriver eller språk de använder.

+
+
+

Genom att kombinera dessa verktyg på olika sätt, kan man skapa alla program.

+
+
+

Verktygen är oberoende av kod, men kan så klart implementeras i kod i valfritt programmeringsspråk.

+
+
+

Den här boken går igenom de verktyg man behöver för att klara Programmering 1 (och antagligen bra mycket mer än så).

+
+
+
+
+

Flödesschema

+
+
+

För att illustrera verktygen används flödesscheman.

+
+
+

Flödesscheman fungerar såhär …​

+
+
+
+
+ + + + \ No newline at end of file diff --git a/chapters/flow_and_state/images/logo.png b/chapters/flow_and_state/images/logo.png new file mode 100644 index 0000000..061d2ec Binary files /dev/null and b/chapters/flow_and_state/images/logo.png differ diff --git a/chapters/goals_and_strategies/chapter.html b/chapters/goals_and_strategies/chapter.html new file mode 100644 index 0000000..37d7695 --- /dev/null +++ b/chapters/goals_and_strategies/chapter.html @@ -0,0 +1,692 @@ + + + + + + + +Mål och Verktyg + + + + + + +
+
+

[exclamation circle] Här behövs text om hur programmerare sätter upp mål- och delmål och hur de använder verktyg för att uppnå dessa mål- och delmål. Gärna med praktiska exempel.

+
+
+ + + + \ No newline at end of file diff --git a/chapters/goals_and_strategies/images/logo.png b/chapters/goals_and_strategies/images/logo.png new file mode 100644 index 0000000..061d2ec Binary files /dev/null and b/chapters/goals_and_strategies/images/logo.png differ diff --git a/chapters/strategies/chapter.html b/chapters/strategies/chapter.html new file mode 100644 index 0000000..ae2a0f6 --- /dev/null +++ b/chapters/strategies/chapter.html @@ -0,0 +1,1792 @@ + + + + + + + +Strategier + + + + + + +
+
+

Ändring av state (transformation)

+
+
+

Tilldelning

+
+

[question circle] Är tilldelning ett verktyg eller räknas det som programming "knowledge"?

+
+
+

För att kunna använda värden (t.ex tal) i program måste man först lagra dem i en variabel. +Att lagra ett värde i en variabel gör man med hjälp av tilldelning.

+
+
+

En tilldelning består av tre komponenter: en variabel, ett tilldelningstecken och ett värde.

+
+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
Tilldelningsverktyget i Ruby
+
+
speed = 10
+
+
+
+
+
+
+
speed = 10
+
+
+
+
+
+
+
const speed = 10;
+
+
+
+
+
+
+
var speed = 10;
+
+
+
+
+
+
+
+

Initialisering

+
+

Initialisering används när man vet att man kommer behöva ett värde som man kan modifiera längre fram i flödet.

+
+
+ + + + + +
+
Note
+
+
Exempel: Summera tal
+
+

När man vill räkna ut summan alla värden i en lista behöver man ha en variabel som innehåller summan. För varje värde i listan vill man sen addera värdet till summa-variabeln. Men för att man ska kunna addera det första värdet i listan till summa-variabeln måste summa-variabeln först vara initialiserad med ett värde, antagligen 0.

+
+
+
+
+ + + + + +
+
Note
+
+
Exempel: Bilspel
+
+

I ett bilspel vill man kunna gasa och bromsa. Både gas- och bromskoden kommer modifiera hastigheten på bilen, men för att hastigheten ska kunna modifieras måste det först skapas en variabel som innehåller hastigheten, och variabeln måste ha initialiserats med ett värde som kan modifieras.

+
+
+
+
+
+Initialiseringsverktyget +
+
+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
speed = 0 (1)
+
+...
+
+if pressed_button == 'w'
+    speed += 1 (2)
+elsif pressed_button == 's'
+    speed -= 1 (2)
+elsif pressed_button == 'esc'
+    speed = 0  (2)
+end
+
+
+
+
    +
  1. +

    Initialisering av speed-variabeln

    +
  2. +
  3. +

    Modifiering av speed-variabeln

    +
  4. +
+
+
+
+
+
+
speed = 0
+
+
+
+
+
+
+
const speed = 0;
+
+
+
+
+
+
+
var speed = 10;
+
+
+
+
+
+
+
+

Inkrementering

+
+

Inkrementering innebär att öka värdet på en variabel. Oftast är värdet ett heltal. Inkrementering används ofta inne i loop-verktygen för att hålla koll på räknar-variabeln, men det går även att använda tillsammans med de olika if-verktygen.

+
+
+

För att inkrementera värdet på en variabel måste variabeln först vara initialiserad

+
+
+
Inkrementering med if och if-elsif
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
healthiness_score = 0 (1)
+
+...
+
+if favourite_drink == 'water'
+    healthiness_score += 1 (2)
+end
+
+if favourite_food == 'fruit'
+    healthiness_score += 1 (2)
+elsif favourite_food == 'carrot'
+    healthiness_score += 2 (2)
+elsif favourite_food == 'pizza'
+    healthiness_score -= 2 (3)
+end
+
+
+
+
    +
  1. +

    Initialisering av healthiness-variabeln

    +
  2. +
  3. +

    Inkrementering av healthiness-variabeln

    +
  4. +
  5. +

    Dekrementering av healthiness-variabeln

    +
  6. +
+
+
+
+
+
+
speed = 0
+
+
+
+
+
+
+
const speed = 0;
+
+
+
+
+
+
+
var speed = 10;
+
+
+
+
+
+
+
Inkrementering i räknande loop
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
number_of_greeted_people = 0 (1)
+
+...
+
+while number_of_greeted_people < number_of_people
+    puts "Hello, nice to meet you!"
+    number_of_greeted_people += 1 (2)
+end
+
+
+
+
    +
  1. +

    Initialisering av number_of_greeted_people-variabeln

    +
  2. +
  3. +

    Inkrementering av number_of_greeted_people-variabeln

    +
  4. +
+
+
+
+
+
+
speed = 0
+
+
+
+
+
+
+
const speed = 0;
+
+
+
+
+
+
+
var speed = 10;
+
+
+
+
+
+
+
+

Dekrementering

+
+

Dekrementering innebär att minska värdet på en variabel. Oftast är värdet ett heltal. Dekrementering används ofta inne i loopar för att hålla koll på räknar-variabeln, men det går även att använda tillsammans med if-verktygen.

+
+
+

För att dekrementera värdet på en variabel måste variabeln först vara initialiserad

+
+
+
Dekrementering med if och if-elsif
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
healthiness_score = 0 (1)
+
+...
+
+if favourite_drink == 'water'
+    healthiness_score += 1 (2)
+end
+
+if favourite_food == 'fruit'
+    healthiness_score += 1 (2)
+elsif favourite_food == 'carrot'
+    healthiness_score += 2 (2)
+elsif favourite_food == 'pizza'
+    healthiness_score -= 2 (3)
+end
+
+
+
+
    +
  1. +

    Initialisering av healthiness-variabeln

    +
  2. +
  3. +

    Inkrementering av healthiness-variabeln

    +
  4. +
  5. +

    Dekrementering av healthiness-variabeln

    +
  6. +
+
+
+
+
+
+
speed = 0
+
+
+
+
+
+
+
const speed = 0;
+
+
+
+
+
+
+
var speed = 10;
+
+
+
+
+
+
+
Dekrementering i räknande loop
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
number_of_laps_left = 5 (1)
+
+...
+
+while number_of_laps_left > 0
+    puts "Running a lap!"
+    number_of_laps_left -= 1 (2)
+end
+
+
+
+
    +
  1. +

    Initialisering av number_of_laps_left-variabeln

    +
  2. +
  3. +

    Dekrementering av number_of_laps_left-variabeln

    +
  4. +
+
+
+
+
+
+
speed = 0
+
+
+
+
+
+
+
const speed = 0;
+
+
+
+
+
+
+
var speed = 10;
+
+
+
+
+
+
+
+

Mellanlagring

+
+

Mellanlagring används när man vill återanvända värdet från en uträkning eller ett funktionsanrop senare i flödet. Exempelvis för att funktionsanropet kräver mycket resurser, tar lång tid att genomföra, eller kräver input från en användare, eller för att det bara blir tydligare kod.

+
+
+ + + + + +
+
Note
+
+
Exempel: Lagra användares initialer
+
+

Istället för att varje gång man vill använda en användares initialer extrahera dessa från variabeln som innehåller användarens namn, kan man extrahera dem en gång och mellanlagra resultatet i en variabel.

+
+
+
+
+ + + + + +
+
Note
+
+
Exempel: Hur många gånger förekommer ordet i boken?
+
+

Ett program ska jämföra vilket av två ord som förekommer flest antal gånger i en bok. Det tar relativt lång tid att söka igenom boken och räkna antalet förekomster av ordet. Därför kan man räkna anatalet förekomster en gång, och lagra resultatet i en variabel, som man sedan använder varje gång man vill använda värdet.

+
+
+
+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
initials = "#{first_name[0].capitalize}.#{last_name[0].capitalize}." (1)
+
+...
+
+puts "Your initials are: #{initials}" (2)
+
+
+
+
    +
  1. +

    Mellanlagring av värdet.

    +
  2. +
  3. +

    Användning av värdet.

    +
  4. +
+
+
+
+
+

Python

+
+
+
+
+

Javascript

+
+
+
+
+

C#

+
+
+
+
+
+
+

Konkatenering

+
+

[question circle] Är det här ett verktyg?

+
+
+
+

Konfigurationslagring

+
+

Konfigurationslagring används när man vill använda ett värde längre fram i flödet, men man vill inte skriva ut värdet direkt, utan vill kunna använda en variabel med ett beskrivande namn istället för att skriva värdet direkt.

+
+
+ + + + + +
+
Note
+
+
Exempel: Priser med och utan moms
+
+

Ett program som ska visa priser med och utan moms. Istället för att skriva pris * 1.25 kan man skriva pris * moms, förutsatt att man i moms-variabeln lagrat värdet 1.25.

+
+
+
+
+ + + + + +
+
Note
+
+
Exempel: Kastbanor med gravitationskonstant
+
+

I ett program som ska räkna ut kastbanor kan man lagra gravitationskonstanten (9.807) i variabeln gravitation och använda den istället för värdet varje gång man behöver använda gravitationskonstanten.

+
+
+
+
+ + + + + +
+
Note
+
+
Exempel: Spara återkommande textfraser
+
+

I Bröderna Lejonhjärta-spelet ska alla vakter avsluta sina meningar med frasen "All makt åt Tengil vår befriare!". Istället för att skriva frasen på alla ställen kan man lagra frasen i en variabel och använda variabeln vid varje tillfälle.

+
+
+
+
+

Konfigurationslagring gör koden tydligare att förstå för oss människor (datorn bryr sig inte), och gör det enklare att ändra - om man behöver ändra det man lagrat behöver man bara ändra på ett enda ställe.

+
+
+
+Sinatra Logo +
+
+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
vat = 1.25 (1)
+
+...
+
+puts "#{price} exkl moms (#{price * vat} inkl. moms)" (2)
+
+
+
+
    +
  1. +

    Konfigurationslagring av momssatsen (vat står för Value Added Tax, (moms på engelska)),

    +
  2. +
  3. +

    Användning av momssatsen.

    +
  4. +
+
+
+
+
+
+
gravitation = 9.807
+
+
+
+
+
+
+
const gravitation = 9.807;
+
+
+
+
+
+
+
var gravitation = 9.807;
+
+
+
+ + + + + +
+
Note
+
+Type inference räknar ut vilken datatyp som lagras i variabeln. Även om det inte står att variabeln innehåller en specifik datatyp kommer variabeln fortfarande vara "låst" till den datatyp som initialt lagrades i variabeln (i det här fallet en int). +
+
+
+
+
+
+
+
+
+

Uppdelning av flöde (selektion)

+
+
+

If

+
+

Om du vill att ditt program ska göra en sak enbart om ett villkor är sant, kan du använda if.

+
+
+

If-verktyget använder ett villkor (ett påstående som kan vara sant eller falskt), och om villkoret utvärderas till sant kommer något ske. +Om villkoret inte utvärderas till sant kommer programflödet fortsätta efter villkoret, som om ingenting hänt.

+
+
+ + + + + +
+
Note
+
+
Exempel: Pris med eller utan moms.
+
+

På en hemsida som framförallt säljer till företag visas priserna utan moms. Men om någon klickat i att de vill se priserna med moms, ska priserna modifieras med momsen

+
+
+
+
+
+If-verktyget +
+
+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
if show_price_with_vat?
+    price = price * vat
+end
+
+
+
+
+
+
+
if show_price_with_vat:
+    price = price * vat
+end
+
+
+
+
+
+
+
null
+
+
+
+
+
+
+
Null
+
+
+
+
+
+
+ + + + + +
+
Note
+
+
Exempel: Ett till exempel
+
+

Exempeltext

+
+
+
+
+
+

If-else

+ +
+
+

If-elsif

+ +
+
+

If-elsif-else

+ +
+
+

Lorem

+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+

Ruby

+
+
+
+
+

Python

+
+
+
+
+

Javascript

+
+
+
+
+

C#

+
+
+
+
+
+
+

Ipsum

+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+

Ruby

+
+
+
+
+

Python

+
+
+
+
+

Javascript

+
+
+
+
+

C#

+
+
+
+
+
+
+
+
+

Upprepning av flöde (iteration)

+
+
+

Räknande Loop

+
+

En räknande loop används när …​

+
+
+

Inkrementerande Loop

+
+

En inkrementerande loop används när …​

+
+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+

Ruby

+
+
+
+
+

Python

+
+
+
+
+

Javascript

+
+
+
+
+

C#

+
+
+
+
+
+
+

Dekrementerande Loop

+
+

En inkrementerande loop används när …​

+
+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+

Ruby

+
+
+
+
+

Python

+
+
+
+
+

Javascript

+
+
+
+
+

C#

+
+
+
+
+
+
+
+

Loop Med Brytvärde

+
+

[exclamation circle] Behöver utvecklas (alla loopar är väl egentligen loopar med brytvärde, men själva intentionen är väl det som skiljer).

+
+
+
+
+
+

Avbrott av flöde

+
+
+

[question circle] Är detta en grupp av verktyg?

+
+
+

Tidigt avbrott

+
+

[question circle] Är detta ett verktyg? (och ska den i så fall ligga här eller under upprepning av flöde?)

+
+
+
+
+
+

Sammansatta verktyg

+
+
+

Iterativt uppbyggd output

+
+

Iterativt uppbyggd output används när man har en mängd data (ofta en lista) att behandla, och output är beroende av datan.

+
+
+

I iterativt uppbyggd output initialiserar man först output-variabeln med ett lämpligt värde som vi sedan kan modifiera.

+
+
+

Sedan itererar man över datan man behöver behandla och modifierar i iterationen output-variabeln (t.ex genom att addera värden till den)

+
+
+

Slutligen, när iterationen är klar kommer output-variabeln innehålla rätt värde, och man kan returnera den.

+
+
+ + + + + +
+
Note
+
+
Exempel: Skapa en lista av alla ord som börjar med en given bokstav i en text
+
+

Först initialiserar vi output-variabeln med lämpligt värde, i det här fallet antagligen en tom lista (som kan innehålla alla ord vi hittar).

+
+
+

Sen itererar vi (med lämpligt verktyg för uppreping av flödet) över orden och i varje varv i iterationen använder vi if-verktyget för att modifiera output-variabel-listan om om ordet börjar med den givna bokstaven.

+
+
+

Slutligen, när iterationen är klar kommer output-variabel-listan innehålla alla ord som efterfrågades, och vi är klara

+
+
+
+
+

Lämpliga värden att initialisera output-variabeln med är ofta:

+
+
+
    +
  • +

    0 (om output ska vara ett tal)

    +
  • +
  • +

    en tom sträng (om output ska vara en sträng)

    +
  • +
  • +

    en tom lista (om output ska vara en lista)

    +
  • +
+
+
+

Men det finns undantag, t.ex kan man ibland initialisera output-variabeln till ett av värdena som finns i mängden man ska behandla.

+
+
+
+

Switch Loop

+
+

[question circle] Är detta ett verktyg?

+
+
+
+Switch Loop? +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/chapters/strategies/images/if-1.png b/chapters/strategies/images/if-1.png new file mode 100644 index 0000000..7c57933 Binary files /dev/null and b/chapters/strategies/images/if-1.png differ diff --git a/chapters/strategies/images/switch_loop.png b/chapters/strategies/images/switch_loop.png new file mode 100644 index 0000000..ab850cc Binary files /dev/null and b/chapters/strategies/images/switch_loop.png differ diff --git a/chapters/strategy_centered_assignments/chapter.html b/chapters/strategy_centered_assignments/chapter.html new file mode 100644 index 0000000..079d3a3 --- /dev/null +++ b/chapters/strategy_centered_assignments/chapter.html @@ -0,0 +1,719 @@ + + + + + + + +Strategibaserade Uppgifter + + + + + + +
+
+

Strategi 1

+
+
+

Uppgift 1

+ +
+
+

Uppgift 2

+ +
+
+
+
+

Strategi 2

+
+
+

Uppgift 1

+ +
+
+

Uppgift 2

+
+
+Sinatra Logo +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/chapters/strategy_centered_assignments/images/logo.png b/chapters/strategy_centered_assignments/images/logo.png new file mode 100644 index 0000000..061d2ec Binary files /dev/null and b/chapters/strategy_centered_assignments/images/logo.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..87b8c39 --- /dev/null +++ b/index.html @@ -0,0 +1,2076 @@ + + + + + + + +Flöde och State + + + + + + + + +
+
+

Flöde och State

+
+
+

Att programmera är att ge instruktioner till en dator, eller snarare datorns processor.

+
+
+

En processor kan bara göra en sak åt gången, och instruktionerna utförs därför en efter en, i ett flöde.

+
+
+

Under flödets gång kommer variabler att skapas och deras värden uppdateras.

+
+
+

State är värdet på alla variabler i ett program, vid ett givet tillfälle.

+
+
+

Programmets state ändras alltså allteftersom programmet körs.

+
+
+

Att programmera handlar därför om att skapa ett flöde som bearbetar state och ser till att programmet har rätt state när det är klart.

+
+
+

Man kan alltså se flödet som en serie av transformationer av state.

+
+
+

För att konstruera programmets flöde och för att transformera state finns ett begränsat antal verktyg som används av alla programmerare oavsett vilka program de skriver eller språk de använder.

+
+
+

Genom att kombinera dessa verktyg på olika sätt, kan man skapa alla program.

+
+
+

Verktygen är oberoende av kod, men kan så klart implementeras i kod i valfritt programmeringsspråk.

+
+
+

Den här boken går igenom de verktyg man behöver för att klara Programmering 1 (och antagligen bra mycket mer än så).

+
+
+

Flödesschema

+
+

För att illustrera verktygen används flödesscheman.

+
+
+

Flödesscheman fungerar såhär …​

+
+
+
+
+
+

Mål och Verktyg

+
+
+

Här behövs text om hur programmerare sätter upp mål- och delmål och hur de använder verktyg för att uppnå dessa mål- och delmål. Gärna med praktiska exempel.

+
+
+
+
+

Strategier

+
+
+

Ändring av state (transformation)

+
+

Tilldelning

+
+

Är tilldelning ett verktyg eller räknas det som programming "knowledge"?

+
+
+

För att kunna använda värden (t.ex tal) i program måste man först lagra dem i en variabel. +Att lagra ett värde i en variabel gör man med hjälp av tilldelning.

+
+
+

En tilldelning består av tre komponenter: en variabel, ett tilldelningstecken och ett värde.

+
+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
Tilldelningsverktyget i Ruby
+
+
speed = 10
+
+
+
+
+
+
+
speed = 10
+
+
+
+
+
+
+
const speed = 10;
+
+
+
+
+
+
+
var speed = 10;
+
+
+
+
+
+
+
+

Initialisering

+
+

Initialisering används när man vet att man kommer behöva ett värde som man kan modifiera längre fram i flödet.

+
+
+ + + + + +
+ + +
Exempel: Summera tal
+
+

När man vill räkna ut summan alla värden i en lista behöver man ha en variabel som innehåller summan. För varje värde i listan vill man sen addera värdet till summa-variabeln. Men för att man ska kunna addera det första värdet i listan till summa-variabeln måste summa-variabeln först vara initialiserad med ett värde, antagligen 0.

+
+
+
+
+ + + + + +
+ + +
Exempel: Bilspel
+
+

I ett bilspel vill man kunna gasa och bromsa. Både gas- och bromskoden kommer modifiera hastigheten på bilen, men för att hastigheten ska kunna modifieras måste det först skapas en variabel som innehåller hastigheten, och variabeln måste ha initialiserats med ett värde som kan modifieras.

+
+
+
+
+
+Initialiseringsverktyget +
+
+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
speed = 0 (1)
+
+...
+
+if pressed_button == 'w'
+    speed += 1 (2)
+elsif pressed_button == 's'
+    speed -= 1 (2)
+elsif pressed_button == 'esc'
+    speed = 0  (2)
+end
+
+
+
+ + + + + + + + + +
1Initialisering av speed-variabeln
2Modifiering av speed-variabeln
+
+
+
+
+
+
speed = 0
+
+
+
+
+
+
+
const speed = 0;
+
+
+
+
+
+
+
var speed = 10;
+
+
+
+
+
+
+
+

Inkrementering

+
+

Inkrementering innebär att öka värdet på en variabel. Oftast är värdet ett heltal. Inkrementering används ofta inne i loop-verktygen för att hålla koll på räknar-variabeln, men det går även att använda tillsammans med de olika if-verktygen.

+
+
+

För att inkrementera värdet på en variabel måste variabeln först vara initialiserad

+
+
+
Inkrementering med if och if-elsif
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
healthiness_score = 0 (1)
+
+...
+
+if favourite_drink == 'water'
+    healthiness_score += 1 (2)
+end
+
+if favourite_food == 'fruit'
+    healthiness_score += 1 (2)
+elsif favourite_food == 'carrot'
+    healthiness_score += 2 (2)
+elsif favourite_food == 'pizza'
+    healthiness_score -= 2 (3)
+end
+
+
+
+ + + + + + + + + + + + + +
1Initialisering av healthiness-variabeln
2Inkrementering av healthiness-variabeln
3Dekrementering av healthiness-variabeln
+
+
+
+
+
+
speed = 0
+
+
+
+
+
+
+
const speed = 0;
+
+
+
+
+
+
+
var speed = 10;
+
+
+
+
+
+
+
Inkrementering i räknande loop
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
number_of_greeted_people = 0 (1)
+
+...
+
+while number_of_greeted_people < number_of_people
+    puts "Hello, nice to meet you!"
+    number_of_greeted_people += 1 (2)
+end
+
+
+
+ + + + + + + + + +
1Initialisering av number_of_greeted_people-variabeln
2Inkrementering av number_of_greeted_people-variabeln
+
+
+
+
+
+
speed = 0
+
+
+
+
+
+
+
const speed = 0;
+
+
+
+
+
+
+
var speed = 10;
+
+
+
+
+
+
+
+

Dekrementering

+
+

Dekrementering innebär att minska värdet på en variabel. Oftast är värdet ett heltal. Dekrementering används ofta inne i loopar för att hålla koll på räknar-variabeln, men det går även att använda tillsammans med if-verktygen.

+
+
+

För att dekrementera värdet på en variabel måste variabeln först vara initialiserad

+
+
+
Dekrementering med if och if-elsif
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
healthiness_score = 0 (1)
+
+...
+
+if favourite_drink == 'water'
+    healthiness_score += 1 (2)
+end
+
+if favourite_food == 'fruit'
+    healthiness_score += 1 (2)
+elsif favourite_food == 'carrot'
+    healthiness_score += 2 (2)
+elsif favourite_food == 'pizza'
+    healthiness_score -= 2 (3)
+end
+
+
+
+ + + + + + + + + + + + + +
1Initialisering av healthiness-variabeln
2Inkrementering av healthiness-variabeln
3Dekrementering av healthiness-variabeln
+
+
+
+
+
+
speed = 0
+
+
+
+
+
+
+
const speed = 0;
+
+
+
+
+
+
+
var speed = 10;
+
+
+
+
+
+
+
Dekrementering i räknande loop
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
number_of_laps_left = 5 (1)
+
+...
+
+while number_of_laps_left > 0
+    puts "Running a lap!"
+    number_of_laps_left -= 1 (2)
+end
+
+
+
+ + + + + + + + + +
1Initialisering av number_of_laps_left-variabeln
2Dekrementering av number_of_laps_left-variabeln
+
+
+
+
+
+
speed = 0
+
+
+
+
+
+
+
const speed = 0;
+
+
+
+
+
+
+
var speed = 10;
+
+
+
+
+
+
+
+

Mellanlagring

+
+

Mellanlagring används när man vill återanvända värdet från en uträkning eller ett funktionsanrop senare i flödet. Exempelvis för att funktionsanropet kräver mycket resurser, tar lång tid att genomföra, eller kräver input från en användare, eller för att det bara blir tydligare kod.

+
+
+ + + + + +
+ + +
Exempel: Lagra användares initialer
+
+

Istället för att varje gång man vill använda en användares initialer extrahera dessa från variabeln som innehåller användarens namn, kan man extrahera dem en gång och mellanlagra resultatet i en variabel.

+
+
+
+
+ + + + + +
+ + +
Exempel: Hur många gånger förekommer ordet i boken?
+
+

Ett program ska jämföra vilket av två ord som förekommer flest antal gånger i en bok. Det tar relativt lång tid att söka igenom boken och räkna antalet förekomster av ordet. Därför kan man räkna anatalet förekomster en gång, och lagra resultatet i en variabel, som man sedan använder varje gång man vill använda värdet.

+
+
+
+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
initials = "#{first_name[0].capitalize}.#{last_name[0].capitalize}." (1)
+
+...
+
+puts "Your initials are: #{initials}" (2)
+
+
+
+ + + + + + + + + +
1Mellanlagring av värdet.
2Användning av värdet.
+
+
+
+
+

Python

+
+
+
+
+

Javascript

+
+
+
+
+

C#

+
+
+
+
+
+
+

Konkatenering

+
+

Är det här ett verktyg?

+
+
+
+

Konfigurationslagring

+
+

Konfigurationslagring används när man vill använda ett värde längre fram i flödet, men man vill inte skriva ut värdet direkt, utan vill kunna använda en variabel med ett beskrivande namn istället för att skriva värdet direkt.

+
+
+ + + + + +
+ + +
Exempel: Priser med och utan moms
+
+

Ett program som ska visa priser med och utan moms. Istället för att skriva pris * 1.25 kan man skriva pris * moms, förutsatt att man i moms-variabeln lagrat värdet 1.25.

+
+
+
+
+ + + + + +
+ + +
Exempel: Kastbanor med gravitationskonstant
+
+

I ett program som ska räkna ut kastbanor kan man lagra gravitationskonstanten (9.807) i variabeln gravitation och använda den istället för värdet varje gång man behöver använda gravitationskonstanten.

+
+
+
+
+ + + + + +
+ + +
Exempel: Spara återkommande textfraser
+
+

I Bröderna Lejonhjärta-spelet ska alla vakter avsluta sina meningar med frasen "All makt åt Tengil vår befriare!". Istället för att skriva frasen på alla ställen kan man lagra frasen i en variabel och använda variabeln vid varje tillfälle.

+
+
+
+
+

Konfigurationslagring gör koden tydligare att förstå för oss människor (datorn bryr sig inte), och gör det enklare att ändra - om man behöver ändra det man lagrat behöver man bara ändra på ett enda ställe.

+
+
+
+Sinatra Logo +
+
+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
vat = 1.25 (1)
+
+...
+
+puts "#{price} exkl moms (#{price * vat} inkl. moms)" (2)
+
+
+
+ + + + + + + + + +
1Konfigurationslagring av momssatsen (vat står för Value Added Tax, (moms på engelska)),
2Användning av momssatsen.
+
+
+
+
+
+
gravitation = 9.807
+
+
+
+
+
+
+
const gravitation = 9.807;
+
+
+
+
+
+
+
var gravitation = 9.807;
+
+
+
+ + + + + +
+ + +Type inference räknar ut vilken datatyp som lagras i variabeln. Även om det inte står att variabeln innehåller en specifik datatyp kommer variabeln fortfarande vara "låst" till den datatyp som initialt lagrades i variabeln (i det här fallet en int). +
+
+
+
+
+
+
+
+

Uppdelning av flöde (selektion)

+
+

If

+
+

Om du vill att ditt program ska göra en sak enbart om ett villkor är sant, kan du använda if.

+
+
+

If-verktyget använder ett villkor (ett påstående som kan vara sant eller falskt), och om villkoret utvärderas till sant kommer något ske. +Om villkoret inte utvärderas till sant kommer programflödet fortsätta efter villkoret, som om ingenting hänt.

+
+
+ + + + + +
+ + +
Exempel: Pris med eller utan moms.
+
+

På en hemsida som framförallt säljer till företag visas priserna utan moms. Men om någon klickat i att de vill se priserna med moms, ska priserna modifieras med momsen

+
+
+
+
+
+If-verktyget +
+
+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+
+
if show_price_with_vat?
+    price = price * vat
+end
+
+
+
+
+
+
+
if show_price_with_vat:
+    price = price * vat
+end
+
+
+
+
+
+
+
null
+
+
+
+
+
+
+
Null
+
+
+
+
+
+
+ + + + + +
+ + +
Exempel: Ett till exempel
+
+

Exempeltext

+
+
+
+
+
+

If-else

+ +
+
+

If-elsif

+ +
+
+

If-elsif-else

+ +
+
+

Lorem

+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+

Ruby

+
+
+
+
+

Python

+
+
+
+
+

Javascript

+
+
+
+
+

C#

+
+
+
+
+
+
+

Ipsum

+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+

Ruby

+
+
+
+
+

Python

+
+
+
+
+

Javascript

+
+
+
+
+

C#

+
+
+
+
+
+
+
+

Upprepning av flöde (iteration)

+
+

Räknande Loop

+
+

En räknande loop används när …​

+
+
+
Inkrementerande Loop
+
+

En inkrementerande loop används när …​

+
+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+

Ruby

+
+
+
+
+

Python

+
+
+
+
+

Javascript

+
+
+
+
+

C#

+
+
+
+
+
+
+
Dekrementerande Loop
+
+

En inkrementerande loop används när …​

+
+
+
+
+
    +
  • +

    Ruby

    +
  • +
  • +

    Python

    +
  • +
  • +

    Javascript

    +
  • +
  • +

    C#

    +
  • +
+
+
+
+

Ruby

+
+
+
+
+

Python

+
+
+
+
+

Javascript

+
+
+
+
+

C#

+
+
+
+
+
+
+
+

Loop Med Brytvärde

+
+

Behöver utvecklas (alla loopar är väl egentligen loopar med brytvärde, men själva intentionen är väl det som skiljer).

+
+
+
+
+

Avbrott av flöde

+
+

Är detta en grupp av verktyg?

+
+
+

Tidigt avbrott

+
+

Är detta ett verktyg? (och ska den i så fall ligga här eller under upprepning av flöde?)

+
+
+
+
+

Sammansatta verktyg

+
+

Iterativt uppbyggd output

+
+

Iterativt uppbyggd output används när man har en mängd data (ofta en lista) att behandla, och output är beroende av datan.

+
+
+

I iterativt uppbyggd output initialiserar man först output-variabeln med ett lämpligt värde som vi sedan kan modifiera.

+
+
+

Sedan itererar man över datan man behöver behandla och modifierar i iterationen output-variabeln (t.ex genom att addera värden till den)

+
+
+

Slutligen, när iterationen är klar kommer output-variabeln innehålla rätt värde, och man kan returnera den.

+
+
+ + + + + +
+ + +
Exempel: Skapa en lista av alla ord som börjar med en given bokstav i en text
+
+

Först initialiserar vi output-variabeln med lämpligt värde, i det här fallet antagligen en tom lista (som kan innehålla alla ord vi hittar).

+
+
+

Sen itererar vi (med lämpligt verktyg för uppreping av flödet) över orden och i varje varv i iterationen använder vi if-verktyget för att modifiera output-variabel-listan om om ordet börjar med den givna bokstaven.

+
+
+

Slutligen, när iterationen är klar kommer output-variabel-listan innehålla alla ord som efterfrågades, och vi är klara

+
+
+
+
+

Lämpliga värden att initialisera output-variabeln med är ofta:

+
+
+
    +
  • +

    0 (om output ska vara ett tal)

    +
  • +
  • +

    en tom sträng (om output ska vara en sträng)

    +
  • +
  • +

    en tom lista (om output ska vara en lista)

    +
  • +
+
+
+

Men det finns undantag, t.ex kan man ibland initialisera output-variabeln till ett av värdena som finns i mängden man ska behandla.

+
+
+
+

Switch Loop

+
+

Är detta ett verktyg?

+
+
+
+Switch Loop? +
+
+
+
+
+
+
+

Kombinering av verktyg

+
+
+

Sammanfogning

+ +
+
+

Nästning

+ +
+
+

Ihopvävning

+ +
+
+
+
+

Strategibaserade Uppgifter

+
+
+

Strategi 1

+
+

Uppgift 1

+ +
+
+

Uppgift 2

+ +
+
+
+

Strategi 2

+
+

Uppgift 1

+ +
+
+

Uppgift 2

+
+
+Sinatra Logo +
+
+
+
+
+
+
+ + + + \ No newline at end of file