Problemlösning. Planering av program. Konstruktion. Programmeringsmetaforer. Problemlösning. Programmering = Problemlösning

Relevanta dokument
PROGRAMMERINGSMETODIK

PROGRAMMERINGSMETODIK

Fortsättningskurs i programmering F 2. Algoritmer i Programutveckling Hugo Quisbert Problemexempel 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

PROBLEMLÖSNING. ! GPS! Mål medel analys! Problemlösning i programmering. Lars-Erik Janlert 2007

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

Objektorienterad programmering, allmänt

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

SKOLFS. beslutade den -- maj 2015.

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

Datastrukturer och algoritmer

Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Programmering = modellering

Introduktionsmöte Innehåll

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

SKOLFS. beslutade den XXX 2017.

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

Objektorienterad programmering. Grundläggande begrepp

Datastrukturer och algoritmer

Testning av program. Verklig modell för programutveckling

Undervisningen i ämnet programmering ska ge eleverna förutsättningar att utveckla följande:

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Dela, koda och korrigera! Undervisningsmaterial inom digital kompetens

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Inledande programmering med C# (1DV402) Introduktion till programmering

Föreläsning 15: Repetition DVGA02

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

IT OCH PROGRAMMERING I SKOLAN. Jan Erik Moström Peter Vinnervik

Föreläsning 2 Datastrukturer (DAT037)

Objektorienterad programmering

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

EDAA01 Programmeringsteknik - fördjupningskurs

Imperativ programmering. Föreläsning 4

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Introduktion till programmering

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Sanningar om programmering

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

Programmering som språk

Magnus Nielsen, IDA, Linköpings universitet

Datastrukturer och algoritmer

Grundläggande programmering med matematikdidaktisk inriktning för lärare som undervisar i gy eller komvux gy nivå, 7,5 hp

Träd Hierarkiska strukturer

Programmering B PHP. Specialiseringen mot PHP medför att kursens kod i betygshanteringen heter PPHP1408.

Programutveckling med Java 7.5 p, ht 2007 (D0019N) STUDIEHANDLEDNING - ALLMÄN INFORMATION

Rekursion och induktion för algoritmkonstruktion

Agenda. Inledning, teoretiska metoder Hierarkisk uppgiftsanalys, HTA Cognitive walkthrough CW Heuristisk evaluering

Nätkurs Design & konstruktion av användargränssnitt 1MD113 Sid 1 (5) Lektion 11 Användare, uppgifter och krav del

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

Dagens föreläsning Programmering i Lisp Fö 5

Datastrukturer och algoritmer

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Objektorienterad konstruktion

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Tentamen, Algoritmer och datastrukturer

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Kursplanering Objektorienterad programmering

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

Föreläsning 11. ADT:er och datastrukturer

Erfarenheter från labben

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet.

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

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Datastrukturer och algoritmer

Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering

Välkomna! Datalogiskt tänkande och programmering 15 augusti WiFI Nätverk: Conventumwifi Lösenord: conventum2018

Programmering eller Datalogiskt tänkande

Programmering för alla!

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Algoritmer och problemlösning

Programmeringsteknik II

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

Datastrukturer och algoritmer

ENKEL Programmering 3

Problemlösning och algoritmer

Algoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T

TDDC74: Projekttitel

Trädstrukturer och grafer

Föreläsning 1. Introduktion. Vad är en algoritm?

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Några grundläggande begrepp

Föreläsning 5. Rekursion

Föreläsning 14 Innehåll

Datastrukturer. föreläsning 3. Stacks 1

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Program & programmering

TDDC Terminologi Uppdaterad Fö #1

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

Configuration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar

Transkript:

