Mer till P-uppgiften: Dokumentation. Nyheter. Algoritm för sökning. Mer hjälp. DD1311 Programmeringsteknik med PBL

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

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 15

Skolan för Datavetenskap och kommunikation. Programmeringsteknik. Föreläsning 16

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 18

Starta ett fönster... Hur håller tkinter reda på musklick? Olika sätt att organisera fönsterinnehåll. Och för att placera våra widgets

Grundläggande datalogi - Övning 1

v. 42 Python HT17 En introduktion Oscar Bergqvist

Funktioner. Linda Mannila

Introduktion till programmering SMD180. Föreläsning 3: Funktioner

v. 43 Python HT17 En introduktion Oscar Bergqvist

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

PROGRAMMERINGSTEKNIK FÖRELÄSNING 5

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

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

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

Tentamen i Introduktion till programmering

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

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

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

Ordlistor, filhantering och ut på webben. Linda Mannila

Lab5 för prgmedcl04 Grafik

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Mer grafik. Jan Erik Moström

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

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

Övning 2. (Länkade) Listor, noder

DD1314 Programmeringsteknik

Föreläsning 4 Programmeringsteknik DD1310. Felhantering. Syntax. try och except är reserverade ord som används för hantering av exekverings fel.

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

Datalogi för E Övning 3

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

Besiktningsprotokollet

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

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?

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

TDP002 - Imperativ programmering

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

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

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

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

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

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 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

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

Föreläsning 5-6 Innehåll

Textsträngar från/till skärm eller fil

Datalogi, grundkurs 1

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

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

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

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

TUTORIAL: SAMLING & KONSOLL

Övningsuppgifter kapitel 8

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Tentamen i Grundläggande Programvaruutveckling, TDA548

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

Hos vad? och bör därför vara instanseller klassvariabel i vilken klass?

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011

Installera Anaconda Python

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Objektorienterad programmering i Java

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Några saker till och lite om snabbare sortering

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

Grafiska användargränssnitt i Java

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

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

Föreläsning 10. Besiktningsprotokollet

Sätt att skriva ut binärträd

Grafiska användargränssnitt i Java

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å

Föreläsning 6: Introduktion av listor

Objektorienterad Programmering (TDDC77)

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

Föreläsning 13. Rekursion

Procedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Detaljbeskrivning av Player

Procedurer och villkor

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.

Klasser och objekt, referenser Grundkurs i programmering med Python

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

Tentamen i Grundläggande Programvaruutveckling, TDA548

Övning 1 - Abstrakta datatyper

Laboration: Whitebox- och blackboxtesting

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

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

Objektorienterad programmering Föreläsning 2

729G04 Programmering och diskret matematik. Python 3: Loopar

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

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

Föreläsning 3 Programmeringsteknik och Matlab DD1315. Importering av moduler. randrange

Föreläsning 3-4 Innehåll

Rekursion. Rekursiv lösningsstrategi. Algoritmkonstruktion. Exempelproblem Hitta största elementet i en sekvens v i där i 1... n.

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Transkript:

Skolan för Datavetenskap och kommunikation Mer till P-uppgiften: DD1311 Programmeringsteknik med PBL Föreläsning 15 & 16 Hjälpsidor Sökning Rekursion Felhantering Grafiska gränssnitt Nästa tisdag: Mer om grafiska gränssnitt Spelprogrammering med Pygame Nyheter Nu har Pontus rest till Japan! Per-Anders Staav tar över grupp 10. P-redovisningar kl 13-15 (för dom som anmält sig). Dokumentation På http://www.python.org/doc/ finns länkar till dokumentationen: Module Index när du vill veta mer om en modul, t ex random eller copy Tutorial förklaringar och exempel för grunderna i Python Library reference kortfattad manual Mer hjälp I Shell-fönstret finns snabb texthjälp. Exempel: >>dir(str) >>help(str.center) Se även Referenser och FAQ på kursens webbsida! Algoritm för sökning 1. Skapa en tom lista (funna) för alla träffar. 2. Gå igenom varje element i listan Om elementet är det sökta: Lägg till objektet till funna 3. Efteråt returnerar man funna med alla träffar. Exempel: ballader = sok("bobby Ljunggren",listan) 1

