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

Relevanta dokument
Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Övning 6. Ali Tofigh 24 Oktober, 2006

Uppgifter teknik HT17 (uppdaterad v. 40)

Sätt att skriva ut binärträd

Mer grafik. Jan Erik Moström

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

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

Tentamen i Introduktion till programmering

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

Datalogi, grundkurs 1

Grundläggande datalogi - Övning 1

Föreläsning 2 Programmeringsteknik och C DD1316

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

Funktioner. Linda Mannila

Användarhandledning Version 1.2

Classes och Interfaces, Objects och References, Initialization

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

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

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

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

729G04 Programmering och diskret matematik. Python 3: Loopar

Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två

Skillnader mellan Python och Java

Programmering och algoritmiskt tänkande. Tema 3, föreläsning 1 Jody Foo

Föreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul

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?

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

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

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

Övningsuppgifter kapitel 8

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

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

Övning 1 - Abstrakta datatyper

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

PYTHON SNABBREPETITION MEN FÖRST LITE ALLMÄNT OM PROGRAMMERING 729G04 PYTHON 2. Dagens Python

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

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 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Omprov 11/11. på förmiddagen.

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Erfarenheter från labben

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Objektsamlingar i Java

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Grundläggande datalogi - Övning 3

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Föreläsning 13 och 14: Binära träd

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

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Grundläggande datalogi - Övning 2

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

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

Problemlösning och funktioner Grundkurs i programmering med Python

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Klasser och objekt, referenser Grundkurs i programmering med Python

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

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

TDP002 - Imperativ programmering

Grundläggande Datalogi

Övning 0. Python för den som kan MATLAB. Lättare att läsa färdig kod än att skriva själv Det krävs övning för att automatiskt få detaljerna rätt:

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

TDP002 - Imperativ programmering

Tentamen Grundläggande programmering

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

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

Karlstads Universitet, Datavetenskap 1

Tentamen ges för: Tentamensdatum: Tid:

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

Pythons standardbibliotek

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.

Introduktion till programmering SMD180. Föreläsning 12: Klasser och objekt

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode

Deklarationer/definitioner/specifikationer

Planering av ett större program, del 2 - for och listor. Linda Mannila

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

729G28. Webbprogrammering och databaser. Introduktion till webbutveckling med PHP. Jakob Pogulis Institutionen för Datavetenskap (IDA)

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Idag: Centrerad utskrift. Granskning. DD1311 Programmeringsteknik med PBL. Granskning Felhantering GUI. Föreläsning 15.

Python. Datatyper. Mer om datatyper. Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam!

DD1314 Programmeringsteknik

Grundläggande programmering med C# 7,5 högskolepoäng

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

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

v. 42 Python HT17 En introduktion Oscar Bergqvist

Föreläsning 3: Booleans, if, switch

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Lösningsförslag. 1 Lösningsförslag. Uppgift 1

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

Transkript:

Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D. tobias@dsv.su.se

Notera att exemplen är i Python 2.5 För att översätta till Python 3.0, gör följande ändringar print(x,y) istället för print x,y input("ett tal: ") istället för raw_input("ett tal: ")

# prog 01, "Hello, world" print "Hello, world" # prog 02, "Greet" name = raw_input("what is your name? ") print "Hello," name # prog 03, "Sort names" names = [] i = 0 while i<5: names[i] = raw_input("type in a name: ") i = i + 1 names.sort() for name in names: print name

# prog 04, "Simple adder" term1 = raw_input("give me a number: ") term2 = raw_input("give me another number: ") term1 = int(term1) term2 = int(term2) print term1, "+", term2, "=", term1+term2

# prog 05, "Area calculator" base = raw_input("base: ") height = raw_input("height: ") base = int(base) height = int(height) area = base * height print "The rectangle", base, "x", height, "has area", area

# prog 06, "Simple calculator" term1 = raw_input("give me a number: ") term2 = raw_input("give me another number: ") op = raw_input("give me an operator: ") term1 = int(term1) term2 = int(term2) sum = 0 if op == "+": sum = term1 + term2 elif op == "-": sum = term1 - term2 elif op == "*": sum = term1 * term2 elif op == "/": sum = term1 / term2 print term1, op, term2, "=", sum

# prog 08, "Rectangle drawer 1" base = raw_input("base: ") height = raw_input("height: ") base = int(base) height = int(height) for row in range(0,height): for col in range(0,base): print "X", print "" # prog 09, "Rectangle drawer 2" base = raw_input("base: ") height = raw_input("height: ") base = int(base) height = int(height) print ("X " * base + "\n") * height

