127
TDDE44 Programmering, grundkurs Föreläsning 1.1-1.2 Jody Foo, [email protected]

TDDE44 Programmering, grundkurs

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TDDE44 Programmering, grundkurs

TDDE44 Programmering, grundkursFöreläsning 1.1-1.2

Jody Foo, [email protected]

Page 2: TDDE44 Programmering, grundkurs

Föreläsningsöversikt⁃ Vad ingår i "Programmering, grundkurs"?

⁃ Kursöversikt

⁃ Datorer, program, programmeringsspråk

⁃ Beståndsdelar i ett program

⁃ Sekvensdatatyper: str och list

⁃ Komma åt funktionalitet via moduler

⁃ Skript - körbara textfiler

Page 3: TDDE44 Programmering, grundkurs

Grundkurs i programmering

Page 4: TDDE44 Programmering, grundkurs

Kursens syfte⁃ Tredje gången kursen går.

⁃ Övergripande mål för denna kurs: se till att ni kan använda programmering som ett verktyg

Page 5: TDDE44 Programmering, grundkurs

Kursplan⁃ använda aktuella datorsystem för laborativ verksamhet

⁃ redogöra för grundläggande begrepp relaterade till datavetenskap, programmering och programspråk

⁃ lösa programmeringsrelaterade problem metodiskt med hjälp av ett interaktivt arbetssätt med implementering, testning och felsökning

⁃ konstruera abstraktioner med varierande grad av stöd i det underliggande programmeringsspråket

⁃ lösa programmeringsproblem genom att bryta ner det i delproblem

⁃ konstruera rekursiva och iterativa algoritmer

Page 6: TDDE44 Programmering, grundkurs

Digitala kontaktytor⁃ Kurshemsida https://www.ida.liu.se/~TDDE44/

⁃ Webreg (anmälan till grupper)https://www.ida.liu.se/webreg3/TDDE44-2021-1/LAB1

⁃ Kursrum på Lisam (inlämningar)https://liuonline.sharepoint.com/sites/Lisam_TDDE44_2021VT_NL

⁃ Kursteam i Microsoft Teams

⁃ Klassteam i Microsoft Teams

Page 7: TDDE44 Programmering, grundkurs

Kurslitteratur⁃ Ingen obligatorisk kurslitteratur

⁃ Litteraturtips finns på föreläsningssidan på kurswebben

⁃ Bok på svenska: Skansholm. (2019). Python från början. Studentlitteratur.

Page 8: TDDE44 Programmering, grundkurs

Personal⁃ Examinator/Kursledare

Jody Foo

⁃ Övriga lärare

Annika Silvervarg

⁃ Assistenter

Y1.a: Rasmus Jonsson & David Ångström

Y1.b: Robin Keskisärkkä & Eric Ekström

Y1.c: Dag Jönsson & Alexander Löfstrand

MED1: Hugo Hörnquist, Gustav Sörnäs & Emma Witt

MAT1 + Yi1: Rosanna Isaksson & Liam Hawtin

⁃ Kursadministratör

Sanna Karlsson

Page 9: TDDE44 Programmering, grundkurs

Återkoppling från förra året⁃ 150 studenter, 29 svar via Evaliuate. Utvärderingar från Y-sektionen

och MatNat.

⁃ Helhetsbetyg från Evaliuate: 4,31

⁃ Överlag har kursen fungerat bra.

⁃ Upplägg för distanshandledning har fungerat bra

⁃ Lagom nivå i stort, men upplevd svårighetsgrad varierar

⁃ En svagare punkt var att redovisningarna kändes stressade (lite tid)

⁃ Åtgärd till i år: checklistor över vad som ska gås igenom

⁃ Fler avancerade exempel på rekursion önskades och kommer att finnas med i år.

⁃ Lite förvirrande i början med logistik kring redovisningstillfällena

Page 10: TDDE44 Programmering, grundkurs

Kursupplägg⁃ Period 1

Grundläggande konstruktioner: inbyggda datatyper, loopar, funktioner

Hur man testar program, delar upp ett program i funktioner

LAB1. U/G. 3hp. Laboration 1-4

