Föreläsning 9 Sökning, sortering, grafikprogrammering.

Slides:



Advertisements
Liknande presentationer
En introduktion till programmeringsspråket Python
Advertisements

Grunder i PowerPoint 2000 Skapa en ny presentation Rita egna objekt
II130V Konstruktion av webbsidor Välkommen till föreläsning 3 September 2007.
2D1311 Programmeringsteknik med PBL
Algoritmer och data strukturer -Länkade listor
Sökning och sortering Linda Mannila
Programmeringsteknik
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 18 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 6 Skolan för Datavetenskap och kommunikation.
Repetition inför provet
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
Logikprogrammering Ons, 25/9
2D1311 Programmeringsteknik med PBL Föreläsning 3 Skolan för Datavetenskap och kommunikation.
Programmeringteknik Webbdelen. HTML H yper T ext M arkup L anguage Märker upp sidans innehåll så att webbläsaren kan avgöra hur innehållet ska visas.
©storm.
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
Föreläsning 4 Python: mera om funktioner och parametrar
2D1311 Programmeringsteknik med PBL Föreläsning 5 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 6 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
1 Föreläsning 3 Datalogi för E1 / 2D1343 Repetition List List operationer Stränghantering For-slingor.
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 8 Appletprogram/fristående grafiska program Rita linjer, rektanglar mm Skriva text Byta färg Appletprogram html.
Föreläsning 5.  Idag  Kap 7 i Dawson  Filer  Felhantering med try…except.
Pathfinding. –Vad är det? –Sökning från A till B.
Föreläsning 5. Problemet Vi har sett att vi kan ersätta de metoder vi ärver från överklassen med egen funktionalitet (polymorfism) class Bil : public.
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Programmeringsteknik
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Vektorer (klassen Vector) Sortering
Powerpoint …är ett program som du använder till att: …är bra till att
Klicka på Aktivera redigering i meddelandefältet
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Programmeringsteknik för Media1 & K1
Listor En lista är en föränderlig ordnad samling objekt.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
DD1311 P ROGRAMMERINGSTEKNIK MED PBL Föreläsning 9 Skolan för Datavetenskap och kommunikation.
Integrera mp3 i hotpotatoes.  Se hur test-övningen kommer att se ut: N1_Audio_01.htm
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 2 Skolan för Datavetenskap och kommunikation.
Namnrum, räckvidd och rekursion Linda Mannila
1 ITK:P1 Föreläsning 8 Multimedia för spelkonstruktion DSV Peter Mozelius.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Spelprogrammering med bilder och ljud
1. Ett problem/uppgift.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Programmeringsteknik Föreläsning 8 Skolan för Datavetenskap och kommunikation.
Föreläsning 7 Programmeringsteknik och Matlab DD1315 Kommandotolk parametrar Klass Instans Metod konstruktor.
Programmeringsteknik Föreläsning 17 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
1 Föreläsning 8 Mer om klasser och objektorientering.
7. Delegerare och notifierare
Föreläsning 2 2D1312 Introduktion till Python Kap 1 och 2 i kursboken.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Programmeringsteknik
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 9 Sökning, sortering, grafiska gränssnitt (GUI)
Lektion 4.
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

Föreläsning 9 Sökning, sortering, grafikprogrammering

Vitaminklassen class Vitamin(object): """Representerar en vitamintablett""" def __init__(self, namn, c, selen): """Konstruktorn""" self.c = c self.selen = selen self.namn = namn def __str__(self): """För utskrift""" return self.namn + "\n C-vitamin: " + str(self.c) + "\n Selen: " + str(self.selen)

Vitaminer i lista # Skapa tre Vitamin-Objekt v1 = Vitamin("Plexivital",120,20) v2 = Vitamin("Multitab",400,7) v3 = Vitamin("Sjuomdan",10,1) # Lägg objekten i en lista lista = [v1,v2,v3]

Algoritm för sökning 1.Skapa en tom funna-lista för alla träffar. 2.Gå igenom varje element i vitamin-listan –Om elementet är det sökta: Lägg till vitaminen till funna-listan 3.Efteråt har man en funna-lista med alla träffar.

Funktion för sökning def sok(x,lista): """Söker efter objekt som heter x """ funna = [] for v in lista: if v.namn == x: funna.append(v) return funna

Testa sökfunktionen funna = sok("Sjuomdan",lista) for v in funna: print v

