Erfarenheter från labben

Relevanta dokument
729G04 Programmering och diskret matematik. Python 3: Loopar

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Föreläsning 2 Programmeringsteknik och C DD1316

Använda Python Laboration 1 GruDat, DD1344

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Datalogi för E Övning 3

Tentamen i Introduktion till programmering

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Grundläggande datalogi - Övning 1

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Introduktion till programmering SMD180. Föreläsning 8: Listor

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Övning 1 - Abstrakta datatyper

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista

729G04 Programmering och diskret matematik

Tentamen i Grundläggande Programvaruutveckling, TDA548

729G04 Programmering och diskret matematik. Föreläsning 7

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Föreläsning 4 Programmeringsteknik och Matlab DD1312. Logiska operatorer. Listor. Listor, tupler, strängar och forslingor

Skillnader mellan Python och Java

Laboration: Whitebox- och blackboxtesting

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

Namn Stil Dokumentation Objekt-orienterad programmering OBS OBS OBS OBS OBS OBS OBS OBS

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till:

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Hur man programmerar. Exempel på problemlösning i Python

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Funktioner. Linda Mannila

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Problemlösning och funktioner Grundkurs i programmering med Python

Användarhandledning Version 1.2

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

HI1024 Programmering, grundkurs TEN

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Pythons standardbibliotek

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Extra lab. Nu på fredag kl 8-12 Frivillig Enbart hjälp med projektuppgiften Ingen examination

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program.

Övningsuppgifter kapitel 8

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Föreläsning 13 Testning och strängar

Python vecka 41-42: Individuell programmering

Arrayer (fält)

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Uppgifter teknik HT17 (uppdaterad v. 40)

729G04 Programmering och diskret matematik

Datalogi, grundkurs 1

DD1314 Programmeringsteknik

Omprov 11/11. på förmiddagen.

Funktionell programmering DD1361

Språket Python - Del 2 Grundkurs i programmering med Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

Föreläsning 3 Programmeringsteknik och C DD1316. Innehåll i listor. Uppdateringsoperatorer. +,* och listor. Listor. Indexering

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo,

Erfarenheter från labben

OOP Objekt-orienterad programmering

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Strängar. TDDD64 Programmering i Python Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

Sätt att skriva ut binärträd

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Beräkningsvetenskap föreläsning 2

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Tentamen TEN1 HI

Övning 6. Ali Tofigh 24 Oktober, 2006

Tentamen i Grundläggande Programvaruutveckling, TDA548

PROMETHEUS. Ett typat, objektorienterat programmeringsspråk av Tim Andersson.

Uppgift 1 (grundläggande konstruktioner)

Sammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111

Översikt över Visual Basic

Tenta i Grundläggande programmering DD klockan

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

729G04 PYTHON 5 JODY FOO. Department of Computer and Information Science (IDA) Linköping University, Sweden

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

TDIU01 - Programmering i C++, grundkurs

Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D.

Läsöversikt. Föreläsningar 2-6. Genomförande av laborationer

Föreläsning 5 Programmeringsteknik DD1310. Modulen doctest. Exempel. Doctest Dictionary Filhantering

TDDE44 Programmering, grundkurs

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

Föreläsning 3-4 Innehåll

Teori: Variabler En variabel har fyra grundläggande egenskaper: Namn, Typ, Värde och Synlighet.

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

Grundläggande Datalogi

TDP002 - Imperativ programmering

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

729G04 Programmering och diskret matematik. Föreläsning 5

Imperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz,

Introduktion till programmering SMD180. Föreläsning 7: Strängar

Grundläggande databehandling ht 2005

Transkript:

Erfarenheter från labben Bra Jobbat! Lite ont om plats... Parprogrammering? Skillnad mellan program och funktion! Skillnad mellan uttryck och kommando! Välj bra variabelnamn! Vad göra om det blir fel? 1

Program vs funktion tal = input( Ange talet ) sum = 0 while tal > 0: sum += tal%10 tal = tal/10 print siffersumman är, sum def siffersum(tal): sum = 0 while tal > 0: sum += tal%10 tal = tal/10 return sum 2

