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

Relevanta dokument
Programmering grundkurs

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

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

729G06 Programmering och logik. OOP: Arv Allmänt: Undantagshantering

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

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

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

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

Föreläsning 13 Datalogi 1 DA2001

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

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

729G06 Programmering och logik. Info om pythondelen & introduktion till objektorienterad programmering.

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

Programmering grundkurs

729G06 Föreläsning 1 Objektorienterad programmering

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

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

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

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

Ordlistor, filhantering och ut på webben. Linda Mannila

Imperativ programmering. Föreläsning 4

Objektorienterad programmering. Grundläggande begrepp

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

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

729G04 Programmering och diskret matematik. Python 3: Loopar

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 6 Programmeringsteknik och Matlab DD1312

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

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

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

TDDE44 Programmering, grundkurs

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

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?

729G04 Programmering och diskret matematik

Grundläggande datalogi - Övning 1

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

Programmering grundkurs

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

Introduktion till programmering SMD180. Föreläsning 8: Listor

Övning 6. Ali Tofigh 24 Oktober, 2006

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

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

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

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

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

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

Sätt att skriva ut binärträd

Objektorienterad Programmering (OOP) Murach s: kap 12-16

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

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

Grundläggande datalogi - Övning 2

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

Objektorienterad Programkonstruktion. Föreläsning jan 2016

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

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

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

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

Objektorienterad Programmering (TDDC77)

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

Klasshierarkier - repetition

DD1314 Programmeringsteknik

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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.

Repetition av OOP- och Javabegrepp

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

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Objektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Repetition av OOP- och Javabegrepp

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

Några saker till och lite om snabbare sortering

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Hur man programmerar. Exempel på problemlösning i Python

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Objektorienterad programmering Föreläsning 4

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

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

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

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

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

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

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

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

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Introduktion till programmering SMD180. Föreläsning 7: Strängar

Transkript:

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

Tema 3: Översikt Objektorienterad programmering: fortsättning Tema 1 och 2: Exempel på att använda och skapa algoritmer Tema 3: strukturera kod (för t.ex. en algoritm eller en mängd algoritmer) med hjälp av Pythons stöd för OOP. Introuppgift: öva och konkretisera mönster för OOP. Temauppgift: Objektorienterad implementation av genetiska algoritmer

Föreläsningsöversikt Undantag - exempel på hur användning av instanser Egna klasser (repetition) Objektorienterad design av ett program: en klass som behållare (OBS! Superviktigt mönster)

Snabbrepetition Objektorienterad terminologi

Klasser och objekt Klass: mallkod som används när en instans av en klass skapas Klasser används som datatyper (datatyperna i Python är klasser) Exempel: "3953 bananer!" är ett värde av datatypen str ("string"/sträng). Instans och objekt är synonymer. Objekt är faktiska värden som skapas genom att använda definitionen av en klass. Exempel: listan ["hej", 36, True] är en instans av klassen list.

Instansvariabler och metoder En grundläggande anledning som bidragit till utveckling av objektorienterade programmeringsspråk är behov av att kunna gruppera ihop en specifik datastruktur och funktionalitet som jobbar med just den datastrukturen: inkapsling. Klassen är mallen för datastrukturen som består av instansvariabler (variabler som är kopplade till en specifik instans). I Python använder man self för att referera till den den egna instansen. En funktion som är definierad i en klass är bundna till den klassens instanser och kallas för metod.

En klass klassens namn egenskaper beteenden

Varning för kluvna tungor! med ordet "egenskap" (på svenska) syftas det på "egenskap" som begrepp i vardaglig bemärkelse I Python finns termerna attribute och property där property är ett underordnat begrepp till attribute (property är en typ av attribute)

Vanliga mönster när man designar en klass Namngivning av klasser: substantiv i singular Namngivning av metoder: verb Namngivning av instansvariabler: substantiv i singular OBS! Om klassen representerar en samling objekt, dvs fungerar som en behållare, använd inte beskrivning av innehållet. Ett vanligt mönster är att använda ett suffix, t.ex. Collection, Set eller List

Exempel på klassnamn DataPoint DataPointCollection Word Sentence Paragraph Document Person ContactList Book Library BookCollection

Vanliga prefix till metodnamn get_: hämta ett värde från ett objekt (antingen beräknat eller direkt från ett attribut) set_: sätt att värde add_ remove_ load_ save_

Undantag Exceptions

Exceptions - undantag Exceptions (sv undantag) är ett sätt att hantera fel i kod som kan utlösas (eng throw/raise). Vid fel kan ett undantag utlösas. Programmet avbryter sitt normala flöde för att gå in i "undantagsläge". Finns inget specificerat undantagsläge, kraschar programmet.

Undantag i Python Om man vill hantera undantag i Python lägger man koden som kan utlösa undantag i ett try-block. Undantag hanteras sedan i ett except-block.

Exempel på undantag i Python ZeroDivisionError IOError IndexError KeyError TypeError

Mönster för undandagshantering i Python try: # här lägger man koden som kan utlösa ett undantag except [typ av exception] [as <namn på undantagsinstans>]: # här lägger man koden för vad som ska hända Här ska inte hakparenteserna skrivas ut, utan visar att det som står innanför dem är valfritt. Det som står inom mindre än/större än-tecken måste vara med. I det här fallet bara om 'as' används. Mindre än/större än-tecknena ska inte heller stå med.

Exempel: Fånga undantag letters = ["a", "b", "c", "d", "e", "f"] try: l_index = 0 while True: print(letters[l_index]) l_index += 1 except: print("an exception was raised.")

Exempel: Fånga och instansiera undantag letters = ["a", "b", "c", "d", "e", "f"] try: l_index = 0 while True: print(letters[l_index]) l_index += 1 except Exception as error: print("an exception was raised.") print(error)

Exempel: Fånga specifikt undantag letters = ["a", "b", "c", "d", "e", "f"] try: l_index = 0 while True: print(letters[l_index]) l_index += 1 except IndexError: print("index " + str(l_index) + " is out of bounds.")

Exempel: Fånga och instansiera specifikt undantag letters = ["a", "b", "c", "d", "e", "f"] try: l_index = 0 while True: print(letters[l_index]) l_index += 1 except IndexError as index_error: print("index " + str(l_index) + " is out of bounds.") print(index_error)

Olika sätt att använda undantag För att fånga potentiella fel i koden och åtgärda dem Som ett alternativ till "vanlig" flödeskontroll/if-satser

Kontroll av argument med hjälp av flera undantag def get_dog_desc(dog_dict): try: output_string = "My name is " + dog_dict['name'] + " " output_string += "and I am " + str(dog_dict['age']) + " years old." return output_string except TypeError as type_error: print("argument not a dictionary") print(type_error) except KeyError as key_error: print("wrong keys in dictionary.") print(key_error)

Kontroll av argument med hjälp av flera undantag som ett fall def get_dog_desc(dog_dict): try: output_string = "My name is " + dog_dict['name'] + " " output_string += "and I am " + str(dog_dict['age']) + " years old." return output_string except (TypeError, KeyError) as error: print("not a dictionary or key not present in dictionary.") print(error)

Objekt som behållare (tänk matrosjkadockor)