⁃ Period 2

Introduktion till objektorienterad programmering

LAB2. U/G. 3hp. Laboration 5-7

⁃ Datorsalstenta

DAT1. U/3/4/5. 2hp.

3 juni kl. 14-18: Ej klart om tentan kommer gå på distans eller på Campus

Page 11: TDDE44 Programmering, grundkurs

Kursupplägg

Page 12: TDDE44 Programmering, grundkurs

Laborationer⁃ Period 1 (provkod LAB1)

Laboration 1-4

Förberedande lektion

Redovisning + inlämning

⁃ Period 2 (provkod LAB2)

Laboration 5-7

Förberedande lektion

Redovisning + inlämning

⁃ Anmäl er till en pargrupp för LAB2 i webreg. Samma pargrupper som för LAB1

Page 13: TDDE44 Programmering, grundkurs

Laborationer⁃ Mer tid än de schemalagda tillfällen behöver läggas på

uppgifterna.

⁃ Vissa moment behöver göras på i IDAs datormiljö:

Laboration 1

Automaträttade Pythonuppgifter 1-3

⁃ Övriga moment kan göras på egen dator

Rekommendation att installera Python och Visual Studio Code på egen dator för bättre samarbetesmöjligheter.

Tillägget Live Share: redigering filer samtidigt + dela terminal från Visual Studio Code

Page 14: TDDE44 Programmering, grundkurs

Komma åt datormiljön hemmifrån⁃ Laboration 1 och Pythonuppgifter 1-3 behöver göras från

IDAs datormiljö.

⁃ Ni kan ansluta till datormiljön genom att logga in via ThinLinc.

⁃ Ni kan också logga in på en dator i Linux-sal hemmifrån via RDP.

⁃ Salsbokningar (SU-salar) finns kvar för labbpass för att kunna använda logga in via RDP om ThinLinc blir överbelastat.

Page 15: TDDE44 Programmering, grundkurs

Datorsalar på IDA⁃ Datorsalarna finns i B-huset

SU00-SU04 på nedervåningen

SU10-17

⁃ I normalläge:

fritt att använda om det finns plats

om det är bokat av annan kurs, kan ni dock bli ombedda att gå vid platsbrist/genomgång

⁃ Idag, pandemiläge 4

ni har tillträde

max 8 personer i samma utrymme

mer information kommer

Page 16: TDDE44 Programmering, grundkurs
Page 17: TDDE44 Programmering, grundkurs
Page 18: TDDE44 Programmering, grundkurs

ThinLinc

Din datorthinlinc.edu.liu.se

ThinLinc-server 1

ThinLinc-server 2

ThinLinc-server N

Page 19: TDDE44 Programmering, grundkurs

RDPSU00

SU00 01

SU00 02

SU00 03

SU00 04

SU00 05

SU00 06

SU00 07

SU00 08

SU00 09

SU00 10

Din dator

Page 20: TDDE44 Programmering, grundkurs

Anmälan av pargrupper⁃ Om det finns studenter som hellre blir indelade i en

pargrupp skicka e-post till mig med information om vilken klass ni går i så kommer ni bli inplacerade i en pargrupp.

Page 21: TDDE44 Programmering, grundkurs

Handledning i Microsoft Teams⁃ För att räcka upp handen, skriv "Grupp XY räcker upp

handen" i kanalen "!Handuppräckning" i ert klassteam.

⁃ Se till att ni har ett videomöte igång i er pargruppskanal där ni delar skärm.

⁃ När en assistent blir ledig ger hen er hanuppräckning "tummen upp" och ansluter sedan till ert möte.

⁃ https://www.ida.liu.se/~TDDE44/distanslage/teams/

Page 22: TDDE44 Programmering, grundkurs

Redovisning av laboration: När?⁃ Redovisningstillfälle schemalagt för varje laboration

⁃ Lägre (siffra) halvan av er webreg-grupp redovisar under första timmen

⁃ Övre halvan av er webreg-grupp redovisar under andra timmen

⁃ Redovisning vid labbtillfälle är möjligt i mån av tid, men behöver bokas med någon av era labbhandledare.