# prog 10, "Rectangle drawer 3" base = raw_input("base: ") height = raw_input("height: ") base = int(base) height = int(height) while height > 0: temp = base while temp > 0: print "X", temp = temp - 1 print "" height = height - 1

# prog 10, "Name count" fil = open("names.txt") names = fil.readlines() fil.close() counter = {} for name in names: if name in counter.keys(): counter[name] = counter[name] + 1 else: counter[name] = 1 for name in counter.keys(): print name + ":", counter[name]

# prog 11, "Most common name" fil = open("names.txt") names = [] for name in fil.readlines(): names.append(name.strip()) fil.close() counter = {} largest = { "count" : 0, "name" : None } for name in names: if name in counter.keys(): counter[name] = counter[name] + 1 else: counter[name] = 1 if counter[name] > largest["count"]: largest = { "count" : counter[name], "name" : name } print "Most common name was", largest["name"], \ "at", largest["count"]

Funktion En funktion är en samling instruktioner under ett namn Ett exempel är funktionen sqrt() som tar roten ur Istället för att upprepa instruktionerna kan man anropa funktionen flera gånger En funktion kan returnera ett resultat En funktion kan ta emot argument från den som anropar, t.ex. sqrt(9) för att dra roten ur 9 och sqrt (123) för att dra roten ur 123

# prog 12, "greeter" def greet(message): name = raw_input("skriv ditt namn: ") print message, name greet("hello") greet("hi") greet("oi")

En ungefärlig tolkning av föregående program message = "Hello" name = raw_input("skriv ditt namn: ") print message, name message = "Hi" name = raw_input("skriv ditt namn: ") print message, name message = "Oi" name = raw_input("skriv ditt namn: ") print message, name Python ersätter anropet till en funktion med koden för funktionen. Det är inte så det egentligen fungerar, men det är ett sätt att förstå konceptet.

# prog 12, "prog 10 refactored with functions" # Library part def read_list(filename): fil = open(filename) names = [] for name in fil.readlines(): names.append(name.strip()) fil.close() return names def frequency_count(set): freq = {} for el in set: if el in freq.keys(): freq[el] = freq[el] + 1 else: freq[el] = 1 return freq # Actual program (in same file for now) names = read_list("names.txt") counter = frequency_count(names) for name in counter.keys(): print name + ":", counter[name]

# prog 13, "prog 11 refactored with functions" # Actual program names = read_list("names.txt") counter = frequency_count(names) largest = { "count" : 0, "name" : None } for name in counter.keys(): if counter[name] > largest["count"]: largest = { "count" : counter[name], "name" : name } print "Most common name was", largest["name"], \ "at", largest["count"]

# Returnera det största av två värden def max(a,b): if a > b: return a else: return b print max(3,5) print max(75235342,9097867236) print max(7,7) # Returnera det största av två värden, alternativ def max(a,b): result = None # läs om None på nästa sida if a > b: result = a else: result = b return result

Värdet None None är ett värde (som siffran 1, strängen "Hej", det booleska värdet False och listan [1,3,5,7]) Det används för att representera ingenting, eller avsaknad av ett värde Man kan tilldela en variabel värdet None innan man räknat ut det värde den skall ha, som i fallet med result på föregående bild (För den som programmerat tidigare i språk som har koncept som null eller nil så är det samma sak)

Klass En klass är en beskrivning av en typ av objekt, t.ex. beskriver klassen Person vad en person är, klassen list vad en lista är, etc. En klass används för att skapa objekt, objekt kallas även för instanser och att skapa dem för att instantiera en klass (instans betyder ung. förekomst, d.v.s. ett objekt är en faktisk förekomst av någonting en klass beskriver) En klass kan ha 0 eller flera attribut och metoder Attribut är som variabler och metoder är som funktioner Klassbegreppet är viktigt först på senare kurser

# prog 14, "A simple class" class Point: def init (self, x, y): self.x = x self.y = y def move_to(self, other_point): self.x = other_point.x self.y = other_point.y def display(self): print "(" + str(self.x) + "," + str(self.y) + ")" origo = Point(0,0) some = Point(5,7) some.display() some.move_to(origo) some.display()

# prog 15, "A slightly more complex class" class Person: def init (self, name, age): self.name = name self.age = age self.spouse = None def marry(self, person): self.spouse = person def present(self): last = "." if not self.spouse == None: last = ", and I'm married to " + self.spouse.name + "." return "Hello, my name is " + self.name + ", " + \ "I'm " + str(self.age) + " years old" + last bob = Person("Bob", 17) alice = Person("Alice", 23) print bob.present() alice.marry(bob) print alice.present()