Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python...

52
Algoritmer och interaktiv Python Algoritmer och interaktiv Python Linda Mannila 11.9.2007 Linda Mannila 11.9.2007

Transcript of Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python...

Page 1: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Algoritmer och interaktiv PythonAlgoritmer och interaktiv PythonLinda Mannila 11.9.2007Linda Mannila 11.9.2007

Page 2: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Denna föreläsningDenna föreläsning

l Räkneövningstider

l Algoritmer

l Interaktiv Python

l Datatyper

l Variabler

l Typning

l Räkneövningstider

l Algoritmer

l Interaktiv Python

l Datatyper

l Variabler

l Typning

Page 3: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

RepetitionRepetition

l Vad vi än skall göra måste vi veta hur vi skall bära oss åt för att få det gjortl Kan inte köra bil om vi inte vet hur man görl Omöjligt (åtminstone himla dumt ☺) att hoppa i 10 m djupt vatten om vi inte kan simma

l MEN - vi kan gå i bilskolan och ta simlektionerför att lära oss

l En dator vet inte hur den skall göra någotoch kan inte lära sigl Användaren måste förklara vad datorn skallgöra och hur à programmering

l Vad vi än skall göra måste vi veta hur vi skall bära oss åt för att få det gjortl Kan inte köra bil om vi inte vet hur man görl Omöjligt (åtminstone himla dumt ☺) att hoppa i 10 m djupt vatten om vi inte kan simma

l MEN - vi kan gå i bilskolan och ta simlektionerför att lära oss

l En dator vet inte hur den skall göra någotoch kan inte lära sigl Användaren måste förklara vad datorn skallgöra och hur à programmering

Page 4: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

RepetitionRepetition

l För att få en dator att göra något måste vil skriva ett program som exakt berättar för datorn vad den skall göra, och

l hur den skall göra det, steg för steg

l Datorn kan sedan exekvera (köra) programmetl utför varje steg tills det slutliga målet är nått

l Instruktioner (satser) är den verkliga grunden i ettprogram, och används för att manipulera data, utföra beräkningar, skriva ut data på skärmen osv.

l För att få en dator att göra något måste vil skriva ett program som exakt berättar för datorn vad den skall göra, och

l hur den skall göra det, steg för steg

l Datorn kan sedan exekvera (köra) programmetl utför varje steg tills det slutliga målet är nått

l Instruktioner (satser) är den verkliga grunden i ettprogram, och används för att manipulera data, utföra beräkningar, skriva ut data på skärmen osv.

Page 5: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Program skapas i faserProgram skapas i faser

1. Definiera problemet

2. Identifiera input och output

3. Designa en algoritm

4. Representera algoritmen (flödesschemaoch/eller pseudokod)

5. Skriv programkoden

6. Testa programmet (kör det)

7. Debugga programmet (fixa eventuella fel)

1. Definiera problemet

2. Identifiera input och output

3. Designa en algoritm

4. Representera algoritmen (flödesschemaoch/eller pseudokod)

5. Skriv programkoden

6. Testa programmet (kör det)

7. Debugga programmet (fixa eventuella fel)

Page 6: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Vad är en algoritm?Vad är en algoritm?

l En mängd steg-för-steg instruktioner som berättarexakt hur ett problem skall lösas (ett “recept”)

l Exakta, entydiga och fullständiga instruktioner

l Problemet måste vara välspecifierat

l Algoritmer kan uttryckasl med vanligt språk (svenska, finska, kinesiska), l i ett programmeringsspråk, l med pseudokod ellerl med flödesscheman

l En mängd steg-för-steg instruktioner som berättarexakt hur ett problem skall lösas (ett “recept”)

l Exakta, entydiga och fullständiga instruktioner

l Problemet måste vara välspecifierat

l Algoritmer kan uttryckasl med vanligt språk (svenska, finska, kinesiska), l i ett programmeringsspråk, l med pseudokod ellerl med flödesscheman

Page 7: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Vad är ett program?Vad är ett program?