⁃ Komplettering för missad redovisning: boka in redovisning eller skicka in redovisning som screencast via Lisam.

Page 23: TDDE44 Programmering, grundkurs

Redovisning av laboration: Hur?⁃ Räck upp handen i kanalen !Handuppräckning när ni är redo

för redovisning.

⁃ Se till att ha ett möte igång med skärmdelning av er kod (laboration 2 och frammåt) och en terminal som ni kan använda för att demonstrera er uppgift.

⁃ Det kommer finnas en checklista som ni ska följa vid redovisning, se till att ni har den framför er så att ni kan följa den.

Page 24: TDDE44 Programmering, grundkurs

Redovisning och inlämning av kod

Kompletteringav kod behövs?

Redovisning vid redovisningstillfälle

Lämna in kod via Lisam

Boka in redovisning med handledare.

Spela in screencastRedovisa laboration

Komplettera kod.

Ja Nej

Återkoppling från handledare

Redovisning vid laborationstillfälle

Redovisning via screencast

Ladda upp screencast och kod

via Lisam

Page 25: TDDE44 Programmering, grundkurs

Redovisning och inlämning av kod

Kompletteringav kod behövs?

Redovisning vid redovisningstillfälle

Lämna in kod via Lisam

Boka in redovisning med handledare.

Spela in screencastRedovisa laboration

Komplettera kod.

Ja Nej

Återkoppling från handledare

Redovisning vid laborationstillfälle

Redovisning via screencast

Ladda upp screencast och kod

via Lisam

Page 26: TDDE44 Programmering, grundkurs

Redovisning och inlämning av kod

Kompletteringav kod behövs?

Redovisning vid redovisningstillfälle

Lämna in kod via Lisam

Boka in redovisning med handledare.

Spela in screencastRedovisa laboration

Komplettera kod.

Ja Nej

Återkoppling från handledare

Redovisning vid laborationstillfälle

Redovisning via screencast

Ladda upp screencast och kod

via Lisam

Page 27: TDDE44 Programmering, grundkurs

Redovisning och inlämning av kod

Kompletteringav kod behövs?

Redovisning vid redovisningstillfälle

Lämna in kod via Lisam

Boka in redovisning med handledare.

Spela in screencastRedovisa laboration

Komplettera kod.

Ja Nej

Återkoppling från handledare

Redovisning vid laborationstillfälle

Redovisning via screencast

Ladda upp screencast och kod

via Lisam

Page 28: TDDE44 Programmering, grundkurs

Slutdeadline och uppsamlingstillfällen⁃ Slutdeadline av inlämningar under pågående kurs

4 juni 2021 (sista dagen av tenta-p för VT2)

⁃ Uppsamlingstillfälle 1

28 augusti 2021 (sista dagen av omtenta-p)

⁃ Uppsamlingstillfälle 2

22 oktober 2021 (sista dagen av omtenta-p för VT2)

Page 29: TDDE44 Programmering, grundkurs

Programmerbar maskin

Page 30: TDDE44 Programmering, grundkurs

Turing-maskinen (1936)⁃ Teoretisk beskrivning av en beräkningsmaskin / dator

⁃ Maskinens beståndsdelar:

Ett band med oändligt antal rutor som kan innehålla en symbol (eller vara tom)

Ett läs- och skrivhuvud som kan läsa och skriva symboler till/från bandet

En ändlig lista över tillstånd.

Ett tillståndsregister som lagrar maskinens aktuella tillstånd.

En ändlig uppsättning instruktioner som beskriver vad som ska göras givet maskinens tillstånd, samt aktuell symbol.

⁃ En instruktion beskriver

vad som ska göras med aktuell ruta (skriva/sudda)

om/hur huvudet ska flytta på sig

maskinens nya tillstånd att instruktionen har utförts

Page 31: TDDE44 Programmering, grundkurs

ENIAC - dator utan lagring av program (1945)

USArmyPhoto

Page 32: TDDE44 Programmering, grundkurs

von Neumann-arkitekturen (1945)⁃ En beskrivning av en fysisk arkitektur

