33
Problemlösning

Problemlösning

  • Upload
    ipo

  • View
    38

  • Download
    2

Embed Size (px)

DESCRIPTION

Problemlösning. Programmeringsmetaforer. Instruktion Konstruktion Problemlösning Adaptation Demonstration. 1. Instruktion. Ett program är en serie instruktioner En programmerare blir en arbetsledare som talar om för datorn vad den skall göra. 2. Konstruktion. Legoteknik - PowerPoint PPT Presentation

Citation preview

Page 1: Problemlösning

Problemlösning

Page 2: Problemlösning

Programmeringsmetaforer

• Instruktion• Konstruktion• Problemlösning• Adaptation• Demonstration

Page 3: Problemlösning

1. Instruktion

• Ett program är en serie instruktioner

• En programmerare blir en arbetsledare som talar om för datorn vad den skall göra

Page 4: Problemlösning

2. Konstruktion

• Legoteknik• Språket består av byggblock• Naturligt med tankar om

underhåll och renovering• Re-use (sv. Återanvändning)• Kanske inte hollistisk

(helhetssyn)

Page 5: Problemlösning

3. Problemlösning

• Strukturerad programmering“Program är en lösning på ett problem, och lösningen skulle idealiskt växa fram genom stegvis detaljering (stepwise refinement) utan att man någonsin skulle behöva backa och göra om.”

Page 6: Problemlösning

Problemlösning

• Strukturerad programmering• Hierarki• Modularitet• Fördelar i att lokalisera och

korrigera fel.

Page 7: Problemlösning

Strukturerad programmering

• TOP-DOWN• Steg för steg bryter ned

problemet till delproblem• Tillämpas rekursivt• Lösningen till huvudproblemet

med det (hypotetiska) antagandet att man redan har en lösning till de olika delproblemen.

Page 8: Problemlösning

Strukturerad programmering

• När ett delproblem når en detaljnivå som är elementär där standardlösningar finns för detta.

• Ex. datatypen FIFO (First-In-First-Out) om jag vill göra en printerkö

• Den hierarkiska strukturen som helhet motsvarar ett ’fungerande program’

Page 9: Problemlösning

Strukturerad programmering• Tanken var att nedbrytningsprocessen

skulle vägledas av den verkliga strukturen i det givna problemet, genom tillämpningsområdets egna naturliga morfologi

• Programmets komponenter och strukturen skall svara mot verkliga objekt, relationer och egenskaper i världen.

• Stöds av de tankar Taylor hade i början av 1900 angående tillverkningsindustrin.

Page 10: Problemlösning

Problemlösning

• Strukturerad programmering• Hierarki• Modularitet• Fördelar i att lokalisera och

korrigera fel.

Page 11: Problemlösning

Hierarki

Problem => delproblem

delproblem => delproblem igen

Detta ger en hierarki i slutändan

Page 12: Problemlösning

Problemlösning

• Strukturerad programmering• Hierarki• Modularitet• Fördelar i att lokalisera och

korrigera fel.

Page 13: Problemlösning

Modularitet

• Komponenter• Löst kopplade• Högt oberoende• Väl definierade gränsytor

(Interface) mellan komponenter• Höga precisionskrav (beroende

på ovan)

Page 14: Problemlösning

Stack (ADT)

• Tallrikstrave i matsal• Operationer:• Titta på översta elementet• Lägga på ett element• Ta bort ett element• Kolla om stacken är tom

Page 15: Problemlösning

Stack

• StackWithArray• Komplext, beroenden• Generiskt beteende• push(Object o)• Object top()• Stack

Page 16: Problemlösning

Problemlösningsmetaforen

• Uppmärksamheten flyttas från datorn (instruktionsmetaforen) och program (konstruktionsmetaforen) till abstrakt beteende.

• Knyter an mot dagens tankar runt OOP där strukturerad programmering med TOP-DOWN ofta kombineras med konstruktionsmetaforens BOTTOM-UP.

Page 17: Problemlösning

4. Adaptation

• Bygger till skillnad mot tidigare på att problemet och dess miljö inte är helt kända.

• Miljön kan vara dynamisk t.ex iterativ process utan definierade stoppvillkor

Page 18: Problemlösning

Nivå

• Val av metafor beror delvis på nivån och delvis på uppgift/problem

