SA

Programmering 1 – Introduktion & Grundbegrepp

Vad är ett programspråk?

  • Ett mänskligt språk för att skapa datorprogram.

  • Finns hundratals språk, designade med olika syften.

  • Datorns grundspråk = maskinkod (ettor & nollor).

    • Exempelbitsekvens: 101000101001101\;1001110110110101

  • Ett separat verktyg översätter högnivåkod → maskinkod.

Popularitet (TIOBE-index, procentandelar)
  • Topp-språk 2024: Python, C++, C, Java, C#, JavaScript, Go, Visual Basic, Delphi, Fortran

    • Python ~ 15\text{–}30\% rating senaste åren.

Vad är ett datorprogram?

  • En följd av instruktioner som datorn ska utföra.

  • Instruktion = ett antal bitar (noll/ett).

    • 8 bitar (= 1 byte).

  • När koden lagras direkt som bitar kallas det maskinkod; krävs för att CPU:n ska exekvera.

Assembleringsspråk (lågnivå)

  • Tidiga datorer (t.ex. ENIAC, 1946) krävde fysisk omkoppling & manuella binära instruktioner.

  • Assembler introducerade mnemoteknik (textsymboler):

    • Ex: LOAD A, ADD B, MOV C

  • Kräver ett översättningsprogram (assembler) för att bli maskinkod.

  • Fortfarande låg abstraktionsnivå, men lättare än ren binär.

Högnivåspråk

  • Närmare mänskligt språk ("halvengelska").

  • Exempel: Python, Java, C#, Pascal, FORTRAN, JavaScript.

  • Måste översättas av kompilator eller interpretator innan/medan det körs.

Kompilatorer vs. Interpretatorer

Egenskap

Kompilator

Interpretator

Översätter

Hela programmet → körbar fil (t.ex. .exe)

Rad-för-rad under körning

Exekvering

+ Mycket snabb (ingen översättning vid körning)

- Långsammare (tolkning pågår)

Utveckling

- Kompilering tar tid

+ Snabba tester, interaktiv REPL

Felupptäckt

Många fel fångas innan körning

Fel hittas ofta vid körning

Målgrupp

Stora/krävande program

Nybörjare, skript, prototyper

  • Språk som ofta interpreteras: Python, JavaScript, Ruby, shell-språk.

  • Språk med kompilator: C, C++, C#, Java (byte-kod), Pascal-varianter.

  • Debugging = processen att hitta & åtgärda fel.

Kodexempel – C vs. Assembler ("Hello World")

#include <stdio.h>
#include <stdlib.h>
int main(void) {
    puts("!!! Hello World!!!");
    return EXIT_SUCCESS;
}

Assembler-utdrag (förkortat):

.LC0: .string "!!! Hello World!!!"
main:
    pushq %rbp
    movq $.LC0, %rdi   ; argument till puts
    call  puts
    movl $0, %eax
    popq %rbp
    ret

Visar översättningskedjan: högnivå → assembler → maskinkod.

Programmering i Python

  • Skapat av Guido van Rossum (1991); filändelse .py.

  • Kännetecken: enkel syntax, multiparadigm, stort ekosystem.

  • Kursmål:

    • Ge stabil grund för vidare studier

    • Öva praktiskt samtidigt som teoretisk förståelse byggs

    • Kunskaper överförbara till andra språk

Styrkor & användningsområden
  • Avancerade matematiska beräkningar

  • Grafik & webb (t.ex. Django, Flask)

  • Dataanalys & AI/ML (pandas, NumPy, TensorFlow)

  • Spelutveckling (Pygame)

  • Cybersäkerhet / scripts & automation

Köra Python – fyra vägar

  1. Python online

    • WebIDE: "Python Online 1–4" (olika sajter).

    • Mac/Linux har ofta Python \ge 2.7 förinstallerat.

  2. OneCompiler (https://onecompiler.com)

    • Stöder 60+ språk, inkluderar populära Python-bibliotek.

  3. Lokal installation

    • Ladda ned från https://www.python.org

    • Distribution inkluderar interpretator + standardbibliotek.

  4. IDE-miljöer

    • Syfte: allt-i-ett (kodning, körning, debugging).

    • Rekommenderad IDE i kursen: PyCharm.

    • Andra editor/IDEs:

      • Visual Studio Code, Sublime Text, Spyder, Jupyter Notebook, Atom, Vim, Emacs, IntelliJ IDEA, Notepad++.

Visual Studio Code – snabbguide
  • Steg 1: Hämta och installera VS Code.

  • Steg 2: Öppna Extensions (fyrkants-ikonen) → sök "Python" → klicka Install.

  • Funktioner: IntelliSense, debugging, terminal, Git-integration, virtuell miljö-hantering.

Diskussionsuppgifter (att arbeta i par)

  1. Vad är ett programspråk?

    • Resonera kring syfte, abstraktionsnivåer, historisk utveckling.

  2. Vad är ett datorprogram?

    • Fokusera på instruktioner, bitar, maskinkod.

  3. Vad är assembleringsspråk?

    • För- & nackdelar jämfört med maskin- och högnivåspråk.

  4. Vad är högnivåspråk?

    • Läsbarhet, portabilitet, krav på översättning.

  5. Interpreter vs. Kompilator

    • Identifiera skillnader genom egna exempel.

Sammanfattande begrepp & principer

  • Maskinkod: datorns internspråk, binärform.

  • Assembler: lågnivåspråk med mnemotekniska instruktioner; översätts av assembler.

  • Högnivåspråk: människonära syntax; kräver kompilator eller interpretator.

  • Kompilator: översätter hela koden till fristående körbar fil; snabb körning.

  • Interpretator: tolkar raden/statementet vid exekvering; flexibel & interaktiv.

  • Debugging: systematisk feljakts-process.

  • IDE: integrerat utvecklingsverktyg som effektiviserar kodskrivning och felsökning.

Etik & praktik: Kursen betonar självständighet (ingen ChatGPT), dokumentation, kodkvalitet och reflektion kring programmeringens påverkan på samhället.