Programmeringsbegrepp

Här har vi samlat centrala begrepp och definitioner inom programmering och undervisning i programmering.

Grundbegrepp

Programmering (eng. programming)
Programmering innebär att ge instruktioner, dvs. formulera algoritmer, till en dator eller motsvarande apparatur. Att programmera kan innefatta t.ex. att man analyserar ett problem, utvärderar eventuella lösningar, planerar lösningar, skriver programmeringskoder, testar en programmerad applikation och korrigerar fel. Programmering är datalogiskt tänkande eller algoritmiskt tänkande i praktiken. Man kan t.ex. berätta en historisk berättelse med hjälp av en animation, visualisera ett matematiskt problem eller skapa ett undervisningsspel för elever i de lägre klasserna.

Program (eng. program, application, app)
Ett program är en (stor) algoritm, som utför en viss nyttig funktion. Hit hör t.ex. applikationer i telefoner (appar, t.ex. Whatsapp, Instagram) och datorprogram (textbehandlingsprogram, webbläsare) samt enkla och mera komplicerade program, som man gör själv.

Kodning (eng. coding)
Kodning är en fas i programmeringen, där den egentliga programmeringskoden skapas. Man kan koda t.ex. variabler, slingor och villkorsstrukturer så att programmet utför det man vill. I talspråk används nuförtiden kodning också som synonym till programmering.

Kod (eng. code, program code)
En algoritm eller ett program som har skapats i ett visst programmeringsspråk och som en dator kan utföra, t.ex. Python: “if pris<10: köp()”

Algoritm (eng. algorithm)
En algoritm är en detaljerad beskrivning av de åtgärder som behövs för att utföra en uppgift. Genom att följa en algoritm kan man lösa ett visst problem eller en uppgift eller skapa något nytt. Ett matrecept, noterna till en komposition, uppställning med division och handarbetsbeskrivningar är algoritmer. En algoritm kan skapas t.ex. med hjälp av satser och upprepnings- och villkorsstrukturer.

Algoritmiskt tänkande (eng. algorithmic thinking)
Algoritmiskt tänkande vägleder en att bryta ner ett problem i delar, att söka upprepade regler i anknytning till problemet, att skapa entydiga instruktioner, dvs. algoritmer, och att generalisera och automatisera lösningen. Algoritmiskt tänkande behövs när man skapar t.ex. matrecept, noter, koreografier eller handarbetsbeskrivningar.

Datalogiskt tänkande (eng. computational thinking)
Förmåga att kunna fastställa vilka problem som kan lösas och vilka idéer som kan genomföras med hjälp av ett datorprogram. Det krävs algoritmiskt tänkande och programmering för att uttrycka ett problem i en form som datorn kan tolka.

Programmeringsspråk (eng. programming language)
När en algoritm kodas till en kod som datorn förstår används alltid ett programmeringsspråk, som i allmänhet är textbaserat, ibland visuellt. En del programmeringsspråk lämpar sig för studier i programmering, medan en del används i arbetslivet.

Visuellt programmeringsspråk (eng. visual programming language)
Ett visuellt programmeringsspråk är ett programmeringsspråk där man inte själv behöver skriva koden utan programmet byggs upp av färdiga eller modifierbara ikoner (block). Dessa programmeringsspråk har ofta en mer begränsad uttryckskraft än textbaserade programmeringsspråk. Resultatet av programmeringen kan t.ex. vara ett litet spel, en äventyrlig sagofigur eller en imponerande geometrisk figur. Kända visuella programmeringsspråk är t.ex. Scratch, ScratchJr och Snap.

Sats, kommando (eng. statement, command)
En sats är ett kommando i en kod som datorn utför.

Satsblock, kommandoblock, skript (eng. block, script)
I ett satsblock eller kommandoblock utförs satserna i en viss ordning. Villkorsstrukturer och upprepningsstrukturer kan påverka i vilken prioritetsordning satserna ska utföras.

Villkorsstruktur, villkorssatser (eng. conditional construct, conditional statement)
Villkorsstrukturer innebär att programmet utför olika saker enligt de villkor som har getts. I programmet kan t.ex. en figur röra sig till vänster, om det finns utrymme.

Upprepningsstruktur, upprepningssats, slinga (eng. loop, repetition, iteration)
En upprepningsstruktur upprepar en viss del i programmet flera gånger enligt de villkor som har getts, t.ex. “ta 5 steg framåt” eller “gå framåt tills du är framme”.

Händelse (eng. event)
En händelse är ett begrepp inom programmering som innebär att en kommandoserie utförs när användaren gör vissa saker. Exempel: När man trycker på en knapp, spelar programmet upp ett ljud och en katt i spelet byter riktning eller när klockan är 7.00 ringer en väckningssignal.

Parallellism (eng. parallelism)

Parallellism innebär att programmet utför olika satsblock samtidigt. I många visuella programmeringsspråk uppstår parallellism när man skapar flera satsblock som reagerar på olika händelser i programmet. Om en del reagerar på ett klick och en del när man trycker på en tangent kan delarna utföras samtidigt.

Planering (eng. designing)
Planeringen är en del av programmeringen där man planerar vad programmet ska göra och hur programmeringen ska genomföras.

Testning (eng. testing)
Testning är en del av programmeringen där man testar programmet och försäkrar sig om att programmet eller delar av det (procedurer) fungerar som det ska och producerar rätt resultat.

Felkorrigering (eng. debugging)
En fas i programmeringen där fel i programmet lokaliseras och korrigeras.