l En algoritm som implementerats såatt den kan utföras av en dator

l Uttrycks i ett programmeringsspråk

l En algoritm som implementerats såatt den kan utföras av en dator

l Uttrycks i ett programmeringsspråk

Page 8: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Fasters resaFasters resa

ProblemDin gamla faster från Amerika skall komma på besök, men du hinner inte möta hennepå flygfältet. I stället måste du henne instruktioner för hur hon kan ta sig till ditt hus påegen hand. Du ger henne tre olika alternativ:

Ta en taxi

1. Gå till taxi-stationen2. Hoppa in i en taxi3. Ge chauffören hemadressen

Hyr en bil

1. Gå till biluthyrningsdisken på flygfältet2. Hyr en bil3. Använd kartan för att hitta ända fram

Ta bussen

1. Ta buss 57 till centrum2. Byt till buss 613. Stig av på Rådhusgatan4. Gå två kvarter söderut

ProblemDin gamla faster från Amerika skall komma på besök, men du hinner inte möta hennepå flygfältet. I stället måste du henne instruktioner för hur hon kan ta sig till ditt hus påegen hand. Du ger henne tre olika alternativ:

Ta en taxi

1. Gå till taxi-stationen2. Hoppa in i en taxi3. Ge chauffören hemadressen

Hyr en bil

1. Gå till biluthyrningsdisken på flygfältet2. Hyr en bil3. Använd kartan för att hitta ända fram

Ta bussen

1. Ta buss 57 till centrum2. Byt till buss 613. Stig av på Rådhusgatan4. Gå två kvarter söderut

Page 9: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Fasters resaFasters resa

l Alla alternativ är en algoritm, dvs. en samling steg-gör-steg-instruktioner

l Alla tre algoritmer leder till samma resultat, men på olika sättl Även inom programmering flera olika algoritmer för hur man kanutföra en viss uppgift eller lösa ett problem

l Varje algoritm har sina för- respektive nackdelarl Taxi – snabbt men dyrtl Bil – kräver mer av din faster men flexibeltl Buss – långsamt men billigt

l Man väljer algoritm beroende på omständigheterna

l Alla alternativ är en algoritm, dvs. en samling steg-gör-steg-instruktioner

l Alla tre algoritmer leder till samma resultat, men på olika sättl Även inom programmering flera olika algoritmer för hur man kanutföra en viss uppgift eller lösa ett problem

l Varje algoritm har sina för- respektive nackdelarl Taxi – snabbt men dyrtl Bil – kräver mer av din faster men flexibeltl Buss – långsamt men billigt

l Man väljer algoritm beroende på omständigheterna

Page 10: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

En algoritm måste...En algoritm måste...

l vara välordnadl klart i vilken ordning de olika instruktionerna skall utföras

l innehålla entydiga instruktionerl inte kunna tolkas på olika sätt, ingen tvekan om betydelsen

l kunna utförasl alla instruktioner som ingår måste gå att utföra. Ej t.ex. instruktion som kräveratt vi dividerar med noll

l alltid ge ett resultatl annars omöjligt veta om algoritmen har utförts eller om den ännu är på hälft

l avslutas inom ändlig tidl inga evighetsprogram, måste alltid komma till ett slut

l vara välordnadl klart i vilken ordning de olika instruktionerna skall utföras

l innehålla entydiga instruktionerl inte kunna tolkas på olika sätt, ingen tvekan om betydelsen

l kunna utförasl alla instruktioner som ingår måste gå att utföra. Ej t.ex. instruktion som kräveratt vi dividerar med noll

l alltid ge ett resultatl annars omöjligt veta om algoritmen har utförts eller om den ännu är på hälft

l avslutas inom ändlig tidl inga evighetsprogram, måste alltid komma till ett slut

Page 11: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Koka teKoka te

Version 1:

1.Koka vatten

2.Sätt tepåsen i en kopp

3.Häll vatten i koppen

Version 1:

1.Koka vatten

2.Sätt tepåsen i en kopp

