Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avCharlotta Lundqvist
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))
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.