Inbyggt system (eng. embedded system)
Ett inbyggt system ingår i en maskin eller apparat som har konstruerats för ett visst ändamål och som styrs av en enkel dator och programmet i datorn. I undervisningen kan man med hjälp av mikrokontrollers t.ex. skapa cykellampor som tänds automatiskt vid skymning eller smarta textilier.

I/O, Input/output (eng. I/O, input/output)
In- och utenheterna i en teknisk apparat, t.ex. i en dator eller robot, som överför data till eller från apparaten. Exempelvis kan en termometer (input) och en elmotor (output) vara kopplade till en mikrokontrollers I/O-portar och programmet kan starta elmotorn vid en viss temperatur.

Fördjupande begrepp

Operator (eng. operator)
Operatorer är symboler som utför en operation i en kod. Till exempel betyder “+”-tecknet ofta addition, “<”-tecknet jämförelse mellan två värden. Operatorn behandlar de uttryck som har matats in och producerar ett returvärde, dvs. den är själv ett uttryck. Exempel: “(3+2)*5” innehåller operatorerna “()”, “+” och “*”.

Jämförelseoperator (eng. comparison operator)
Jämförelseoperatorer är operatorer som används vid jämförelse, t.ex. "==" (lika stor), "!=" (olika stor), ">", "<". I villkorssatser används jämförelseoperatorer till hjälp för beslut. Man kan t.ex. jämföra variabelns värde med konstantens värde och skapa en förgrening i koden, beroende på om variabelns värde är större eller mindre.

Boolesk operator (eng. boolean operator)
Med booleska operatorer drar man logiska slutsatser: och, eller, inte. Exempel: ”pris<10 and pengar>pris” kan berätta om det lönar sig att köpa en produkt.

Aritmetisk operator (eng. arithmetic operator)
Utför en räkneoperation. Typiska operatorer är +, -, *, /, % och parenteser för att ändra ordningsföljden för operationen.

Tilldelningsoperator (eng. assignment operator)
Tilldelningsoperatorer lagrar det tilldelade värdet av uttrycket i en namngiven variabel. I många språk är tilldelningsoperatorn ett likamedstecken. Exempel: “area = bas*hojd” eller “poang = poang+1”.

Variabel (eng. variable)
En variabel är ett namngivet datalager. Data som lagras i variabeln kan t.ex. vara text, siffror eller en bild. Till exempel kan poängen i ett dataspel lagras i en variabel med namnet ”spelarens_poang”, där värdet förändras under spelets gång.

Rekursion (eng. recursion)
En rekursiv funktion är en funktion som anropar sig själv. Med hjälp av rekursion kan man skapa slingor eller lösa problem bit för bit genom att identifiera lösningens elementärfall och fortsätta söka lösningen enligt ”söndra och härska”-metoden. Exempel: När man letar efter ett föremål i en hög kan man dela högen i två delar om och om igen tills föremålet hittas eller högen inte längre kan delas i mindre delar.

Mjukvara (eng. software)
Mjukvaran är en helhet som består av flera dataprogram, de filer som programmen använder och dokumentationen av dem.

Hårdvara (eng. hardware)
Datorer eller en dators fysiska delar, som kan utföra program. Mjukvaran bestämmer vad hårdvaran ska utföra.

Kompletterande begrepp

Uttryck (eng. expression)
Satser består av uttryck. Ett uttryck är en räkneoperation eller någon annan operation där resultatet är ett värde som används i satsen. En jämförelse av två värden (är priset mindre än 10 eller inte?) är ett uttryck som kan användas t.ex. i en villkorsstruktur. Jämför med de matematiska termerna sats och uttryck och de grammatiska termerna mening, sats och fras.

Procedur, underprogram (eng. procedure)
Ett namngivet satsblock som utförs vid anrop. I samband med anropet kan man eventuellt skicka parametrar till proceduren. Procedurer används när samma satsblock behövs på flera ställen i programmet. På så sätt behöver man inte skriva satsblocken flera gånger utan det räcker med att anropa proceduren. Anropet är en sats.

Funktion (eng. function)
En funktion är en procedur som returnerar ett värde. Med hjälp av funktioner kan man skapa abstraktioner och lösa problem på allmän form. Funktionsanropet är ett uttryck. Det värde som funktionen ger ska endast grunda sig på de parametrar som har skickats till funktionen. En funktion kan t.ex. beräkna arean av en rektangel eller det nedsatta priset på en produkt.

Argument/parameter (eng. argument/parameter)
Data som skickas till en procedur vid anrop.

Syntax (eng. syntax)
Det sätt en kod skrivs på eller formuleras i ett programmeringsspråk. Jämför med t.ex. rättstavningsreglerna för ett språk.

Imperativ programmering (eng. imperative programming)
En allmän programmeringsmetod. Programmets tillstånd finns lagrat i variabler, som en kod ändrar med hjälp av tilldelningsoperatorer och upprepnings- och villkorsstrukturer. Programmet utförs i en viss ordning och utförandet påminner mycket om logiken i en dators fysiska utförande. Programmeringsmetoden lämpar sig bra för maskinnära programmering. Undertyper till imperativ programmering är procedurell programmering och objektorienterad programmering.

Funktionell programmering (eng. functional programming)
En programmeringsmetod där man bygger programmet genom att skriva funktioner och kombinera dem till större helheter. Rena funktioner ger alltid samma resultat med samma parametervärden, vilket gör det lättare att lösa ett problem bit för bit och att testa lösningen. Vid programmeringen används t.ex. rekursion för att göra upprepningar.

Sidoeffekter (eng. side effect)
Effekter som inte ingår i en ren funktion, t.ex. att ändra värdet av en variabel med en tilldelningsoperator, läsa och skriva en fil, uppdatera en bild på datorskärmen, skapa ljud eller styra en robotmotor.