Linda Mannila 11.9 · Denna föreläsning l Räkneövningstider l Algoritmer l Interaktiv Python...
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/1.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/3.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/4.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/5.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/6.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/7.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/8.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/14.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/15.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/18.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/19.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/20.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/21.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/22.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/23.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/24.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/25.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/26.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/27.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/28.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/29.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/30.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/31.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/32.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/33.jpg)
Ä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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/34.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/35.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/36.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/37.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/38.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/39.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/40.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/41.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/42.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/43.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/44.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/45.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/46.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/47.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/48.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/49.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/50.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/51.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041723/5e4fbe8f68f4742ab41a55c3/html5/thumbnails/52.jpg)
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’