Program vs funktion tal = input( Ange talet ) def siffersum(tal): sum = 0 while tal > 0: sum += tal%10 tal = tal/10 Precis samma sum = 0 while tal > 0: sum += tal%10 tal = tal/10 print siffersumman är, sum return sum 2

tal = input( Ange talet ) sum = 0 while tal > 0: sum += tal%10 tal = tal/10 print siffersumman är, sum def siffersum(tal): sum = 0 while tal > 0: sum += tal%10 tal = tal/10 return sum Ett program som läser och skriver data i terminalfönstret En funktion som kan anropas av andra program eller funktioner >>> Ange talet: 1338 siffersumman är 15 >>> >>> >>> siffersum(1338) 15 >>> 3

tal = input( Ange talet ) sum = 0 while tal > 0: sum += tal%10 tal = tal/10 print siffersumman är, sum def siffersum(tal): sum = 0 while tal > 0: sum += tal%10 tal = tal/10 return sum Ett program som läser och skriver data i terminalfönstret En funktion som kan anropas av andra program eller funktioner for n in range(1,10000): if siffersum(n)**3 == n: print n 3

Tumregler När du programmerar, skriv alltid som en samling funktioner. När du testar, skriv små program (inte nödvändigtvis funktioner). Så fort du gjort en ändring, testa! 4

Uttryck vs kommando Ett uttryck är något som har ett värde, ex 5+a hej *5 b == 9 Ett kommando är en instruktion till Python att göra något, ex print hej *5 if b == 9: break v = 5+a Obs skillnad mellan a == b (likhetstest) och a = b (tilldelning) 5

Funktionsanrop som uttryck och kommandon def f(x): return 2*x+3 def g(x): z = f(x)**2.. def f(x): print x*5 return def g(x): f(x) if x**2 > 3:.. Funktioner som avslutas med return <uttryck> används som uttryck Funktioner som avslutas med return används som kommandon 6

Mer precist: En funktion kan ha ett eller båda av: Returvärde (definieras i return) Sidoeffekter (tex print) def f(x): print x return 2*x+3.. tal = f(5).... f(5).. Skriver ut 5 och tilldelar tal 13 Skriver ut 5. Värdet 13 beräknas visserligen men slängs bums bort 7

Specialare: En funktion som avslutas med return ger faktiskt det speciella värdet None. Ex: def f(x): print x*3 return b = f(5) print b Anropar f som skriver ut 15. Värdet på b blir None Skriver alltså ut None Körexempel 8

Variabelnamn Undvik alltför lakoniska (a,b,c) Jättekorta namn bara vid begränsat scope Kapitulera inte för fantasibrist (bla, foo) Heller inte för långa! Upp till åtta bokstäver är bra. Detsamma gäller namn på funktioner 9

def bla(): l = 1 b = 0 c = 1 while l <= 50: print "x"*cl(l) if cl(a) > b: b = cl(a) c = a l += 1 print "m =", b, "n =",c 10

def hist_max(): loopvar = 1 maximum = 0 var_max = 1 while loopvar <= 50: print "x"*cl(loopvar) if cl(loopvar) > maximum: maximum = cl(loopvar) var_max = loopvar loopvar += 1 print "m =", maximum, "n =", var_max 11

Python: listor [1, 18, 4, 0] en lista med fyra element Ser ut som Matlabs arrayer, men VARNING! Mycket lite av Matlabs arrayoperationer finns i Pythons listoperationer, och vice versa, och de som finns gör inte säkert samma sak! Till att börja med, index för Pythonlistor börjar alltid på 0 a = [1, 18, 25, 137] a[0] är 1 a[1] är 18 Körexempel a[3] är 137 12

a = [123, 456, 47, 14] a: 123 456 47 14 a[1] = 99 a: 123 99 47 14 b = [123, 99, 47, 14] a: b: 123 99 47 14 123 99 47 14 a == b är True a is b är False 13

a = [123, 456, 47, 14] a: 123 456 47 14 b = a a == b är True a is b är True a: b: 123 456 47 14 a: a[1] = 99 b: 123 99 47 14 nu har också b[1] blivit 99 14