⁃ Central processorenhet, Central Processing Unit: styrenhet & aritmetisk-logisk enhet

⁃ Primärminne, Random Access Memory (RAM)

⁃ Input- och output-enhet

Page 33: TDDE44 Programmering, grundkurs

von Neumann-arkitekturen⁃ Data och program lagras i gemensamt minne

⁃ Instruktioner utförs sekventiellt, en instruktion i taget

⁃ En operand ("en styck data") bearbetas åt gången

Page 34: TDDE44 Programmering, grundkurs

von Neumann-arkitekturen⁃ Gemensam lagring av program och data

Ett program kan skriva data som sedan används som program

Vi kan skapa program som hjälper oss skapa mer avancerade program!

⁃ Sekventiell exekvering: förutsägbarhet när program körs

Page 35: TDDE44 Programmering, grundkurs

Blinkenlights och hålkort

ByMBlairMar1n-Ownwork,CCBY-SA4.0,h=ps://commons.wikimedia.org/w/index.php?curid=50243909

FrontpanelenhosenIBMSystem/360Modell91

Page 36: TDDE44 Programmering, grundkurs

Program⁃ Program används som homonym - ett "ord" flera betydelser

⁃ dvs. ett ord kan användas för att representera fker än ett begrepp

⁃ program (1): instruktioner som utförs av en dator

⁃ program (2): exekverbar data som en användare kan köra på en dator

⁃ program (3): instruktioner i datorns minne

⁃ program (4): ...

Page 37: TDDE44 Programmering, grundkurs

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 38: TDDE44 Programmering, grundkurs

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 39: TDDE44 Programmering, grundkurs

Assembler

MOVAX,47104MOVDS,AXMOV[3998],36INT32Exempelfrånhttp://www.swansontec.com/sprogram.html

Page 40: TDDE44 Programmering, grundkurs

Lågnivåprogrammering⁃ Maskinkod

⁃ Assemblerkod

Page 41: TDDE44 Programmering, grundkurs

Programmering på högre nivå

Page 42: TDDE44 Programmering, grundkurs

Högnivåprogrammering⁃ Python

⁃ Java

⁃ JavaScript

⁃ C#

Page 43: TDDE44 Programmering, grundkurs

Kompilerade och interpreterade programmeringsspråk

Page 44: TDDE44 Programmering, grundkurs

Kompilering och interpretering⁃ Kompilering ~ översättning av kod

+ process för att göra kompilerade koden körbar = exekverbar fil

⁃ Interpretering = tolkning av kod

En programtolk "läser" källkod och utför det som står i koden. Programtolken ger sedan processorn instruktioner / skapar maskinkod

Page 45: TDDE44 Programmering, grundkurs

Python

Page 46: TDDE44 Programmering, grundkurs

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.9.1 (och 2.7.18 - stöds ej officiellt längre)

⁃ 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 47: TDDE44 Programmering, grundkurs

Stort community⁃ Konferenser runt om i världen av olika storlek

⁃ Många, ramverk som används i produktion inom många områden

TheStateoftheOctoverse(2020)h=ps://octoverse.github.com/

Page 48: TDDE44 Programmering, grundkurs

Datormiljön på IDA

Page 49: TDDE44 Programmering, grundkurs

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 50: TDDE44 Programmering, grundkurs

Terminalen som gränssnitt

Page 51: TDDE44 Programmering, grundkurs

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 52: TDDE44 Programmering, grundkurs

Terminalen⁃ Terminalprogrammet tillhandahåller funktionalitet för

program att visa text och ta emot tangentbordstryck från användaren.

⁃ Terminalprogrammet kör ett skalprogram/kommandoskal: 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 53: TDDE44 Programmering, grundkurs

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 54: TDDE44 Programmering, grundkurs

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 55: TDDE44 Programmering, grundkurs

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

⁃ Om / används i början av en sökväg refererar det till filsystemets rot-katalog.

Page 56: TDDE44 Programmering, grundkurs

Filsystemets trädstruktur⁃ katalog1

⁃ katalog1/katalog1_1

⁃ katalog1/katalog1_1/fil4

