Föreläsning 13 Datalogi 1 DA2001

Relevanta dokument
Föreläsning 6 Programmeringsteknik och Matlab DD1312

Skapa hashtabell. En hashtabell kan ses som en lista där programmeraren associerar egna nycklar (index) till varje element som ska läggas i tabellen :

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

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

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

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 2 Objektorienterad programmering DD1332. Typomvandling

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

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

Föreläsning 18 Filer och avbildningar

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

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

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

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

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

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

Ordlistor, filhantering och ut på webben. Linda Mannila

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!

729G06 Programmering och logik. OOP: Klassdiagram, arv Allmänt: Undantagshantering

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

(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

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Den klassiska programmodellen. Introduktion till programmering D0009E. Föreläsning 11: Filer och undantag. Filsystem. Interaktiva program.

Java, klasser, objekt (Skansholm: Kapitel 2)

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

Föreläsning 14 Innehåll

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel

Grundläggande datalogi - Övning 4

Programmering för språkteknologer II, HT2014. Rum

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?

Objektorienterad programmering i Java

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

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

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

Objekt och klasser - Introduktion

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Objektorienterad programmering D2

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

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 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Föreläsning 5-6 Innehåll

Sätt att skriva ut binärträd

TDDD78 Objektorientering: Lagring och livstid

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

Föreläsning 3-4 Innehåll

TDP002 - Imperativ programmering

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

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Föreläsning 9-10 Innehåll

Programmering för språkteknologer II, HT2011. Rum

Grundläggande datalogi - Övning 2

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

Programmering grundkurs

DAT043 Objektorienterad Programmering

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Några saker till och lite om snabbare sortering

Tentamen i Algoritmer & Datastrukturer i Java

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

Övning 6. Ali Tofigh 24 Oktober, 2006

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

Klassen javax.swing.timer

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 )

Testning av program. Verklig modell för programutveckling

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

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

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Föreläsnings 9 - Exceptions, I/O

Kopiering av objekt i Java

Klasser och objekt, referenser Grundkurs i programmering med Python

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Klasser och objekt. Henrik Johansson. August 20, 2008

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

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

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

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.

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

Objektorienterad Programmering (TDDC77)

Programmering för språkteknologer II, HT2011. Rum

Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!

Konstruktion av klasser med klasser

Selektion och iteration

Tentamen i Grundläggande programmering STS, åk 1 lördag

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Objektorienterad Programmering DAT043

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Transkript:

Föreläsning 13 Datalogi 1 DA2001 Hashtabeller Särfall (exception) klasser En hashtabell kan ses som en lista där programmeraren associerar egna nycklar (index) till varje element som ska läggas i tabellen : Nycklar: 5 1 12 Element: maj jan dec 1/16 Skapa hashtabell Skapa med måsvingar och par av nyckel och värde, enligt nedan: ht={1: jan, 12: dec, 5: maj } Skapa med dict(): ht=dict() ht[1]= jan ht[12]= dec ht[5]= maj 2/16 1

Identifiera element Element identifieras med nyckelobjekt, men det måste finnas ett objekt lagrat med given nyckel: print (ht[1]) print (ht[5]) print (ht[15]) Vad skrivs ut av ovanstående? 3/16 Kontrollerad åtkomst Alternativ 1: Kontrollera förekomst innan åtkomst. if 15 in ht: x = ht[15] Alternativ 2: Använd get() med defaultvärde: x = ht.get(15, FINNS EJ! ) y = ht.get(15) Vad får x och y för värde om 15 inte finns i tabellen? 4/16 Skapa hashtabell från listor Hashtabell kan skapas från två listor som att dra ihop ett blixtlås: keys= [1,12,5] values=[ jan, dec, maj ] parvis=zip(keys,values) ht=dict(parvis) zip 1 12 jan dec 5 maj 5/16 2