Sortering Python-listor har en inbyggd sort-metod: –lista.sort() Men om man har en lista av objekt - vilket attribut sorterar sort() på då? Och tänk om man vill sortera på olika attribut, t ex först på c-vitamin-innehåll och sedan på selen-innehåll?

Lägg till get-metoder i klassen def get_c(self): """Ger C-vitamin-innehåll""" return self.c def get_selen(self): """Ger selen-innehåll""" return self.selen def get_namn(self): """Ger namnet""" return self.namn

Sort med key Nu kan sort anropas med parametern key satt till get-metoden för det vi vill sortera på! lista.sort(key=Vitamin.get_c)

Grafikpaket Pygame är ett grafikpaket (en samling moduler). LiveWires är ett extralager som gör det enklare att använda Pygame. Appendix A i boken beskriver LiveWires.

Vad finns i LiveWires? Modulerna games och color (färgkonstanter) games innehåller klasserna –Screen (grafikfönstret) –Sprite (figurer som kan flytta sig i grafikfönstret) –Text (text i grafikfönstret) –Message (text som bara syns en stund) –Animation (en samling bilder som bildar en film) –Mouse (tar emot inmatning från musen) –Keyboard (tar emot tangenttryckningar) –Music (laddar och spelar musikfiler)

moving_pan.py Ett exempel från kap 11, där 1.Grafikfönstret öppnas 2.En bakgrundsbild laddas in 3.Figuren "Pan" (en Sprite) skapas 4.Inmatning från musen tas emot för att styra Pan

# Moving Pan # Demonstrates mouse input from livewires import games games.init(screen_width=640, screen_height=480, fps=50) class Pan(games.Sprite): """ A pan. Controlled by the mouse. """ def update(self): """ Move to mouse coordinates. """ self.x = games.mouse.x self.y = games.mouse.y uppdateringshastighet ärver attribut och metoder ger muspekarens koordinater

def main(): wall_image=games.load_image("wall.jpg", transparent = False) games.screen.background = wall_image pan_image = games.load_image("pan.bmp") the_pan = Pan(image = pan_image, x = games.mouse.x, y = games.mouse.y) games.screen.add(the_pan) games.mouse.is_visible = False games.screen.event_grab = True games.screen.mainloop() main() muspekaren håller sig innanför grafikfönstret

Animationer En Animation är en serie bilder som kan spelas upp som en film. Explosionen i explosion.py i kap 12 är ett exempel. Först skapar man en lista med bildfiler. Sen ett Animation-objekt, med bildlistan, postition och visningsparametrar.

Bildlistan explosion_files = ["explosion1.bmp", "explosion2.bmp", "explosion3.bmp", "explosion4.bmp", "explosion5.bmp", "explosion6.bmp", "explosion7.bmp", "explosion8.bmp", "explosion9.bmp"]

Animation-objekt explosion = games.Animation( images = explosion_files, x = games.screen.width/2, y = games.screen.height/2, n_repeats = 0, repeat_interval = 5) bildlistan position antal filmvisningar tid mellan successiva bilder

Ljud Ljudfiler måste vara på formatet *.wav Ljudet laddas med metoden load_sound och styrs med metoderna play och stop Exempel: missile_sound = games.load_sound("missile.wav") missile_sound.play(3) Man kan ha upp till åtta ljud igång samtidigt!

Musik Musik fungerar ungefär som ljud, men Det finns bara en musikkanal (motsvaras av objektet games.music) Man kan ladda musikfiler på flera olika format, t ex MP3 och MIDI Exempel: games.music.load("theme.midi") games.music.play(-1) #-1=evigt sound_and_music.py demonstrerar!

Programutveckling Alla större program i boken har utvecklats på följande sätt: Skriv först en algoritm för programmet. Skriv en superenkel förstaversion av programmet och provkör den. När den fungerar… Bygg på med lite till och provkör igen. Upprepa tills programmet är klart (astrocrash finns i åtta versioner i bokens kapitel 12). Detta kallas prototypprogrammering!

Fortsättningskurser Nästa obligatoriska kurs från oss är 2D1214 Numeriska metoder i höst Valfria datakurser att fortsätta med är 2D1320 Tillämpad datalogi, följt av t ex –2D1385 Programutvecklingsteknik –2D1334 Databasteknik Välkomna!

Kursenkät Kursenkäten finns på kursens webbsida, under rubriken "Kursanalys" Eftersom det här är första gången kursen ges i Python är vi extra intresserade av dina åsikter!