3.Häll vatten i koppen

Page 12: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Koka teKoka te

Version 2:1. Fyll en kastrull med vatten.2. Sätt kastrullen på spisplattan.3. Vänta tills vattnet kokar.4. Ta av kastrullen från plattan.5. Ta fram en tepåse.6. Sätt påsen i en kopp.7. Lyft vattenkastrullen.8. Luta kastrullen så att vattnet rinner ner i koppen.9. Vänta tills koppen är full.10. Ställ tillbaka kastrullen på plattan.

Version 2:1. Fyll en kastrull med vatten.2. Sätt kastrullen på spisplattan.3. Vänta tills vattnet kokar.4. Ta av kastrullen från plattan.5. Ta fram en tepåse.6. Sätt påsen i en kopp.7. Lyft vattenkastrullen.8. Luta kastrullen så att vattnet rinner ner i koppen.9. Vänta tills koppen är full.10. Ställ tillbaka kastrullen på plattan.

Page 13: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Poängen?Poängen?

l När man programmerar måste man vara

otroligt exakt och detaljerad

l Precis allt som datorn skall göra måsteskrivas ut

l När man programmerar måste man vara

otroligt exakt och detaljerad

l Precis allt som datorn skall göra måsteskrivas ut

Page 14: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Att skapa programAtt skapa program

l Ett program är helt enkelt en lösning på ett probleml Det svåra ligger i att komma på lösningen

l För att ett program skall fungera som man tänkt: för- och eftervillkor

Förvillkor => Program => Eftervillkor

l Om förvillkoren är uppfyllda då man startarprogrammet kommer eftervillkoren att vara uppfylldadå man har kört programmet

l Ett program är helt enkelt en lösning på ett probleml Det svåra ligger i att komma på lösningen

l För att ett program skall fungera som man tänkt: för- och eftervillkor

Förvillkor => Program => Eftervillkor

l Om förvillkoren är uppfyllda då man startarprogrammet kommer eftervillkoren att vara uppfylldadå man har kört programmet

Page 15: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Att skapa programAtt skapa program

l “Jag är snål på sockerkaka men har ingen. Hur skall jag få en?”

l Vissa förutsättningar som måste gälla föratt du skall kunna lösa problemetl ingredienser som behövsl en funktionsduglig ugnl kakforml veta hur man bakar en kaka, dvs. ett recept

à Kakbakningens förvillkor

l “Jag är snål på sockerkaka men har ingen. Hur skall jag få en?”

l Vissa förutsättningar som måste gälla föratt du skall kunna lösa problemetl ingredienser som behövsl en funktionsduglig ugnl kakforml veta hur man bakar en kaka, dvs. ett recept

à Kakbakningens förvillkor

Page 16: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Att skapa programAtt skapa program

l Förvillkor: Du har alla ingredienseroch annat som behövs

l Program: Receptet

l Eftervillkor: Nygräddad sockerkaka

l Förvillkor: Du har alla ingredienseroch annat som behövs

l Program: Receptet

l Eftervillkor: Nygräddad sockerkaka

Page 17: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Att skapa programAtt skapa program

l Förvillkor: Det som måste gälla föratt programmet skall kunna köras

l Program: Den implementeradealgoritmen / koden

l Eftervillkor: Det resultat man är uteefter

l Förvillkor: Det som måste gälla föratt programmet skall kunna köras

l Program: Den implementeradealgoritmen / koden

l Eftervillkor: Det resultat man är uteefter

Page 18: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

SpaghettikodSpaghettikod

l Första programmen skrivna i högnivåspråk var ofta svåra attläsa och förstål användningen av GOTO-satser, (berättar för datorn att hoppa till en viss rad i programmet)

à spaghettikod, massa hopp framoch tillbaka i koden, svårhittade fel

l Första programmen skrivna i högnivåspråk var ofta svåra attläsa och förstål användningen av GOTO-satser, (berättar för datorn att hoppa till en viss rad i programmet)

