729g46 informationsteknologi och programmering
TRANSCRIPT
![Page 2: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/2.jpg)
Igår⁃ Datorn
Turingmaskinen som teoretisk modell av en generell beräkningsmaskin
von Neumann-arkitekturen med lagrade program
⁃ Operativsystem och tillämpningsprogram
⁃ Terminalen och skalprogrammet som textbaserat gränssnitt
![Page 3: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/3.jpg)
⁃ Forts. terminalen
⁃ Program och programmeringsspråk
maskinkod till text, tur och retur
⁃ Programmeringsspråket Python
⁃ Skriva och köra pythonprogram
Föreläsningsöversikt
![Page 4: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/4.jpg)
ThinLinchttps://www.ida.liu.se/local/students/remote/index.sv.shtml
![Page 5: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/5.jpg)
Terminalen som gränssnitt
![Page 6: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/6.jpg)
Varför använda ett textbaserat gränssnitt⁃ Syfte: miljö för att utveckla och köra egna program
⁃ Enklare (färre rörliga delar):
Output: text (en rad/tecken i taget)
Input: textkommandon
⁃ Kraftfullt
⁃ Jämfört med grafiskt gränssnitt:
Output: fönster med olika interaktiva grafiska komponenter
Input: musposition, musklick, tangenttryckningar, objekt som dras och släpps m.m.
![Page 7: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/7.jpg)
"Terminalen"⁃ Terminalprogrammet tillhandahåller funktionalitet för
program att visa text och ta emot tangentbordstryck från användaren.
⁃ Terminalprogrammet kör ett skalprogram: bash (Bourne Again SHell) som tillhandahåller ett interaktivt gränssnitt för att köra kommandon
⁃ Prompt: sekvens av tecken som visar att skalet är redo att ta emot ett kommando.
⁃ Tecknet $ används ofta för att representera prompten.
![Page 8: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/8.jpg)
"Skriva kommandon"⁃ I terminalen kan man köra inbyggda kommandon,
kompilerade program och skript
⁃ Ingen skillnad på kommandon, program och skript till "utseendet"
⁃ Både kommandon och program körs genom att rätt ord skrivs i prompten
⁃ Jämförelse med grafiskt gränssnitt: "i gränssnittet kan du klicka på knappar, program och skript"
⁃ I kursen kommer ordet "kommando" att användas för att referera till alla varianter
![Page 9: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/9.jpg)
Argument⁃ De flesta kommandon tar emot argument
⁃ Som användare använder vi argument för att styra ett programs beteende
⁃ Syntax för kommando + argument:
$ kommando argument1 argument2
![Page 10: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/10.jpg)
Sökväg⁃ Beskrivning av en plats i filsystemet
⁃ Filsystem: består av kataloger och filer
Kataloger kan innehålla kataloger och filer
Filer innehåller data
⁃ Tecknet / används som skiljetecken mellan namnet på en katalog och kataloger eller filer som ligger i den
![Page 11: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/11.jpg)
Filsystemets trädstruktur⁃ katalog1
⁃ katalog1/katalog1_1
⁃ katalog1/katalog1_1/fil4
⁃ katalog2/hejsan/hoppsan/fallerallera
![Page 12: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/12.jpg)
Rot-, arbets- föräldra- och hemkatalog⁃ Toppen av filträdet, "roten": /
⁃ Aktuell katalog (arbetskatalog): ./
⁃ Föräldrakatalog: ../
⁃ Din användares hemkatalog: /home/<liuid>
/home/jodfo01
![Page 13: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/13.jpg)
Absoluta och relativa sökvägar⁃ Absolut sökväg har med roten
/courses/729G46/kursmaterial/temauppg1
/home/jodfo01/katalog1/fil1
/home/jodfo01/katalog1/katalog2/fil2
/home/jodfo01/katalog1/katalog3/fil3
⁃ Relativ sökväg har inte med roten och utgår från aktuell arbetskatalog (katalogen man står i)
kursmaterial/temauppg1
katalog1/fil1
../katalog3/fil3
![Page 14: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/14.jpg)
Exempel på kommandon⁃ echo: skriver ut dess argument
⁃ ls: visar innehåll i katalog
⁃ cd: byter katalog
⁃ mv: flytta fil eller katalog
⁃ mkdir: skapa katalog
⁃ cat: skriv ut innehåll i fil
⁃ touch: skapa ny fil/uppdatera senast ändrad hos existerande fil
⁃ man: hjälptext för kommando
![Page 15: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/15.jpg)
Från data till program som körs
![Page 16: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/16.jpg)
Från data till program?⁃ which ls
/bin/ls
⁃ Vad händer när jag kör programmet ls?
![Page 17: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/17.jpg)
Program, process, processor⁃ Starta program:
Programmet läses från lagring in till minnet
Operativsystemet skapar en process för programmet
Processen körs på processorn
⁃ Processen tilldelas minne och andra resurser
⁃ Operativsystemet hanterar processen och ser till att den sköter sig.
Process Program
Processor
![Page 18: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/18.jpg)
Hur ser programmet ut i minnet?
![Page 19: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/19.jpg)
Bandet i turingmaskinen⁃ . . . men om det bara finns ettor och nollor i datorn? Räcker två symboler?
⁃ Vi kan få fler symboler genom att titta på grupper av ettor och nollor.
⁃ 0/1 en bit
⁃ 8 bitar = 1 byte
⁃ 1 byte kan ha 256 olika värden (0-255 decimalt, eller 0-FF hexadecimalt)
⁃ Ettor och nollor: binära talsystemet
0: 0 1: 1 10: 2 11: 3 100: 4 101: 5
![Page 20: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/20.jpg)
Programmering på låg nivå
![Page 21: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/21.jpg)
CPU + MinneEtt program sett från den lägsta abstraktionsnivån:
⁃ numeriska värden i minnet som representerar instruktioner
⁃ läses och avkodas av processorn som sedan utför den avkodade instruktionen
⁃ Ettor och nollor: binära talsystemet
0: 0 1: 1 10: 2 11: 3 100: 4 101: 5
![Page 22: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/22.jpg)
Maskinkod⁃ Numerisk sekvens i minnet: 184, 0, 184, 142, 216, 198, 6, 158, 15, 36, 205, 32
⁃ Resultat på en PC som kör MS-DOS: ett dollartecken i vänstra nedersta hörnet på skärmen.
⁃ Det tar extremt lång tid att programmera genom att skriva maskinkod.
![Page 23: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/23.jpg)
Programmeringsspråk⁃ Minns von Neumann arkitekturen
⁃ Skriva program som översätter text till maskinkod
⁃ Låg-nivå språk som liknar motsvarar maskinkod till väldigt stor grad: Assembler (eng. assembly language)
⁃ Översätts till maskinkod av en assemblator (eng. assembler)
![Page 24: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/24.jpg)
(från siffror till text)⁃ binära talsystemet till
hexadecimala talsystemet: 0123456789ABCDEF
decimala talsystemet: 0123456789
⁃ Tolka siffror som bokstäver, teckenkodning
![Page 25: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/25.jpg)
Assembler
MOVAX,47104MOVDS,AXMOV[3998],36INT32Exempelfrånhttp://www.swansontec.com/sprogram.html
![Page 26: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/26.jpg)
Lågnivåprogrammering⁃ Maskinkod
⁃ Assemblerkod
![Page 27: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/27.jpg)
Ökad abstratktionsnivålågnivå-språk till högnivå-språk
ökande abstraktionnivå på våra "kommandon"
![Page 28: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/28.jpg)
Kompilering och interpretering⁃ Två strategier för att gå från text till maskinkod
⁃ Kompilering ~ översättning av kod i förväg
+ process för att göra kompilerade koden körbar = exekverbar fil
⁃ Interpretering ~ simultantolkning av kod
En programtolk "läser" källkod och utför det som står i koden. programtolken står för att ge processorn instruktioner / skapa maskinkod.
![Page 29: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/29.jpg)
Högnivåprogrammering⁃ Python
⁃ Java
⁃ JavaScript
⁃ C#
![Page 30: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/30.jpg)
Programmeringsspråket Python
![Page 31: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/31.jpg)
Kort om Python⁃ Födelsedatum: sent 80-tal
⁃ Skapare: Guido van Rossum
⁃ Fyllde 2.0 i oktober 2000
⁃ Fyllde 3.0 i december 2008
⁃ Idag: 3.7.4 och 2.7.15
⁃ Interpreterat, men det finns en uppsjö av möjligheter
⁃ Stöd för flera olika programmeringsparadigm
⁃ Populärt som "nybörjarspråk"
⁃ Finns till flera plattformer, även inbäddade system
![Page 32: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/32.jpg)
Stort community⁃ Konferenser runt om i världen av olika storlek
⁃ Många, ramverk som används i produktion inom många områden
15november2018. h0ps://blog.github.com/2018-11-15-state-of-the-octoverse-top-programming-languages/
![Page 33: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/33.jpg)
Skriva och köra pythonprogram
![Page 34: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/34.jpg)
Datormiljön på IDA⁃ Operativsystem: Linux (Ubuntu)
⁃ Inloggning med LiU-ID
⁃ Möjlighet att logga in från egen dator via ThinLinc
https://www.ida.liu.se/local/students/remote/index.sv.shtml
![Page 35: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/35.jpg)
Två sätt1.Interaktivt genom att skriva in ett kommando i taget
2.Genom att skriva programmet i förväg
⁃ Interaktiv användning: använda IDE eller starta Python i terminalen
⁃ Skriva program i förväg: skriv programkod i textfil och starta Python och ange textfilen som program
![Page 36: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/36.jpg)
Interaktiv användning⁃ Starta pythontolken genom att skriva kommando i
terminalen
python3
eller
ipython3
⁃ Avsluta med Ctrl-D
![Page 37: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/37.jpg)
Köra ett program som skrivits i förväg⁃ Gör så här:
1. Starta en text-editor
2. Skriv kod och spara fil.
3. Från terminalen, kör programtolken och skicka sökvägen till textfilen med pythonkoden som argument
⁃ Exempel
$ python3 hello.py
![Page 38: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/38.jpg)
Beståndsdelar i ett programvärden (value): t.ex. siffror eller text (kallas för strängar)
![Page 39: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/39.jpg)
Datatyper: Heltal och flyttal⁃ De flesta programmeringsspråk skiljer på heltal och
decimaltal (eller flyttal som det kallas för inom datavetenskapen)
⁃ Flyttal och heltal är olika datatyper, float och int
⁃ Flyttal skrivs i Python med punkt. Exempel: 1.0, 3.1415, -4.5
⁃ Heltal skrivs som vanligt. Exempel: 1, -10, 6000
⁃ Både flyttal och heltal kan vara antingen positiva eller negativa i Python.
![Page 40: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/40.jpg)
Datatyp: sträng⁃ En sträng är en sekvens av tecken.
⁃ Skiljer på sträng och variabel genom att en sträng skrivs inom citattecken.
"Ada"
"boll"
"far är rar"
![Page 41: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/41.jpg)
Beståndsdelar i ett programoperatorer (operators): token/symbol som likt en funktion appliceras på värden
![Page 42: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/42.jpg)
Matematiska operatorer⁃ Matematiska operatorer
addition: +
subtraktion: -
multiplikation: *
division: /
division trunkerat till närmaste heltal //
modulo (rest vid division): %
![Page 43: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/43.jpg)
Användning av operatorer⁃ Operatorer vi kan använda på siffror
5 + 5 → 10
10 - 198 → -188
8.9 * 10 → 89.0
29 / 3 → 9.666666666666666
29 // 3 → 9
29 % 3 → 2
⁃ Operatorer vi kan använda på strängar
"hej" + "san" → "hejsan"
"hej" * 2 → "hejhej"
![Page 44: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/44.jpg)
Beståndsdelar i ett programvariabler (variable): namngivna referenser till värden
uttryck (expression): ett uttryck kan beräknas till ett värde (ibland säger man även utvärderas istället för beräknas)
![Page 45: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/45.jpg)
Variabler, tilldelning och uttryck⁃ Tilldelning: =
⁃ Exempel
x = 5
x = 7 + 9
voltage = 5 * (3 + 6)
⁃ Variabeln i vänsterledet tilldelas värdet till i högerledet.
⁃ Om högerledet är ett uttryck beräknas det innan tilldelningen kan ske
⁃ Ett uttryck kan beräknas till ett värde
⁃ Exempel på uttryck:
användning av operatorer
funktionsanrop
![Page 46: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/46.jpg)
Variabler, tilldelning och uttryck⁃ För att öka värdet på en variabel med 1 skrivs
min_variabel = min_variabel + 1
⁃ Nedanstående förkortade syntax kan också användas
min_variabel += 1
⁃ Följande förkortningar finns
+=
-=
*=
/=
![Page 47: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/47.jpg)
Funktionsanrop, en typ av uttryck⁃ En funktion, definierad med matematisk notation
f(x) = 2x
⁃ Ett anrop till funktionen, vi "stoppar in ett värde"
f(10) → 20
⁃ Ett funktionsanrop är ett uttryck som beräknas till ett värde.
![Page 48: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/48.jpg)
Inbyggda funktioner för omvandling mellan datatyper⁃ Ett heltal kan omvandlas till ett flyttal genom att använda
funktionen float(). Exempel: float(5)→ 5.0
⁃ Flyttal kan omvandlas till ett heltal genom att använda funktionen int(). Vid omvandlingen huggs alla decimaler bort. Exempel: int(3.1415) → 3
⁃ Vill man ha avrundning används funktionen round(). Som också kan ta emot ett andra argument för antal decimaler. Exempel:
round(3.1415) → 3
round(3.1415, 2) → 3.14
![Page 49: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/49.jpg)
print() - en inbyggd funktion som skriver ut värdenprint("Hej")
x=56namn="Beata"
print(namn)
print(x+487)
![Page 50: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/50.jpg)
Beståndsdelar i ett programnyckelord (keywords): speciella ord som refererar till instruktioner som ska utföras
skiljetecken (punctuators)
![Page 51: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/51.jpg)
Definiera en funktion i Pythondeff(x):return2*x
resultat=f(10)
Med hjälp av nyckelorden def och return samt skiljetecknet : kan vi definiera funktionen f(x) = 2x i Python.
När funktionen anropas returnerar den värdet som fås när uttrycket 2*x beräknas.
![Page 52: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/52.jpg)
Beståndsdelar i ett programsats (statement): fullständig instruktion
![Page 53: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/53.jpg)
Satser och uttryck⁃ En sats motsvarar "en mening", dvs minsta beståndsdelen i
programmeringsspråk som har betydelse.
⁃ Exempel på satser:
uttryck
korrekt användning av nyckelord
⁃ Ett uttryck kan beräknas till ett värde (ibland säger man även utvärderas istället för beräknas)
⁃ Exempel på uttryck
användning av operatorer
funktionsanrop
![Page 54: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/54.jpg)
Nyckelord och betydelsebärande tecken⁃ Vissa ord har speciell betydelse i Python
def
return
⁃ Korrekt användning av nyckelord ger oss en sats.
⁃ Vissa tecken används på samma sätt som skiljetecken i naturligt språk. Exempel:
nyckelord som påbörjar ett block har ett : innan första raden på det nya blocket
tecknet # påbörjar en kommentar, resten av raden ses inte som Pythonkod.
![Page 55: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/55.jpg)
Block⁃ Vissa nyckelord påbörjar ett eget block (t.ex. nyckelordet def)
⁃ För att visa vad som ingår i ett block används indentering i Python
⁃ Indentering: inskjutning av textrad med tab-tecken eller blankstegstecken (standard är 4 blanksteg per nivå)
![Page 56: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/56.jpg)
Funktioner i Python⁃ Definition av funktion med matematisk notation:
f(x) = 2 * x
⁃ Definition av samma funktion i Python
deff(x):return2*x
Syntax:
deffunktionsnamn(argument1,argument2,...,argumentN):sats1sats2sats3...
![Page 57: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/57.jpg)
Beståndsdelar i ett program⁃ värden (value): t.ex. siffror eller text (kallas för strängar)
⁃ operatorer (operators): token/symbol som står för en instruktion
⁃ variabler (variable): namngivna referenser till värden
⁃ uttryck (expression): ett uttryck kan beräknas till ett värde (ibland säger man även utvärderas istället för beräknas)
⁃ nyckelord (keywords): speciella ord som refererar till instruktioner som ska utföras
⁃ skiljetecken (punctuators)
⁃ sats (statement): fullständig instruktion
![Page 58: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/58.jpg)
Mer om strängar
![Page 59: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/59.jpg)
Datatypen str⁃ Datatypen str (eng. string) används för att representera en
sekvens av tecken, kallas för teckensträng eller sträng
⁃ Tecken som ingår i en sträng omges av enkel- eller dubbelcitattecken
⁃ Exempel
"hej"
'hej'
"detta är en längre sträng"
![Page 60: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/60.jpg)
Osynliga tecken⁃ Vissa tecken är "osynliga", t.ex. tab och radbryt
⁃ För att skriva dem används följande teckenkombinationer
tabtecken: "\t"
radbryt: "\n"
![Page 61: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/61.jpg)
Operatorer som kan användas med strängar⁃ Följande operatorer kan användas med strängar
+: slår ihop två strängar och returnerar en ny sträng
*: returnerar en sträng som slagits ihop med sig själv ett antal gånger
⁃ Exempel
namn = "Ada"
hälsning = "Hej på dig "
print(hälsning + namn)
print("hej" * 5)
![Page 62: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/62.jpg)
Åtkomst av tecken på en viss position i en sträng⁃ Vi kan använda följande syntax för att komma åt ett tecken
på en viss position i en sträng
sträng[index]
⁃ index är ett heltal
⁃ Strängars index börjar på 0, dvs sträng[0] är det första tecknet i variabeln sträng.
⁃ Negativa index kan användas för att titta "bakifrån"
sträng[-1]
ger det sista tecknet i variabeln sträng.
![Page 63: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/63.jpg)
Längden på en sträng⁃ För att ta reda på hur många tecken en sträng innehåller
kan funktionen len() användas.
⁃ Exempel
namn = "Alfred"
namnlängd = len(namn)
print(namnlängd)
![Page 64: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/64.jpg)
Delsträngar⁃ Vi kan även plocka fram delar av en sträng
⁃ sträng[gräns1:gräns2] från gräns1 till gräns2
⁃ sträng[:gräns2] från början till gräns2
⁃ sträng[gräns1:] från gräns1 till slutet
namn = "Birgitta"
print(namn[1:4])→ "irg"
B i r g i t t a0 1 2 3 4 5 6 7 8
-8 -7 -6 -5 -4 -3 -2 -1
![Page 65: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/65.jpg)
Input från användaren⁃ Den inbyggda funktionen input(prompt) visar strängen
prompt och väntar på att användaren ska skriva in något följt av enter. Funktionen returnerar sedan en sträng som innehåller det användaren skrev in.
⁃ Exempel
svar=input("Skrivnågotföljtaventer:")print("Duskrev:"+svar)
![Page 66: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/66.jpg)
Omvandla mellan datatyper⁃ Vi kan använda funktionen str() för att få en sträng-
representation av vilket värde som helst.
⁃ Exempel:
str(3.1415) → "3.1415"
str(True) → "True"
![Page 67: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/67.jpg)
Datatypen list
![Page 68: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/68.jpg)
Datatypen list⁃ Används för att lagra en sekvens av värden.
⁃ Listor är också värden, dvs en lista kan innehålla listor (som i sin tur kan innehålla listor osv)
⁃ Syntax:
studenter = ["Ada", "Bertil", "Cecilia"]
⁃ Det går bra att blanda datatyper i en lista:
diverse = [5, 3.0, "rosa", [100, 200, 300]]
⁃ Precis som med strängar använder vi index för att komma åt ett värde på en viss position.
⁃ Index för listor börjar också på 0.
![Page 69: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/69.jpg)
Del-listor⁃ Vi kan även plocka fram delar av en lista
⁃ lista[gräns1:gräns2] från gräns1 till gräns2
⁃ lista[:gräns2] från början till gräns2
⁃ lista[gräns1:] från gräns1 till slutet
teckenlista = ["B", "i", "r", "g", "i", "t", "t", "a"]
print(teckenlista[1:4])→ ["i", "r", "g"]
B i r g i t t a0 1 2 3 4 5 6 7 8
-8 -7 -6 -5 -4 -3 -2 -1
![Page 70: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/70.jpg)
Operatorer som kan användas med listor⁃ Operatorn + kan användas för att slå ihop två listor till en
ny lista.
⁃ Exempel frukter1=["äpple","päron"]frukter2=["apelsin","banan"]alla_frukter=frukter1+frukter2
print(alla_frukter)
![Page 71: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/71.jpg)
Ändra på ett värde i en lista⁃ Vi kan ändra värdet på en viss position i en lista med en
tilldelning:
värden = [1, 2, 3, 4]
print(värden)
värden[2] = "hoppsan"
print(värden)
![Page 72: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/72.jpg)
Lägga till nytt värde till slutet på en listafrukter=["apelsin"]print(frukter)
frukter=frukter+["banan"]print(frukter)
![Page 73: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/73.jpg)
Lägga till nytt värde till början på en listafrukter=["apelsin"]print(frukter)
frukter=["banan"]+frukterprint(frukter)
![Page 74: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/74.jpg)
Metoder - speciella funktioner som hör ihop med värdencharacters1=["a","b","c"]
#metodenlist.append(value)läggertillvaluetillenlistacharacters1.append("d")
print(characters1)#kommerskrivaut["a","b","c","d"]
characters2=["e"]
#användningavoperatorn+medlistorändrarintepåoperanderna#nedanståendeuttryckkommerberäknas,menresultatetsparasintecharacters1+characters2
![Page 75: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/75.jpg)
Moduler
![Page 76: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/76.jpg)
Moduler⁃ Specialiserade funktioner m.m. kan göra tillgängliga t.ex.
genom att importera moduler i sin Python-kod
⁃ Varje fil med Python-kod kan användas som en modul.
⁃ Ett antal moduler följer med Python
![Page 77: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/77.jpg)
Moduler⁃ tillhandahåller ytterligare funktionalitet, t.ex. funktioner
⁃ Exempel på moduler som följer med Python
random: har t.ex. funktioner som returnerar slumpvärden
sys: funktioner m.m. som har med systemet att göra
os: funktioner m.m. som har med operativsystemet att göra
![Page 78: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/78.jpg)
Import av modul och exempel på användning⁃ För att få tillgång till en modul behöver den importeras med
nyckelordet import
⁃ Standard är att lägga alla importsatser i början av textfilen.
importrandom
#funktionenrandom()imodulenrandomreturnerarettslumpmässigt#flyttalmellan0.0och1.0slumpvärde1=random.random()
#funktionenrandint(heltal1,heltal2)imodulenrandomreturnerarett#slumpmässigtheltalfrånheltal1tillochmedheltal2.slumpvärde2=random.randint(10,90)
![Page 79: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/79.jpg)
Import, namnrymder, punktnotation⁃ import random
⁃ Ovanstående laddar in innehållet i modulen random och ser till att det hamnar i namnrymden random
⁃ Funktionen randint(heltal1, heltal2) i modulen random kommer man då åt genom random.randint(heltal1, heltal2)
⁃ Man kan också importera innehållet i en modul och låta det hamna i samma namnrymd som resten av koden i filen:
⁃ from random import *
⁃ Då kommer man åt funktionen randint(heltal1, heltal2) utan att ange namnrymd.
![Page 80: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/80.jpg)
import-exempel 1importrandom
list_of_names=["Ada","Bea","Cecilia","Dolores"]
defrandom_greeting1(names):#random.choice()väljerutettslumpmässigtelementfrån#ensekvensname=random.choice(names)print("Hello"+name+"!")
defrandom_greeting2(names):#random.randint()slumparframettheltalfrånettslutet#intervallrandom_index=random.randint(0,len(names)-1)print("Hello"+names[random_index]+"!")
![Page 81: 729G46 Informationsteknologi och programmering](https://reader031.vdocuments.pub/reader031/viewer/2022021817/620e5db5c750963dd211163b/html5/thumbnails/81.jpg)
import-exempel 2fromrandomimport*
list_of_names=["Ada","Bea","Cecilia","Dolores"]
defrandom_greeting1(names):#choice()frånmodulenrandomväljerutettslumpmässigt#elementfrånensekvensname=choice(names)print("Hello"+name+"!")
defrandom_greeting2(names):#randint()frånmodulenrandomslumparframettheltalfrån#ettslutetintervallrandom_index=randint(0,len(names)-1)print("Hello"+names[random_index]+"!")