⁃ katalog2/hejsan/hoppsan/fallerallera

Page 57: TDDE44 Programmering, grundkurs

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 58: TDDE44 Programmering, grundkurs

Absoluta och relativa sökvägar⁃ Absolut sökväg har med roten

/courses/TDDE42/kursmaterial/laboration1

/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/laboration1

katalog1/fil1

../katalog3/fil3

Page 59: TDDE44 Programmering, grundkurs

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 60: TDDE44 Programmering, grundkurs

Från data till program som körs

Page 61: TDDE44 Programmering, grundkurs

Från data till program?⁃ which ls

/bin/ls

⁃ Vad händer när jag kör programmet ls?

Page 62: TDDE44 Programmering, grundkurs

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 63: TDDE44 Programmering, grundkurs

Skriva och köra pythonprogram

Page 64: TDDE44 Programmering, grundkurs

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 65: TDDE44 Programmering, grundkurs

Interaktiv användning⁃ Starta pythontolken genom att skriva kommando i

terminalen

python3

eller

ipython3

⁃ Avsluta med Ctrl-D

Page 66: TDDE44 Programmering, grundkurs

Köra ett program som skrivits i förväg⁃ Gör så här:

Från terminalen, kör programtolken och skicka sökvägen till textfilen med pythonkoden som argument

exempel:

$ python3 hello.py

Page 67: TDDE44 Programmering, grundkurs

Beståndsdelar i ett program

Page 68: TDDE44 Programmering, grundkurs

Beståndsdelar i ett program⁃ värden (value)

⁃ operatorer (operators)

⁃ variabler (variable)

⁃ uttryck (expression)

⁃ nyckelord (keywords)

⁃ skiljetecken (punctuators)

⁃ sats (statement)

Page 69: TDDE44 Programmering, grundkurs

Beståndsdelar i ett programvärden (value): t.ex. siffror eller text (kallas för strängar)

Page 70: TDDE44 Programmering, grundkurs

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 71: TDDE44 Programmering, grundkurs

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 72: TDDE44 Programmering, grundkurs

Beståndsdelar i ett programoperatorer (operators): token/symbol som likt en funktion appliceras på värden

Page 73: TDDE44 Programmering, grundkurs

Matematiska operatorer⁃ Matematiska operatorer

addition: +

subtraktion: -

multiplikation: *

division: /

division trunkerat till resulterande heltal //

modulo (rest vid division): %

Page 74: TDDE44 Programmering, grundkurs

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 75: TDDE44 Programmering, grundkurs

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 76: TDDE44 Programmering, grundkurs

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 utvärderas eller beräknas till ett värde

⁃ Exempel på uttryck:

användning av operatorer

funktionsanrop

uppslag av värdet på en variabel

Page 77: TDDE44 Programmering, grundkurs

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 78: TDDE44 Programmering, grundkurs

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 79: TDDE44 Programmering, grundkurs

print() - en inbyggd funktion som skriver ut värdenprint("Hej")

x=56namn="Beata"

print(namn)

print(x+487)

Page 80: TDDE44 Programmering, grundkurs

Beståndsdelar i ett programnyckelord (keywords): speciella ord som refererar till instruktioner som ska utföras

skiljetecken (punctuators)

Page 81: TDDE44 Programmering, grundkurs

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 82: TDDE44 Programmering, grundkurs

Funktionsanrop, en typ av uttryck⁃ Skillnad på definition av funktion och anrop (användning)

av funktion

⁃ 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 83: TDDE44 Programmering, grundkurs

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 84: TDDE44 Programmering, grundkurs

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 85: TDDE44 Programmering, grundkurs

Definiera en funktion i Pythondeff(x):print("Nukörsfunktionen!")uträkning=2*xprint("Nuharviräknatutnågot.")returnuträkning

resultat=f(10)

Vi kan ha hur många satser vi vill inuti en funktionsdefinition.

Page 86: TDDE44 Programmering, grundkurs

Nyckelordet return⁃ Nyckelordet return kan användas i en funktion.

⁃ När Python kommer till nyckelordet return avslutas funktionen och dess anrop ersätts av det värde som funktionen returnerar.