à spaghettikod, massa hopp framoch tillbaka i koden, svårhittade fel

Page 19: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Spaghettikod, exempelSpaghettikod, exempel

10 i = 0

20 i = i + 1

30 print i; " squared = "; i * i

40 if i < 10 then goto 20

50 print "Program Completed."

60 end

l Problem?

10 i = 0

20 i = i + 1

30 print i; " squared = "; i * i

40 if i < 10 then goto 20

50 print "Program Completed."

60 end

l Problem?

Page 20: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Strukturerad programmeringStrukturerad programmering

l Edsger Dijkstra (1930-2002) l Mål: program som är lättare att skriva, läsaoch underhålla

l Samma utgångspunkt: en mängdinstruktioner som tillsammans bildar ettprogram.

l I stället för hoppsatser:l Tre olika typer av instruktioner

l Vissa skall utföras en gångl Upprepasl Kanske inte utföras alls

l Edsger Dijkstra (1930-2002) l Mål: program som är lättare att skriva, läsaoch underhålla

l Samma utgångspunkt: en mängdinstruktioner som tillsammans bildar ettprogram.

l I stället för hoppsatser:l Tre olika typer av instruktioner

l Vissa skall utföras en gångl Upprepasl Kanske inte utföras alls

Page 21: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Tre instruktionstyperTre instruktionstyper

Sekvens: allt i tur och ordningFörst – sedan – sist

Villkorliga: valmöjlighet, kanske inte utförs allsOm... så...

Iterativa: repeteras, om och om igenUpprepa, tills, medan, ...

Sekvens: allt i tur och ordningFörst – sedan – sist

Villkorliga: valmöjlighet, kanske inte utförs allsOm... så...

Iterativa: repeteras, om och om igenUpprepa, tills, medan, ...

Page 22: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

No more spaghetticodeNo more spaghetticode

10 i = 0

20 i = i + 1

30 print i; " squared = "; i * i

40 if i < 10 then goto 20

50 print "Program Completed."

60 end

l Strukturerad, anti-spaghettiversion

10 i = 0

20 i = i + 1

30 print i; " squared = "; i * i

40 if i < 10 then goto 20

50 print "Program Completed."

60 end

l Strukturerad, anti-spaghettiversion

for i in range(1,10):

print i, "squared =", i ** 2

print "Program Completed."

for i in range(1,10):

print i, "squared =", i ** 2

print "Program Completed."

Page 23: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Representera algoritmerRepresentera algoritmer

l Algoritmer à planera program med papper ochpenna, utan dator och programmeringsspråkl lösningsmodell som sedan kan implementeras och exekveras

l Hittills uttryckt i naturligt språk

l Mer exakta alternativ:l pseudokod

l flödesscheman

l Algoritmer à planera program med papper ochpenna, utan dator och programmeringsspråkl lösningsmodell som sedan kan implementeras och exekveras

l Hittills uttryckt i naturligt språk

l Mer exakta alternativ:l pseudokod

l flödesscheman

Page 24: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Pseudokod & flödesscheman

Pseudokod & flödesscheman

l inte programmeringsspråk

l låter oss strukturera algoritmer (program) klart och tydligt utan att behöva använda ett programmeringsspråk

l viktiga när man designar program

l inte programmeringsspråk

l låter oss strukturera algoritmer (program) klart och tydligt utan att behöva använda ett programmeringsspråk

l viktiga när man designar program

Page 25: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Pseudokod vs. flödesschemanPseudokod vs.

flödesscheman

Pseudokod (”nästan kod”)

beskriver algoritmer exakt med ord

Flödesscheman

beskriver algoritmer exakt grafiskt med figurer

Pseudokod (”nästan kod”)

beskriver algoritmer exakt med ord

Flödesscheman

beskriver algoritmer exakt grafiskt med figurer

Page 26: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Flödesscheman, symbolerFlödesscheman, symboler

Page 27: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Flödesscheman, symbolerFlödesscheman, symboler

Page 28: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Flödesscheman, symbolerFlödesscheman, symboler