Funktion för sökning def sok(x,lista): """Söker efter låtskrivaren x i lista """ funna = [] for sang in lista: if (sang.text == x) or (sang.musik == x): funna.append(sang) return funna Rekursion En rekursiv funktion i Python har: Ett anrop av funktionen själv inuti funktionsdefinitionen. Ett basfall som inte är rekursivt. En if-sats som väljer mellan basfallet och det rekursiva anropet. Använd bara rekursion om du vet vad du gör! Rekursivt exempel def rek(x): if x<4: print x rek(x+1) print x, "igen!" rek(1) Granskning, exempel Funktion för centrerad utskrift:... och vinnaren är... ******************************************* Spaniens RODOLFO CHIKILICUATRE med låten BAILA EL CHIKI CHIKI ******************************************* Exempel (ej flexibelt) def vinnarinfo(self): stjarnor = '*'*50 print (self.land +"s "+ self.artist.upper()).center(50) print "med låten".center(50) print (self.titel.upper()).center(50) Flexibelt med parameter def vinnarinfo(self, positioner): stjarnor = '*'*positioner print (self.land +"s "+ self.artist.upper()).center(positioner) print "med låten".center(positioner) print (self.titel.upper()).center(positioner) Mer om granskning på grupptimmen! 2

Felhantering, t ex Felaktig inmatning: Tecken istället för tal För stort/för litet tal Filer: Infil saknas Felaktiga data i filen Lista/dictionary: Index saknas Nyckel saknas Särfall - repetition När något blir fel i ett Python-program uppstår ett särfall, t ex NameError: >>> print sko Traceback (most recent call last): File "<pyshell#17>", line 1, in -toplevelprint sko NameError: name 'sko' is not defined Man kan ta hand om särfall genom att införa try-except-else-satser för de delar i programmet som kan krascha. särfall=exception Exempel Grafiskt användargränssnitt (GUI) def laspengar(): """ Läser in tills man ger ett heltal""" pengar = None while not pengar: try: svar = raw_input( Ange belopp: ") pengar = int(svar) except(valueerror), e: print "Felaktigt belopp, försök igen" return pengar Använd modulen Tkinter, som har klasser för komponenter. Se "Referenser" på kursens webbsida: GUI-länkar Button Canvas Checkbutton Entry Frame Label Listbox Menu Menubutton Message Radiobutton Scale Scrollbar Text Hur gör man? Hämtar alla klasser i modulen Tkinter. Komponenter from Tkinter import * roten = Tk() knapp = Button(roten, text="tryck") Tk-konstruktorn - skapar rotfönstret. Knappen placeras. Startar en slinga som väntar på inmatning från användaren. Button-konstruktorn - skapar en knapp. Knappar och annat kallas komponenter och är objekt. Varje komponent har en konstruktor med många defaultparametrar. Anropa bara med det som behövs: knapp = Button(roten,text="Handla") Första parameter ska vara roten 3

Ändra attribut Attributen kan ändras ett i taget: knapp["text"] = "Klart" Med metoden config kan man ändra flera attribut åt gången: knapp.config(bg = "lightblue", height = 3, width = 9, font = ('times', 20, 'italic')) Här ändrar vi knappens färg, storlek, och textfont. Variabler Ett attribut som alla komponenter har är variable. Om man i förväg skapat ett variabelobjekt: s = StringVar() så kan man koppla ihop variabel och komponent med knapp["variable"] = s Metoden get hämtar data från en variabel. Anropa funktion med knapptryck! Ett annat attribut som alla komponenter har är command. Där anger man vilken metod/funktion som ska anropas när komponenten används. Om vi skriver en funktion addera() som ska anropas när nån trycker på knapp så kan vi koppla ihop metod med knapp så här: knapp["command"] = addera Man kan också koppla ihop knappen med en funktion när den skapas: from Tkinter import * def byttext(): knapp["text"] = "Aj!" roten = Tk() knapp = Button(roten, text = "Tryck inte", command = byttext) Layout Komponenter har metoder som styr hur de ska placeras i fönstret. Enklast är att använda pack: Men bättre kontroll fås med grid: knapp.grid(row=4, column=3) Rita först en skiss över hur det ska se ut! 0 1 2 3 4 5 6 0 1 2 3 Rubrik Person: Sak: Verb: Adjektiv: Kroppsdel: Skriv saga 4

.py eller.pyw? Program som är avsedda att startas med dubbelklick på ikonen brukar man ge efternamnet ".pyw", t ex "saga.pyw" Då slipper man det svarta DOS-fönstret i bakgrunden. Men under avlusningen kan man utnyttja DOS-fönstret för kontrollutskrifter med print eller raw_input. Tkinter och IDLE Din utvecklingsmiljö IDLE är skriven i Tkinter! Det innebär att mainloop redan är igång om du kör programmet inifrån IDLE, vilket kan få Shell-fönstret att bete sig underligt. Kommentera därför bort raden när du kör ditt Tkinter-program i IDLE. 5