Göm menyn

Seminarium 10 - Experimentering

Kapitel som ska ha lästs

Följande kapitel ska ha lästs i förväg. Det ger många intuitioner som inte hinner förklaras under seminariet.

Följande kapitel behandlas under seminarium 10 för "En sak i taget", men kommer inte att diskuteras på "Experimentering" och ska då istället läsas på egen hand:

Denna sida visar en del av det som kommer att diskuteras på seminariet. Ofta tar handledarna också upp andra uppgifter som inte behöver något specifikt studentmaterial och då syns dessa uppgifter inte på sidan.

Genomgång: Labb 8

Diskuteras under seminariet.

Uppgift: Algoritmutveckling för labb 8.

Diskuteras under seminariet.

Uppgift: Skapa ett eget abstraktionslager.

Som vi har diskuterat i studiematerialet är abstraktion ett sätt att skapa överblick över komplexa system.

Dataabstraktion är viktigt när vi själva skapar nya datatyper. Vi bestämmer vilka värden som hör till datatypen och vilka operationer som ska finnas. Vår nya datatyp måste dock representeras med hjälp av andra datatyper, till exempel de inbyggda datatyperna i språket -- någonstans måste man "bottna ut" i något som redan existerar.

Instruktioner: Vad är en abstrakt datatyp?

Skapa en datatyp som representerar bråktal / rationella tal. Man ska kunna använda följande operationer:

>>> a = create_fraction(8, 10)
>>> b = create_fraction(1, 5)
>>> print_fraction(fraction_minus(a, b))
3/5
>>> print_fraction(fraction_multiply(a, b))
4/25
>>> print_fraction(fraction_divide(b, a))
1/4

Skapa användbara primitiva funktioner samt funktioner för vanliga matematiska operatorer. Tänk på att någon som använder datatypen ej ska behöva veta hur datan lagras. Tänk på att respektera abstraktionslager. Till exempel bör de matematiska operationerna på datatypen själva använda primitiva funktioner för att komma åt täljare och nämnare (numerator och denominator), istället för att själva veta om exakt hur detta lagras.

Den som vill får använda typmaskineriet som kommer att diskuteras under seminariet.

Till nästa seminarie

Nästa seminarie kommer vi främst att gå genom frågor som kursdeltagarna har ställt i förväg. Ni kan ställa frågor om studiematerialet, python eller programmering i allmänhet. Frågorna ska vara hos seminariehandledaren minst två arbetsdagar innan nästa seminarie för att svar ska kunna förberedas.


Sidansvarig: Peter Dalenius
Senast uppdaterad: 2021-12-03