⁃ Tänk på return som "gå tillbaka till dit funktionen blev anropad från" + lämna ut funktionens värde

Page 87: TDDE44 Programmering, grundkurs

Funktioner och returvärden⁃ Alla funktioner i Python returnerar ett värde när de

anropas.

⁃ För att Python-tolken ska kunna utföra en sats måste alla uttryck i satsen beräknas/utvärderas.

⁃ Efter att ett uttryck beräknats/utvärderats ersätts det av sitt värde i satsen.

⁃ Ett funktionsanrop är ett uttryck och måste därför alltid returnera ett värde.

Page 88: TDDE44 Programmering, grundkurs

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 89: TDDE44 Programmering, grundkurs

Beståndsdelar i ett programsats (statement): fullständig instruktion

Page 90: TDDE44 Programmering, grundkurs

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

tilldelning

⁃ 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 91: TDDE44 Programmering, grundkurs

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 92: TDDE44 Programmering, grundkurs

Sekventiella värden.Strängar och listor.

Page 93: TDDE44 Programmering, grundkurs

SträngarDatatypen str

Page 94: TDDE44 Programmering, grundkurs

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 95: TDDE44 Programmering, grundkurs

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 96: TDDE44 Programmering, grundkurs

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 97: TDDE44 Programmering, grundkurs

Å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

sträng[-2] ger det näst sista tecknet i variabeln sträng osv.

Page 98: TDDE44 Programmering, grundkurs

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 99: TDDE44 Programmering, grundkurs

Delsträngar⁃ Vi kan även plocka fram delar av en sträng

⁃ sträng[start:slut:steg]använd tecken från index=start, fortsätt med tecken på med index=index+steg så länge som index<slut

⁃ namn = "Birgitta"namn[0:4:1]→ "Birg" namn[0:7:2]→ "Brit"

B i r g i t t a0 1 2 3 4 5 6 7

-8 -7 -6 -5 -4 -3 -2 -1

Page 100: TDDE44 Programmering, grundkurs

Delsträngar⁃ Om start utelämnas antas det vara 0

⁃ Om slut utelämnas antas det vara len(sträng)

⁃ Om steg utelämnas antas det vara 1

⁃ Vi måste ha med minst ett kolon (:)sträng[start:]sträng[:slut]sträng[::steg]sträng[start:slut]sträng[start::steg]sträng[:slut:steg]

Page 101: TDDE44 Programmering, grundkurs

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 102: TDDE44 Programmering, grundkurs

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 103: TDDE44 Programmering, grundkurs

ListorDatatypen list

Page 104: TDDE44 Programmering, grundkurs

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]]

Page 105: TDDE44 Programmering, grundkurs

Datatypen list⁃ 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. och negativa index börjar bakifrån.

⁃ Funktionen len() kan också användas på listor

namn = ["Ada", "Bertil", "Cecilia", "Eskil"] namn[0] → "Ada"namn[-1] → "Eskil"len(namn) → 4

Page 106: TDDE44 Programmering, grundkurs

Del-listor⁃ Vi kan även plocka fram delar av en lista

⁃ lista[start:slut:steg]använd tecken från index=start, fortsätt med tecken på med index=index+steg så länge som index<slut

⁃ namn = ["Ada", "Bertil", "Cecilia", "Eskil"] namn[0:2:1] → ["Ada", "Bertil"]namn[1:4:2] → ["Bertil", "Eskil"]

Ada Bertil Cecilia Eskil0 1 2 3

-4 -3 -2 -1

Page 107: TDDE44 Programmering, grundkurs

Del-listor⁃ Om start utelämnas antas det vara 0

⁃ Om slut utelämnas antas det vara len(sträng)

⁃ Om steg utelämnas antas det vara 1

⁃ Vi måste ha med minst ett kolon (:)lista[start:]lista[:slut]lista[::steg]lista[start:slut]lista[start::steg]lista[:slut:steg]

Page 108: TDDE44 Programmering, grundkurs

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 109: TDDE44 Programmering, grundkurs

Ä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 110: TDDE44 Programmering, grundkurs