Operationer på listor len(a) ger längden på listan a min(a), max(a) ger minsta resp. största värdet i a a+b konkatenerar listorna a och b x in a ger True om x finns i listan a [] Tom lista Varning: sista elementet i listan a är 15

Operationer på listor len(a) ger längden på listan a min(a), max(a) ger minsta resp. största värdet i a a+b konkatenerar listorna a och b x in a ger True om x finns i listan a [] Tom lista Varning: sista elementet i listan a är a[len(a)-1] 15

Loopar och listor Paradigm 1 Paradigm 2 Obs att range(x) är (0,1,...,x-1) for element in a: loopkropp for index in range(len(a)): loopkropp Ett varv för varje element i listan. element används för att komma åt elementet, ex ## Summera kvadrater sum = 0 for element in a: sum += element**2 Ett varv för varje element i listan. index används för att komma åt indexet. ex ## Öka varje element med 1 for index in range(len(a)): a[index] += 1 16

Listletningsparadigm def findit(li) for element in li: if element > 10: return True return False Leta efter ett element större än 10. Om ett sådant finns returnera True, annars False def findit(li) for element in li: if element > 10: return element return def findit(li) for idx in range(len(li)): if li[idx] > 10: return idx return Leta efter ett element större än 10. Om ett sådant finns returnera det första sådana elementet, annars None Leta efter ett element större än 10. Om ett sådant finns returnera indexet till det första elementet, annars None Körexempel 17

Strängar En text omsluten av antingen enkla eller dubbla citationstecken a = Joachim b = tack för hjälpen J o a c h i m t a c k f ö r h j ä l p e n Några specialare används för radbyte etc. Oftast \n a = Heja!\nHeja print a H e j a! \n H e j a Heja! Heja 18

Strängar som listor Väldigt många listoperationer fungerar också på strängar a = Joachim a[1] är o a == b strängarna är lika tecken för tecken a < b alfabetisk ordning a + b konkatenering len(a) antal tecken i a x in a om delsträngen x finns i a tomma strängen En del fungerar inte på strängar, tex tilldelning av element a = Joachim a[1] = u Körexempel 19

Omvandla sträng/lista För att omvandla en sträng till en lista av tecken finns funktionen list: a = Joachim b = list(a) a [ J, o, a, c, h, i, m ] Åt andra hållet finns strängmetoden join a = [ h, e, j ] b =.join(a) print b hej 20

Metodanrop Likartat funktionsanrop men inleds av ett objekt följt av punkt. Objekt, i detta fall tomma strängen Metodnamn.join(a) Aktuella parametrar Punkt, markerar tillhörighet, typ den join som hör till tomma strängen 21

Från www.python.org Documentation 6.6.1: string methods str.join(seq) Return a string which is the concatenation of the strings in the sequence seq. The separator between elements is the string providing this method..join([ a, b, c ]) == abc xx.join([ a, b, c ]) == axxbxxc 22

Funktioner vs metoder Python har en stor mängd av båda och en återkommande huvudvärk är att komma ihåg vad som är funktion och vad som är metod! Längd len(a) funktion Slå ihop str.join(a) metod Maximum max(a) funktion Sortera a.sort() metod 23

Metoder ändrar ofta sitt objekt och fungerar som kommandon snarare än uttryck Ex: sort sorterar objektet och returnerar None b = [2,5,3,4].sort() Fel ger b = None b = [2,5,3,4] b.sort() Rätt ger b = [2,3,4,5] Exempel: sortera en textsträng b = Joachim a = list(b) a.sort() b =.join(a) # b innehåller mitt namn # gör om det till en lista # sortera listan # gör om listan till en sträng 24

Bygga upp lista stegvis Exempel: Lägg till elementet 137 till listan a 1. Använd plus a = a + [137] Skapar en kopia av listan och lägger till 137 2. append-metoden a.append(137) Utökar listan med 137 a: b: 123 456 47 14 a: 123 456 47 14 137 a: b: 123 456 47 14 137 b: 123 456 47 14 25

Inför lab 2: Lär er hitta på www.python.org och i Python pocket reference Läs på om listor och strängar Man behöver inte kunna allt. Man behöver kunna grunder. Man behöver kunna använda dokumentation. Allt är en träningssak. Körexempel 26