Presentation laddar. Vänta.

Presentation laddar. Vänta.

1 Programmeringsmetodik, 8p ML-delen Programmering Programmeringsmetodik Programspråk NR 1.

Liknande presentationer


En presentation över ämnet: "1 Programmeringsmetodik, 8p ML-delen Programmering Programmeringsmetodik Programspråk NR 1."— Presentationens avskrift:

1 1 Programmeringsmetodik, 8p ML-delen Programmering Programmeringsmetodik Programspråk NR 1

2 2 Kursinformation Kursböcker –Greg Michaelson, UCL Press Elementary Standard ML –Walter J. Savitch, Benjamin/Cummings Turbo Pascal 7.0 (fourth edition) Lärare –Olof JohanssonFöreläsningar, grupptimmar –Frida MörtsellGrupptimmar, handledning –Gunnar GunnarssonGrupptimmar, handledning –Anders SelanderHandledning

3 3 Kursuppläggning Grundläggande programmering –Programmering av små program –ML-delen9 september - 13 oktober –Pascal-delen14 oktober - 24 november Programmeringsmetodik –Ingår i båda delarna Egen programmering –Laborationer och datorövningar

4 4 Information på WWW Kursbok –http://www/local/kurser/TDBA28/ht97http://www/local/kurser/TDBA28/ht97 Schema Laborationer Planering etc Datorhandbok –http://www.ts.umu.se/~handbok/http://www.ts.umu.se/~handbok/

5 5 Examination Laborationer –3 i ML och 3 i Pascal Duggor –En i ML och en i Pascal Tentamen –En i ML och en i Pascal Resultaten på tentamina ger slutbetyget (snittet av betygen).

6 6 Laborationer ML –Datorövning 2 –Laboration 1, Maze –Laboration 2, Tvättomat Pascal –Datorövning 3, Tipsrad? –Laboration 1, Tvättomat –Laboration 2, List unit

7 7 Tentamen ML –Tentamen 13 oktober –Omtentamen 28 oktober Pascal –Tentamen 24 november –Omtentamen 13 december

8 8 Bonuspoäng för laborationer Laborationer inlämnade i tid ger bonuspoäng till tentamen –Inlämnad och godkänd i tid ger 2 bonuspoäng –Inlämnad men ofullständig ger 1 bonuspoäng –Ej inlämnad eller underkänd ger 0 bonuspoäng –Endast kommentarer räknas som godkänd

9 9 Grundläggande datorintroduktion Tisdag 9 september Kl. 13 - 17 MA323 Logga in, byta lösenord, pröva på ML-systemet, etc

10 10 Råd och förmaningar ALLA inlämningsuppgifter är ENSKILDA LÄS kurslitteraturen Gör laborationerna i TID Räkna med åtminstone 40 timmar/vecka ANVÄND handledare och lärare

11 11 Programmeringsmetodik Program –En sekvens av instruktioner för att behandla information Programmering –Skriva program Programspråk –Språk för att skriva program Programmeringsmetodik –Metoder för att skriva program

12 12 Programmering Analysera problem Konstruera en lösning Beskriva lösningen i ett programspråk Använda datorsystem för att köra, testa och modifiera program Dokumentera

13 13 Programspråk Konstruerat språk för att instruera datorer Enkla och entydiga Kriterier –Universala –Naturligt att uttrycka lösningar i –Implementerbart –Acceptabelt effektiva

14 14 Programspråksparadigmer Imperativa språk (Pascal, C, Cobol, Fortran) –Uppdatera variabler Objektorienterade språk (Smalltalk, Eiffel, C++) –Objekt med metoder Funktionella språk (SML, Haskell, Miranda, Lisp) –Funktioner Logiska språk (Prolog) –Logiska utsagor

15 15 Språkverktyg Kompilator, interpretator –Översätter programspråket till en form som datorn kan använda Editor –För att skriva programmet på maskinläsbar form Avlusare (Debugger) –Hjälp för att hitta fel i program

16 16 Modeller Ett sätt att lösa ett problem är att gör en modell som fångar de viktigaste aspekterna hos ett problem. Sedan använda modellen för att beskriva lösningen av problemet. Ett program är en datormodell. En abstrakt modell identifierar det generella fallet utifrån flera individuella fall, låser fast likheterna och låter olikheterna vara öppna. Kan då användas på nya fall genom att fylla ut de öppna punkterna.

17 17 Objekt, samlingar och egenskaper Information består av samlingar med beskrivningar av objekt Samlingar är också objekt Instruktioner är objekt => program är en ordnade samling av objekt I en samling har objekten gemensamma egenskaper Ett objekt beskrivs av en grupp egenskaper

18 18 Egenskap hos en egenskap

19 19 Typer och metoder Värden –Något som existerar under en beräkning. Metod –Konstruera, hämta och manipulera egenskaper och beskrivningar. Typ –En samling värden med gemensamma egenskaper tillsammans med metoder för dessa. Värden av olika typer kan inte jämföras Metoder är typ specifika