Problemlösning Problemlösning Vad är problemlösning Hur ser ett problem ut? Programmering = Problemlösning Omformulering av ett problem kan i slutändan omsättas i ett program. Ett program består av en, eller flera, algoritm/er. Algoritmen är lösningen på ett problem. Planering av program Ett recept är ett bra exempel på en plan. - Ingredienser och mängder bestäms av vad du vill göra. - Ingredienserna är indata - Sättet att kombinera dem är processbearbetningen - Det tillagade är utdatat Programmeringsmetaforer Instruktion Konstruktion Problemlösning Adaptation Demonstration Konstruktion Legoteknik Språket består av byggblock Naturligt med tankar om underhåll och renovering Re-use Kanske inte hollistisk (helhetssyn) 1

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. Problemlösning Strukturerad programmering Hierarki Modularitet Fördelar i att lokalisera och korrigera fel. 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. 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ö, eller Stack Den hierarkiska strukturen som helhet motsvarar ett fungerande program Stack (ADT) Tallrikstrave i matsal Operationer: Titta på översta elementet Lägga på ett element Ta bort ett element Kolla om stacken är tom 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. 2

Modularitet Problemlösningsmetaforen Komponenter Löst kopplade Högt oberoende Väl definierade gränsytor (Interface) mellan komponenter Höga precisionskrav (beroende på ovan) 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. 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 Problemlösning Definition av problem 1) 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 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) 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 3

Operationer Träd 1) Töm den större 2) Häll till den mindre från den större 3) Häll till den större från den mindre 4) Töm den mindre 5) Fyll den större från en kran 6) Fyll den mindre från en kran Lösningen av problemet med behållarna kan beskrivas av en hierarki kallat träd Ett träd har en Rot en/flera Noder ett/flera Löv ett/flera Barn en/flera Föräldrar Behållarna 2 Om målet är att ha 2 dl i den mindre, hur gör vi då? 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 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 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 4

Riktning Framåt från utgångspunkt Bakåt från mål Metoder för PL i DV Två nivåer 1) 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. 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) 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 Relaterar mot (i DV) 1) Uppgiftsformulering, problemspecifikation 2) algoritmkonstruktion (problemlösning) 3) verifikation (att algoritmen uppfyller specifikationen) 4) kodning (programskrivning) 5) testning och avlusning 6) 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) Programutveckling Analys: Identifiera och definiera problemet Design: Planera lösningen på problemet Designa ett gränssnitt (interface): Väljvilka objekt som ska ingå (textrutor, knappar, etc.) Kodning: Översätt algoritmen till ett programmeringsspråk Testning och debugging: Kontrollera att programmet gör rätt, hitta och korrigera eventuella fel Dokumentera: Sammanställ material som beskriver programmet (ska ske kontinuerligt) 5

Verktyg Vad är en algoritm Olika verktyg för utveckling av program. Flödesdiagram: Visar grafiskt hur flödet i ett program går, hur olika delar är knutna logiskt Pseudokod: Problemet omsatt i språk som ligger mitt emellan naturligt språk och programspråk. Hierarkidiagram: Visar hur olika delar av ett program hänger ihop Strikt ska algoritmen: Vara ändlig Uppfylla bestämdhet 0 eller fler indata 1 eller fler utdata Uppfölja effektivitet Algoritmiska exempel Recept Algebra Hämta posten Flödesdiagram Grafiskt sätt att visa hur flödet i ett program går Ikoner med kopplingar Symboler för flödesdiagram forts 6

Exempel på flödesdiagram Pseudokod Psedokod är ett mellanting mellan naturligt språk (t.ex. svenska) och programmeringsspråk (t.ex. vb). Syftet är att underlätta implementation, d.v.s. Översättning till programmeringsspråk. Naturligt språk Problemställning: Jag ska parkera på stan och räknar med att stanna en och en halv timme. Det kostar 10kr per 6min. Hur mycket pengar måste jag lägga i? Pseudokod Parkeringstid är 90 min Kostnad per 6 minuter är 1kr. Kostnad är 90/6 * 1 Om ilagda pengar < 15kr lägg i en krona Tryck på biljettknappen Hierarkidiagram 7