1 / 33

Problemlösning

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

ipo
Download Presentation

Problemlösning

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Problemlösning

  2. Programmeringsmetaforer • Instruktion • Konstruktion • Problemlösning • Adaptation • Demonstration

  3. 1. Instruktion • Ett program är en serie instruktioner • En programmerare blir en arbetsledare som talar om för datorn vad den skall göra

  4. 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)

  5. 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.”

  6. Problemlösning • Strukturerad programmering • Hierarki • Modularitet • Fördelar i att lokalisera och korrigera fel.

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

  8. 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’

  9. 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.

  10. Problemlösning • Strukturerad programmering • Hierarki • Modularitet • Fördelar i att lokalisera och korrigera fel.

  11. Hierarki Problem => delproblemdelproblem => delproblem igenDetta ger en hierarki i slutändan

  12. Problemlösning • Strukturerad programmering • Hierarki • Modularitet • Fördelar i att lokalisera och korrigera fel.

  13. Modularitet • Komponenter • Löst kopplade • Högt oberoende • Väl definierade gränsytor (Interface) mellan komponenter • Höga precisionskrav (beroende på ovan)

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

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

  16. 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.

  17. 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

  18. 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

  19. 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

  20. Problemlösning • Definition av problem • ett väl definierat mål, väl definierade kriterier på ett sökt tillstånd • en väl definierad utgångspunkt, ett starttillstånd • en välavgränsad repertoar av väldefinierade operationer för att transformera tillstånd

  21. 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)

  22. 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

  23. Operationer • Töm den större • Häll till den mindre från den större • Häll till den större från den mindre • Töm den mindre • Fyll den större från en kran • Fyll den mindre från en kran

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

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

  26. 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

  27. 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

  28. 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

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

  30. Metoder för PL i DV • Två nivåer • 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) • Program som skall lösa problem. Uppgift för AI.

  31. Problemlösning och programbyggnadskonst • Ex. Brokonstruktion • Problemet Vilka punkter A och B Vilken sorts trafik Trafikvolym Väderpåverkan (miljö) Framtida krav • Materialkunskap, tekniker (standarder), verktygslåda (hjälpmedel)

  32. Problemet kräver: • Förståelse för hur den färdiga konstruktionen skall utnyttjas, vilken uppgift den fyller, driftsförhållanden, framtida behov etc. • Materialkännedom, teknikkunskaper, kunskaper i bakomliggande teorier • Kunskap och färdighet i att använda olika hjälpmedel och verktyg • Metodkunskap, förmåga att utvärdera konstruktionsförslag, kvalitetskriterier, kretivitet

  33. Relaterar mot (i DV) • Uppgiftsformulering, problemspecifikation • algoritmkonstruktion (problemlösning) • verifikation (att algoritmen uppfyller specifikationen) • kodning (programskrivning) • testning och avlusning • validering (att programmet löser uppgiften) • dokumentering (löper parallellt med de andra momenten) • underhåll (sträcker sig över programmets hela livslängd)

More Related