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

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

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

PROGRAMMERINGSTEKNIK FÖRELÄSNING 5

v. 42 Python HT17 En introduktion Oscar Bergqvist

Grundläggande datalogi - Övning 1

v. 43 Python HT17 En introduktion Oscar Bergqvist

Funktioner. Linda Mannila

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

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

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

Ordlistor, filhantering och ut på webben. Linda Mannila

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

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

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

Besiktningsprotokollet

Föreläsning 10. Besiktningsprotokollet

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

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

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

Mer grafik. Jan Erik Moström

Datalogi för E Övning 3

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

DD1314 Programmeringsteknik

Tentamen i Introduktion till programmering

Föreläsning 6 Programmeringsteknik och Matlab DD1312

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

Objektorienterad Programmering (TDDC77)

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

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

Föreläsning 13 Datalogi 1 DA2001

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

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 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?

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

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

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

Lab5 för prgmedcl04 Grafik

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

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

TDP002 - Imperativ programmering

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

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

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

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

Laboration: Whitebox- och blackboxtesting

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

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

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

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

Detaljbeskrivning av Player

Objektorienterad programmering i Java

Installera Anaconda Python

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

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

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

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

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

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

Övningar Dag 2 En första klass

Övning 1 - Abstrakta datatyper

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

Föreläsning 5-6 Innehåll

Att skriva till och läsa från terminalfönstret

Grafiska användargränssnitt i Java

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

Föreläsning 2 Programmeringsteknik och C DD1316

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

Tentamen i Grundläggande Programvaruutveckling, TDA548

Objektorienterad programmering Föreläsning 2

Sätt att skriva ut binärträd

Övningsuppgifter kapitel 8

Grafiska användargränssnitt i Java

Klasser och objekt, referenser Grundkurs i programmering med Python

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

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

Några saker till och lite om snabbare sortering

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Tentamen i Grundläggande Programvaruutveckling, TDA548

Filer. DA2001 (Föreläsning 16) Datalogi 1 Hösten / 19

729G04 Programmering och diskret matematik. Python 3: Loopar

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Övning 6. Ali Tofigh 24 Oktober, 2006

729G06 Programmering och logik. Grafiska gränssnitt och eventdriven programmering del 2

Selektion och iteration

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

Föreläsning 9-10 Innehåll

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

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

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

Tentamen i Programmering

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

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Uppgifter teknik HT17 (uppdaterad v. 40)

Föreläsning REPETITION & EXTENTA

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

Transkript:

Skolan för Datavetenskap och kommunikation Idag: DD1311 Programmeringsteknik med PBL Granskning Felhantering GUI Föreläsning 15 På torsdag: Mer om GUI På grupptimmen: genomgång av granskningsprotokollet Granskning Innan du redovisar ditt program ska det granskas. Den som granskar ska fylla i granskningsprotokollet och avgöra om programmet är användarvänligt, flexibelt, mm Granskaren ska vara med vid redovisningen. Alla måste granska ett program! Centrerad utskrift En metod som skriver ut centrerat:... och vinnaren är... ******************************************* AISHA med balladen WHAT FOR? (ONLY MR GOD KNOWS WHY) ******************************************* 1

Exempel (inte flexibelt) def vinnarinfo(self): stjarnor = '*'*50 print (self.artist.upper()).center(50) print "med balladen".center(50) print (self.titel.upper()).center(50) Med parameter def vinnarinfo(self, pos): stjarnor = '*'*pos print (self.artist.upper()).center(pos) print "med balladen".center(pos) print (self.titel.upper()).center(pos) Mer om granskning på grupptimmen! 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. 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 ballader = sok("bobby Ljunggren",schlagerfest) alla = sok("bobby Ljunggren",esc2010) 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 Exception - 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 - exempel try: tal = input("vad ska inverteras? ") invers = 1.0/tal except (ZeroDivisionError): print "Noll kan inte inverteras" except (NameError): print "Du borde ha skrivit ett tal!" else: print "Inversen blev", invers Exempel i slinga 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 3

Grafiskt användargränssnitt (GUI) Hur gör man? Hämtar alla klasser i modulen Tkinter. 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 from Tkinter import * roten = Tk() knapp = Button(roten, text="tryck") knapp.pack() roten.mainloop() Tk-konstruktorn - skapar rotfönstret. Knappen placeras. Startar en slinga som väntar på inmatning från användaren. Button-konstruktorn - skapar en knapp. Komponenter 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 Ä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. 4

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 funktion 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) knapp.pack() roten.mainloop() Layout Komponenter har metoder som styr hur de ska placeras i fönstret. Enklast är att använda pack: knapp.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! 5

0 1 2 3 4 5 6 0 1 2 3 Rubrik Person: Sak: Verb: Adjektiv: Kroppsdel: Skriv saga.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 roten.mainloop() när du kör ditt Tkinter-program i IDLE. 6