Listor med nycklar och värden en keys() returnerar en lista med alla nycklar en values() returerar en lista med alla värden keylist = list(ht.keys()) vallist = list(ht.values()) 6/16 Ytterligare operationer Antalet element i tabellen: len(ht) Ta bort element: del ht[12] Kopiera hela tabellen: htcopy = ht.copy() 7/16 Exception try och except är reserverade ord som används för hantering av exekveringsfel. plista= ['s','v','m','mp','fp','c','kd'] try: i=input( Ange index: ) i=int(i) parti=plista[i] except: print ( Nagot fel intraffade ) 8/16 3

Syntax try: Kod som kan orsaka något typ av exekveringsfel except: Kod som exekveras om och endast om det blir något fel i kodblocket efter try 9/16 Så här går det till Kod i blocket mellan try: och except: börjar exekvera, men så fort ett fel uppstår i någon rad avbryts exekveringen direkt, resterande rader i blocket exekveras inte och koden som finns i blocket efter except: börjar exekvera i stället. 10/16 Mer detaljerad plista= ['s','v','m','mp','fp','c','kd'] try: i=input('ange index: ') i=int(i) parti = plista[i] except IndexError: print ( ogilltigt index ) except ValueError: print ( index måste var ett tal except: print ( uppstod något okänd fel! ) 11/13 4

Typ IOError IndexError KeyError TypeError ValueError Olika typ av fel Beskrivning uppstår när man vill öppna en fil som inte finns. Uppstår vid tillgång till ett index i en lista som inte finns Uppstår när en nyckel inte finns i uppsalgslista Uppstår när en inbyggd operation eller funktion tillämpas på ett objekt av olämplig typ Uppstår när funktion används med ett parameter med korrekt typ men fel värde ZeroDivisionError Uppstår när divisor i en division är 0 12/13 Klass och instans (objekt) En klass är en mall för ett objekt t.ex. bil, konto Ett objekt är en instans av en klass t.ex. den röda bilen, mitt lönekonto Klass och instans Fördela följande till klasser och objekt a) En bok b) Boken Java från grunden c) Min kopia av Java från grunden d) Min hund e) Bilden av min hund medan han biter postmannen f) En bil g) En Chrysler 5

av en klass class Kurs(object): pass k1 = Kurs() k1.bet = prgi13 print (k1.bet) k2 = Kurs() k2.bet= datae12 print (k2.bet) er har samma syntax som funktioner med den skillnaden att de definieras i en klass. Tre metodtyper: en Instansmetoder hör till instansen. Klassmetoder hör till klassen och delas av ALLA instanser. 6

Konstruktor metod en init är konstruktor-metoden som skapar objekt av klassen. Konsruktorer är till för initiering av instansvariabler på ett smidigt sätt. En konstruktor definieras enligt nedan: def init (self, namn, beteckning): self.namn = namn self.bet = beteckning self self är en referensvariabel som refererar inifrån instansen till själva instansen. Ett objekt init (self,namn, ) Skapa klass class Kurs(object): totantalstuds= 0 def init (self, namn, beteckning): self.namn = namn self.bet = beteckning self.antal=0 def sattantalstudenter(self,a): self.antal=a Kurs.totAntalStuds += a 7

Skapa klass forts def genamn(self): return self.namn def gebeteckning(self): return self.bet def geantal(self): return self.antal @staticmethod def getotalantal(): return Kurs.totAntalStuds Använd klassen k1 = Kurs( DD1310, prgo15 ) k2 = Kurs( DD1343, datae08 ) print ( Antal studenter i \ kursen,k1.gebeteckning(), är,k1.geantal()) print ( Kursen, k2.gebeteckning(), har \ kurskoden,k2.gekod()) k2.sattantalstudenter(120) k1.sattantalstudenter(160) print(k1.getotalantal()), är väldigt lämplig för snabba sökningar try, except används för att hantera exekverings fel. Med hjälp av klasser höjer vi abstraktionsnivån 23/13 8