In- ellerutmatning

Funktion, under-program

Start

Stop

Page 29: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Koka makaronerKoka makaroner

Slut

Start

vatten àààà gryta

koka vatten

makaroner -> gryta

tills makaroner mjuka eller lång tid gått

låt makaroner koka

Page 30: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Algoritmer i algoritmerAlgoritmer i algoritmer

Vanlig approach:Dela problemet i mindre delar (”divide and conquer”)

Här t.ex. egen algoritm för att koka vatten

Input: vatten, gryta, spis

1. Häll vatten i gryta2. Ställ gryta på spis3. Vrid på platta4. Vänta tills vatten kokar

Vanlig approach:Dela problemet i mindre delar (”divide and conquer”)

Här t.ex. egen algoritm för att koka vatten

Input: vatten, gryta, spis

1. Häll vatten i gryta2. Ställ gryta på spis3. Vrid på platta4. Vänta tills vatten kokar

Page 31: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Algoritmer i algoritmerAlgoritmer i algoritmer

Slut

Start

Page 32: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

UppgiftUppgift

l Parvis – minst en i paret bör ha snörade skor

l Skriv en algoritm för hur man knyter skosnören

l Pseudokod, flödesschema eller båda

l Parvis – minst en i paret bör ha snörade skor

l Skriv en algoritm för hur man knyter skosnören

l Pseudokod, flödesschema eller båda

Page 33: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Äntligen...Äntligen...

Dags att börja programmera

- Interaktiv Python -

Dags att börja programmera

- Interaktiv Python -

Page 34: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

RepetitionRepetition

l Python är ett tolkat språk

l Den interaktiva promptenl >>>

l Instruktionerna körs (exekveras) genastde skrivs in

l Omedelbar feedback – du ser resultatetgenast

l Python är ett tolkat språk

l Den interaktiva promptenl >>>

l Instruktionerna körs (exekveras) genastde skrivs in

l Omedelbar feedback – du ser resultatetgenast

Page 35: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Python som räknemaskinPython som räknemaskin

l Skriv in beräkningar vid promptenoch tryck enter

l Vanliga aritmetiska operationer:

l Skriv in beräkningar vid promptenoch tryck enter

l Vanliga aritmetiska operationer:

Page 36: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Python som räknemaskinPython som räknemaskin

l Operationerna utförs i samma ordningsom i matten:

1. parenteser ()

2. exponenter **

3. multiplikation *, division /, och rest %

4. addition + och subtraktion -

l Operationerna utförs i samma ordningsom i matten:

1. parenteser ()

2. exponenter **

3. multiplikation *, division /, och rest %

4. addition + och subtraktion -

Page 37: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

DatatyperDatatyper

l Värden kan vara av olika typl t.ex. text är inte ett tal à behöver en egen typ

l Primitiva datatyper (eng. primitives)l Grundläggande typer, bastyperl Motsvarar ett enda värde

l Samlingar (eng. collections)l Kombinationer av de primitival Kan innehålla flera värden

l Värden kan vara av olika typl t.ex. text är inte ett tal à behöver en egen typ

l Primitiva datatyper (eng. primitives)l Grundläggande typer, bastyperl Motsvarar ett enda värde

l Samlingar (eng. collections)l Kombinationer av de primitival Kan innehålla flera värden

Page 38: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Datatyper: TalDatatyper: Tal

l Heltal (eng. integer)l tal utan decimaldell 13, 23, 1128, -99 etc.

l Flyttal (eng. Float)l tal med decimaldell 2.3, -0.0076, 19.89, 6.0 etc.

l Obs! Punkt, intekomma!

l Heltal (eng. integer)l tal utan decimaldell 13, 23, 1128, -99 etc.

l Flyttal (eng. Float)l tal med decimaldell 2.3, -0.0076, 19.89, 6.0 etc.

l Obs! Punkt, intekomma!

l Komplexa tal (eng. complex)l 4+3j

l Longl Stora heltall 62081372132