Lägga till nytt värde till slutet på en listafrukter=["apelsin"]print(frukter)

frukter=frukter+["banan"]print(frukter)

Page 111: TDDE44 Programmering, grundkurs

Lägga till nytt värde till början på en listafrukter=["apelsin"]print(frukter)

frukter=["banan"]+frukterprint(frukter)

Page 112: TDDE44 Programmering, grundkurs

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"]

#användningavoperatorn+medlistorändrarintepåoperanderna#nedanståendeuttryckkommerberäknas,menresultatet"sparas"#intecharacters1=["a","b","c"]characters2=["d"]characters1+characters2print(characters1)#kommerskrivaut["a","b","c"]

Page 113: TDDE44 Programmering, grundkurs

Moduler

Page 114: TDDE44 Programmering, grundkurs

Moduler⁃ Specialiserade funktioner m.m. kan göras 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 115: TDDE44 Programmering, grundkurs

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

Page 116: TDDE44 Programmering, grundkurs

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 117: TDDE44 Programmering, grundkurs

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() i modulen random kommer man då åt genom random.randint()

⁃ 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() utan att ange namnrymd.

Page 118: TDDE44 Programmering, grundkurs

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 119: TDDE44 Programmering, grundkurs

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]+"!")

Page 120: TDDE44 Programmering, grundkurs

Exekverbara filer - skript

Page 121: TDDE44 Programmering, grundkurs

Syntax för kommandon i terminalen⁃ Kommandon i terminalen ($-tecknet representerar

prompten)

$ ls ../

⁃ Kommandon som skrivs i terminalen kan ta argument

⁃ T.ex. när vi använder en pythontolk med ett filnamn är filnamnet ett argument.

$ ipython3 pythonkod.py

Page 122: TDDE44 Programmering, grundkurs

Säga åt systemet att automatiskt använda en programtolk på innehåll i textfil⁃ I Linux kan vi ändra på rättigheter på en fil. En användare

kan ha rätt att läsa (read), skriva (write) och köra (execute) en fil.

⁃ För att ge dig själv (user) rätt att köra en fil:

$ chmod u+x filnamn

⁃ När en textfil är exekverbar (körbar) kommer systemet titta på den första raden i textfilen för att få information om vilken tolk som ska användas för att tolka textfilen (tolkdirektiv).

#!/sökväg/till/programtolk

Page 123: TDDE44 Programmering, grundkurs

Exempel med Python#!/usr/bin/envpython3

#ovanståenderad,sommåstevaradenförstaitextfilen#användsförattsystemetskaanvändaprogrammetpython3#föratttolkaresterandeinnehållitextfilen

print("Helloworld!")

Page 124: TDDE44 Programmering, grundkurs

Skript - exekverbara filer⁃ En textfil som är exekverbar (filrättigheter), har information

om vilken programtolk ska användas kallas för ett skript

⁃ Vi kan alltså förbereda Python-kod så att den kan användas som om de vore vanliga program.

Page 125: TDDE44 Programmering, grundkurs

Anrop av skript i aktuell katalog⁃ När vi kör ett skript i terminalen bryr sig inte skalet om

skriptets filnamn.

⁃ Om en textfil är exekverbar och har ett tolkdirektiv som första rad så skulle vi t.ex. kunna döpa filen till "ls"

⁃ För att förhindra att användare kör skadliga skript krävs det att man anropar skript från den katalog man står i med ./ som prefix.

⁃ ./ls anropa skriptet ls från den katalog vi står i

⁃ ls anropar systemprogrammet ls som listar kataloginnehåll

Page 126: TDDE44 Programmering, grundkurs

Modulen sys⁃ Genom att importera modulen sys kan vi få tillgång till de

argument som skrivs efter ett pythonskript

import sys

⁃ Variabeln args i modulen sys är en lista där elementet med index 0 är själva kommandot som skrevs

⁃ Övriga element är de argument som skrevs (datatyp: str)

Page 127: TDDE44 Programmering, grundkurs

Exempel på skript som skriver ut alla dess argument#!/usr/bin/envpython3

importsys

print(sys.args)