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

Slides:



Advertisements
Liknande presentationer
Att förstå anonymiteten (översättning från
Advertisements

Talföljder formler och summor
Atomer och kemiska reaktioner
Här ser ni några sidor som hjälper er att lösa uppgifterna:
Innehåll, huvudpresentation 4. Rangordning av ordningsstörningar (fråga 1) 5. Problem med nedskräpning (fråga 1a) 6. Problem med skadegörelse (fråga 1b)
Relationsdatabasdesign
hej och välkomna EKVATIONER Ta reda på det okända talet.
BENÄMNA lätta ord SPRÅKTRÄNING VID AFASIKg VIII
Klasser och objekt.
1 Listor En sekvens värden av samma typ Nr 5. 2 Listor Sekvens av värden, element Variabelt antal Alla med samma typ Bara första elementet direkt åtkomligt.
Tillämpning av bolagsstyrningskoden vid årsstämmor 2005 och 2006.
Leif Håkansson’s Square Dancer Rotation
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Nya typer Konstruerare, selektorer och predikat Rekursiva datatyper
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella.
Logikprogrammering Ons, 25/9
1 Ingenjörsmetodik IT & ME 2009 Föreläsare Dr. Gunnar Malm.
Eddie Arnold - Make The World Go Away Images colorées de par le monde Déroulement automatique ou manuel à votre choix 1 för dig.
Att programmera i språket Java
Introduktion Logikprogrammering HT-02 Staffan Larsson.
Föreläsning 2 Datalogi för E1 2D1343
Karolinska Institutet, studentundersökning Studentundersökning på Karolinska Institutet HT 2013.
Kommunpussel Din uppgift är att sortera de organisatoriska delar på nästa sida på ett sådant sätt att det överensstämmer med hur din kommun är organiserad.
V E R S I O N N R 2. 0 T A V E L I D É E R I M I L J Ö.
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2007.
1 Introduktion till SML Nr 2 Värden, typer och funktioner.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Programmering B PHP Lektion 2
Svenska WebDewey Introduktion Harriet Aagaard Svenska Deweyredaktion
1 Funktioner Nr 3 Funktionstyper, högre ordningens funktioner och polymorfism.
Programmering B PHP Lektion 3
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
1 Vänsterskolan Debattartiklar. 2 Aktuell krok 3 Aktuella krokar 1. Direkt krok.
(2) Avvikelse från std. kostnad (5) Andel inv 65+ med insats (4) Andel 80+ i befolkningen (1) Kronor/ invånare (65+) (3) Kronor/ brukare (6) Ytterfall.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
TÄNK PÅ ETT HELTAL MELLAN 1-50
Grundskolan år 9 Droger och spel 2008 BILD 1 Elever som röker (dagligen eller ibland)
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Listor En lista är en föränderlig ordnad samling objekt.
Kouzlo starých časů… Letadla Pár foteček pro vzpomínku na dávné doby, tak hezké snění… M.K. 1 I Norrköping får man inte.
Best pictures on the internet 2007 Awards 1http:// Är vänsteralliansen trovärdig i Norrköping.
Enkätresultat för Fritidshem Elever 2014 Skola:Fritidselever, Gillberga skola.
1 Föreläsning 3 programmeringsteknik och Matlab 2D1312/ 2D1305 Matlab fortsättning Funkioner, styrstrukturer, manipulering av matriser.
Grundläggande programmering
OOPJ I, 5p Objektorienterad Programmering i Java.
Innehåll, kommunpresentation 3. Rangordning av ordningsstörningar (fråga 1) 4. Problem med nedskräpning (fråga 1a) 5. Problem med skadegörelse (fråga 1b)
1(31) Ett omdiskuterat ämne. Vad är det som händer? 2.
Best pictures on the internet 2007 Awards 1http:// (s), (v), och (mp) i Norrköping, gillar inte att vi använder grundlagarna.
2 Agenda 1. Börja arbeta med Excel Hantera arbetsböcker 3. Formler 4. Formatera 5. Diagram 6. Skriva ut 7. Referenser mellan kalkylblad 8. Arbeta.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
Enkätresultat för Grundskolan Föräldrar 2014 Skola - Gillberga skola.
Gymnasieskolan år 2 Droger och spel 2008 BILD 1 Elever som röker (dagligen eller ibland)
Ingenjörsmetodik IT & ME 2008
Presentation of I. Name: Disputerat nu vår Forskningsintresset är:
Räkna till en miljard 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15,16,17,18,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, En miljard är ett.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
BVForum - en genomgång för revisorer Sören Thuresson.
Bild 1 Prognos för länets arbetsmarknad Stefan Tjb.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
När infaller Julafton och hur ofta?
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Program. Symboliska samband Symboliska beteenden Matematisk kausalitet (orsak – verkan) 2x = y, y = x^2, y = kx + l.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Python.
Presentationens avskrift:

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

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 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 Information på WWW Kursbok – Schema Laborationer Planering etc Datorhandbok –

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 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 Tentamen ML –Tentamen 13 oktober –Omtentamen 28 oktober Pascal –Tentamen 24 november –Omtentamen 13 december

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 Grundläggande datorintroduktion Tisdag 9 september Kl MA323 Logga in, byta lösenord, pröva på ML-systemet, etc

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 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 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 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 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 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 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 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 Egenskap hos en egenskap

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 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 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 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 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 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 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 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 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 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 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 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 Avbildning (mapping) När man bearbetar varje element i samlingen och på det sättet får en ny samling

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

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

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 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 Standard ML Standard Meta Language Ett funktionellt språk Hård typkontroll Polymorfism Mönstermatchning

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