l Komplexa tal (eng. complex)l 4+3j

l Longl Stora heltall 62081372132

Page 39: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

DivisionDivision

l När ett heltal divideras med ett annat utförsheltalsdivision:

l 12 / 5 = 2

l 1 / 3 = 0

l För att få reda på resten kan man användarest-operatorn (%)l 12 % 5 = 2

l 1 % 3 = 1

l När ett heltal divideras med ett annat utförsheltalsdivision:

l 12 / 5 = 2

l 1 / 3 = 0

l För att få reda på resten kan man användarest-operatorn (%)l 12 % 5 = 2

l 1 % 3 = 1

Page 40: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

FlyttalsdivisionFlyttalsdivision

>>> 12 / 5

2

>>> 12.0 / 5

2.3999999999999999

>>> 12 / 5.0

2.3999999999999999

>>> 12.0 / 5.0

2.3999999999999999

För att få flyttalsdivisionmåste minst ett av talenvara ett flyttal.

För att få flyttalsdivisionmåste minst ett av talenvara ett flyttal.

Page 41: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Datatyper: SträngarDatatyper: Strängar

l Text i programmeringsspråk kallas för strängar

l Sträng = text innanför citationstecken

l Både ' och " kan användas‘Detta är en sträng’

“Och det här”

l Strängar kan innehålla citationstecken‘Han sade: “Hoppsan” högt’

l Text i programmeringsspråk kallas för strängar

l Sträng = text innanför citationstecken

l Både ' och " kan användas‘Detta är en sträng’

“Och det här”

l Strängar kan innehålla citationstecken‘Han sade: “Hoppsan” högt’

Page 42: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Utskrift på skärmenUtskrift på skärmen

l Python

l Java

l Python

l Java

Page 43: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

SträngoperationerSträngoperationer

l Både + och * kan användas med strängar

l + operatorn konkatenerar (fogar ihop) två strängar>>> print “Hej" + “då!”

skriver ut Hejdå!

l Operatorn * repeterar en sträng>>> print 3 * "ha"

skriver ut hahaha

l Både + och * kan användas med strängar

l + operatorn konkatenerar (fogar ihop) två strängar>>> print “Hej" + “då!”

skriver ut Hejdå!

l Operatorn * repeterar en sträng>>> print 3 * "ha"

skriver ut hahaha

Page 44: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Bart SimpsonBart Simpson

>>> print "I won’t teach others to fly” * 100

Skriver ut texten 100 gånger!

Men, efter varandra

– hur få dem på skilda rader?

>>> print "I won’t teach others to fly” * 100

Skriver ut texten 100 gånger!

Men, efter varandra

– hur få dem på skilda rader?

Page 45: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Bart SimpsonBart Simpson