• Låg – nära maskinen passar instruktionsmetaforen

• Mellan – passar oftast problemlösningsmetaforen

• Hög – passar oftast adaptionsmetaforen

Page 19: Problemlösning

5. Demonstration

• Konkret programmering (programming by example)

• Ex. leda industrirobot genom önskade rörelser

• Ställer frågan om programmering är att utforma det resulterade beteendet eller att utforma programmet

Page 20: Problemlösning

Problemlösning

• Definition av problem1) ett väl definierat mål, väl

definierade kriterier på ett sökt tillstånd

2) en väl definierad utgångspunkt, ett starttillstånd

3) en välavgränsad repertoar av väldefinierade operationer för att transformera tillstånd

Page 21: Problemlösning

Lösning

• En struktur av operationer som förbinder utgångspunkt och mål

• Ibland duger vilken lösning som helst, men ibland vill man ha en lösning som är optimerad (ur något perspektiv)

Page 22: Problemlösning

Behållarna

• Givet att vi har två behållare, en som rymmer 7 dl och en som rymmer 3 dl

• Ingen av dem har någon gradering• I startläget är den större full med

vatten och mindre tom• Målet är att den mindre skall

innehålla 1 dl

Page 23: Problemlösning

Operationer

1) Töm den större2) Häll till den mindre från den större3) Häll till den större från den mindre4) Töm den mindre5) Fyll den större från en kran6) Fyll den mindre från en kran

Page 24: Problemlösning

Träd

• Rot (1)• Nod (1, 2, 3, 4)• Löv (2, 3, 4)• Barn (2, 3, 4)• Föräldrar (1, 2,

3)

Page 25: Problemlösning

Behållarna 2

• Om målet är att ha 2 dl i den mindre, hur gör vi då?

Page 26: Problemlösning

Sökning i träd

• Om vi vill göra uttömmande sökningar i träd för att finna en lösning till ett problem så kan vi göra på på två sätt

• Bredden först• Djupet först• Ohanterligt vid till exempel

schack

Page 27: Problemlösning

Heuristik

• Metod för att finna lösning snabbare (än uttömmande sökning)

• Grekiska för att finna• Metod för att upptäcka eller bilda

ny relevant kunskap• Läran om sådana metoder• Tumregler

Page 28: Problemlösning

Heuristisk sökning

• Positiv – rekommendera vissa noder som är mer intressanta

• Negativ – t.ex. inte fortsätta under ett visst djup

• Sökalgoritmer med heuristik oftast väsentligt snabbare än uttömande sökning

• Schackdatorer

Page 29: Problemlösning

Riktning

• Framåt – från utgångspunkt• Bakåt – från mål

Page 30: Problemlösning

Metoder för PL i DV

• Två nivåer1) Programmeringsmetodik. Metoder och

trick för att lösa programmeringsuppgift, dvs det är programmeraren som skall lösa problemet, och det är programmet som är lösningen.Ex. Iteration (adaptation), Rekursion (uppdelning)

2) Program som skall lösa problem. Uppgift för AI.

Page 31: Problemlösning

Problemlösning och programbyggnadskonst• Ex. Brokonstruktion• Problemet

Vilka punkter A och BVilken sorts trafikTrafikvolymVäderpåverkan (miljö)Framtida krav

• Materialkunskap, tekniker (standarder), verktygslåda (hjälpmedel)

Page 32: Problemlösning

Problemet kräver:A) Förståelse för hur den färdiga

konstruktionen skall utnyttjas, vilken uppgift den fyller, driftsförhållanden, framtida behov etc.

B) Materialkännedom, teknikkunskaper, kunskaper i bakomliggande teorier

C) Kunskap och färdighet i att använda olika hjälpmedel och verktyg

D) Metodkunskap, förmåga att utvärdera konstruktionsförslag, kvalitetskriterier, kretivitet

Page 33: Problemlösning

Relaterar mot (i DV)1) Uppgiftsformulering,

problemspecifikation2) algoritmkonstruktion (problemlösning)3) verifikation (att algoritmen uppfyller

specifikationen)4) kodning (programskrivning)5) testning och avlusning6) validering (att programmet löser

uppgiften)7) dokumentering (löper parallellt med de

andra momenten)8) underhåll (sträcker sig över

programmets hela livslängd)