20 20 Nya typer av gamla En viktig del av programmering är att analysera problemet för att identifiera typer i det. Utifrån gamla typer konstruerar vi värden och metoder för nya typer avpassade för problemet. Genom att koppla ihop metoderna för de nya typer löser vi problemet. Dessa nya typer kan sedan också användas för senare problem.

21 21 Sätt att skapa nya typer Par, tupler –Ett värde kan bestå av två värden av olika typer. Disjunkt union –Ett värde kan bestå av antingen en typ eller en annan. Lista, array –Ett värde kan bestå av en sekvens av värden av en typ. Avbildning –Ett värde kan bestå av en avbildning av en typ på någon annan typ.

22 22 Uttryck (Expression) En program fras som kan evalueras till ett värde. –4 + 6 –3 * 10 > (4 + 5) * 4 Evalueringen (beräkningen) sker genom att utföra metoderna i uttrycket –3 * 10 > (4 + 5) * 4 ==> 30 > (4 + 5) * 4 ==> 30 > 9 * 4 ==> 30 > 36 ==> false

23 23 Generalisera genom namngivning Vi vill kunna tala om godtyckliga värden hos egenskaper snarare än specifika. Genom att namnge egenskapen så kan vi använda namnet i stället för det specifika värdet. –Sträckan en bil kör under två timmar är dess fart gånger två. speed * 2

24 24 Abstraktioner När man generaliserat specifika värden med namn så är får man en abstraktion. Centralt för all programmering En funktion är ett abstraherat uttryck. –replace speed in speed * 2

25 25 Använda abstraktioner För att använda en funktion måste namnet bytas ut mot ett specifikt värde –replace speed in speed * 2 with 100 ==> 100 * 2 Kallas att specialisera en abstraktion. För funktioner kallas det att anropa eller applicera funktionen.

26 26 Namnge funktioner Vi kan ge namn åt funktioner också –distance is replace speed replace duration in speed * duration Så vi kan använda namnet istället för funktionen –distance with 20 with 10

27 27 Beräkning, evaluering distance with 20 with 10 ==> replace speed replace duration in speed * duration with 20 with 10 ==> replace duration in 20 * duration with 10 ==> 20 * 10 ==> 200

28 28 Val Vi behöver möjlighet välja olika alternativa beräkningar –if 5 > 4 then ”Myror” else ”Elefanter” ==> ”Myror” Villkorsuttryck –longer is replace duration1 replace duration2 in if duration1 > duration2 then duration1 else duration2

29 29 Namn är godtyckliga Namnen har ingen egen betydelse. –distance is replace speed replace duration in speed * duration –foo is replace bar replace mud in bar * mud –foo och distance har samma betydelse Ett namn är en plats som kan kan ersättas av ett värde. Namn är dock viktiga för att påminna oss om vad de ska generalisera.

30 30 Nya samlingar från gamla Vi kan se lösningen av ett problem som att vi börjar med en initial samling värden som bearbetas för att konstruera en slutsamling som ger lösningen. Några centrala metoder att bearbeta samlingar. –Avbildning –Filtrering –Reducering

31 31 Avbildning (mapping) När man bearbetar varje element i samlingen och på det sättet får en ny samling

32 32 Filtrering När man väljer ut de värden som uppfyller vissa kriterier

33 33 Reducering (folding) Att kombinera ihop egenskaper hos alla värden i samlingen för att forma ett slutvärde

34 34 Högre ordningens funktioner Abstrahera genom att introducera namn för funktioner. –replace action replace object in action with action with object En funktion som kan appliceras på andra funktioner kalla högre ordningens funktion Det ger oss möjlighet att återanvända generella problemlösningsmetoder

35 35 Rekursion Om vi låter en funktion anropa sig själv kallas det rekursion. –faculty is replace number in if number = 0 then 1 else number * faculty with (number - 1) Ett grundläggande sätt att upprepa sekvens av instruktioner

36 36 Standard ML Standard Meta Language Ett funktionellt språk Hård typkontroll Polymorfism Mönstermatchning

37 37 Funktionella språk Den grundläggande modellen för beräkningar är konstruktion och applikation av funktioner. Funktioner behandlas som värden. Högre ordningens funktioner Inga sidoeffekter

38 38 Exempel datatype expr = Const of int | Var of string | Plus of expr * expr | Times of expr * expr fun eval env (Const n) = n | eval env (Var i) = env i | eval env (Plus (e1,e2)) = eval env e1 + eval env e2 | eval env (Times (e1,e2)) = eval env e1 * eval env e2 fun diff id (Const n) = Const 0 | diff id (Var i) = if id = i then Const 1 else Const 0 | diff id (Plus (e1,e2)) = Plus (diff id e1, diff id e2) | diff id (Times (e1,e2)) = Plus (Times (e1,diff id e2),Times (diff id e1,e2))


Ladda ner ppt "1 Programmeringsmetodik, 8p ML-delen Programmering Programmeringsmetodik Programspråk NR 1."

Liknande presentationer


Google-annonser