>>> print ("I won’t teach others to fly” + ”\n”) * 100

eller

>>> print ("I won’t teach others to fly\n” * 100

Specialtecknet “\n” skriver ut en ny rad.

>>> print ("I won’t teach others to fly” + ”\n”) * 100

eller

>>> print ("I won’t teach others to fly\n” * 100

Specialtecknet “\n” skriver ut en ny rad.

Page 46: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

Foga ihop strängar med talFoga ihop strängar med tal

l Använd kommatecken för att foga ihop strängar med t.ex. tal

>>> print "2 + 2 blir", 2 + 2

>>> print "3 * 4 blir", 3 * 4

>>> print 100 - 1, "är det samma som 100 - 1"

l Använd kommatecken för att foga ihop strängar med t.ex. tal

>>> print "2 + 2 blir", 2 + 2

>>> print "3 * 4 blir", 3 * 4

>>> print 100 - 1, "är det samma som 100 - 1"

Page 47: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

VariablerVariabler

l Variabel = namn som refererar till ett värde

l Plats i datorns minne för att lagra data så att vi kan komma åt det senare igen.

l Variabeln är ett namn som refererar till ett värde(pekar på den minnescell som innehåller det värdet)

l Variabel = namn som refererar till ett värde

l Plats i datorns minne för att lagra data så att vi kan komma åt det senare igen.

l Variabeln är ett namn som refererar till ett värde(pekar på den minnescell som innehåller det värdet)

mitt_namn

“Linda”

Page 48: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

VariablerVariabler

l I Python skapas en ny variabel samtidigt som man ger den ett värde. Detta görs genom en ochsamma tilldelningssats

>>> mitt_namn = ’Linda’

l = kallas tilldelningsoperator

l Efter tilldelningen kan man användavariabelnamnet var som helst i koden där ett värdeav samma datatyp passar in

>>> print ’Hej’, mitt_namn

Hej Linda

l I Python skapas en ny variabel samtidigt som man ger den ett värde. Detta görs genom en ochsamma tilldelningssats

>>> mitt_namn = ’Linda’

l = kallas tilldelningsoperator

l Efter tilldelningen kan man användavariabelnamnet var som helst i koden där ett värdeav samma datatyp passar in

>>> print ’Hej’, mitt_namn

Hej Linda

Page 49: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

VariablerVariabler

l OBS! En variabel som lagrar en primitiv datatypkan bara innehålla ett värde i taget! Om mantilldelar en variabel ett nytt värde skrivs det gamlaöver!

>>> mitt_namn = ’Linda’

>>> print mitt_namn

Linda

>>> mitt_namn = ’Linus’

>>> print mitt_namn

Linus

>>> age = 45

>>> age = age +1

>>> print age

46

l OBS! En variabel som lagrar en primitiv datatypkan bara innehålla ett värde i taget! Om mantilldelar en variabel ett nytt värde skrivs det gamlaöver!

>>> mitt_namn = ’Linda’

>>> print mitt_namn

Linda

>>> mitt_namn = ’Linus’

>>> print mitt_namn

Linus

>>> age = 45

>>> age = age +1

>>> print age

46

Page 50: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

VariabelnamnVariabelnamn

l Variabelnamn får intel vara ett nyckelord l börja med en siffra l innehålla otillåtna tecken (t.ex. $, %, ?, =)

l Skillnad på små och stora bokstäver l minBil är inte samma variabel som minbil

l Vänj dig från början vid att använda namn som betyder något: l Dåligt: vd = 7

l Bra: veckodagar = 7

l Variabelnamn får intel vara ett nyckelord l börja med en siffra l innehålla otillåtna tecken (t.ex. $, %, ?, =)

l Skillnad på små och stora bokstäver l minBil är inte samma variabel som minbil

l Vänj dig från början vid att använda namn som betyder något: l Dåligt: vd = 7

l Bra: veckodagar = 7

Page 51: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

TypningTypning

l Python har dynamisk typning

l kan själv avgöra vilken datatyp en variabel har

l type(variabelnamn)

l Andra programmeringsspråk har oftastatisk typning

l programmeraren måste deklarera alla variablertill den datatyp som den skall kunna innehåll

l Python har dynamisk typning

l kan själv avgöra vilken datatyp en variabel har

l type(variabelnamn)

l Andra programmeringsspråk har oftastatisk typning

l programmeraren måste deklarera alla variablertill den datatyp som den skall kunna innehåll

Page 52: Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python lDatatyper lVariabler lTypning. ... 2. Identifierainput ochoutput 3. Designaen algoritm

TypningTypning

l Python:

vikt = 55.5 (Python vet att vikt är en flyttalsvariabel)

age = 25 (Python vet att age är en heltalsvariabel)

ord = ’dag’ (Python vet att namn är en strängvariabel)

l Statiskt typade språk (t.ex. Java):

float vikt = 55.5

int age = 25

String ord = ’dag’

l Python:

vikt = 55.5 (Python vet att vikt är en flyttalsvariabel)

age = 25 (Python vet att age är en heltalsvariabel)

ord = ’dag’ (Python vet att namn är en strängvariabel)

l Statiskt typade språk (t.ex. Java):

float vikt = 55.5

int age = 25

String ord = ’dag’