Lars-Henrik Eriksson

Relevanta dokument
Programmeringsmetodik DV1 Programkonstruktion 1. Lars-Henrik Eriksson. Välkomna till. edu/course/homepage/pkpm/ht06.

Programkonstruktion. Lars-Henrik Eriksson. (Min) syn på programmering. Vad är ett program? Hur detaljerade skall instruktioner vara?

Introduktion till datateknik och datavetenskap

Programkonstruktion och datastrukturer

Programkonstruktion och datastrukturer

Programkonstruktion och datastrukturer

Imperativ programmering

ENKEL Programmering 3

Grundläggande programmeringsteknik Datorsystem

Teknikhistoria: Den första programmeraren

Charles Babbage och Ada Lovelaces datorer

BER AKNINGSBARHET F OR DATALOGER. Kent Petersson. Institutionen for Datavetenskap Goteborgs Universitet / Chalmers Goteborg, Sweden

Introduktion till programmering. Programspråk och paradigmer

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 4 Om rekursion. PK1&PM1 HT-06 moment 4 Sida 1 Uppdaterad

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Programkonstruktion och Datastrukturer

Föreläsning 2. Operativsystem och programmering

Datastrukturer och algoritmer

Grundläggande datavetenskap 4p

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

TDDC74 Programmering, abstraktion och modellering. Tentamen

Föreläsning 1: Intro till kursen och programmering

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

Alexander Wallin. Charles Babbage och hans maskiner

MA2047 Algebra och diskret matematik

Grundkurs i programmering - intro

Föreläsning 1: Intro till kursen och programmering

Programmering, grundkurs

BERÄKNINGSKONSTENS HISTORIA - Från kulram till dator

Datorprogram, algoritmer och Turing-maskiner

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Summera godtyckligt antal tal. Programkonstruktion. Moment 4 Om rekursion. Fullständigt resonemang för summeringen. Analys av summeringsproblemet

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 2 Jody Foo,

Läsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Datorhistoria Introduktion till PBL

Programmering A. Johan Eliasson

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Spelschema för årets fotbollsmästerskap! island tyskland Söndag 14/7 Växjö Arena, Växjö. Söndag 14/7 Kalmar Arena, Kalmar

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

Perspektiv på programmering, #13, Karlstad HISTORISKT OCH UNDERVISNING

Programschema för Datavetenskapliga programmet, 180 hp. Gäller för läsåret 2018/2019. Programschema för 2018/2019.

Datastrukturer och algoritmer

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

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

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

MicroPython Ett textbaserad programmeringsspråk för Micro:bit

Perspektiv på programmering Arlanda 22 feb

COMPUTABILITY BERÄKNINGSBARHET. Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall

Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Rebecka Geijer Michaeli, IDA, Linköpings universitet. 1 Administrativ information Upplägg... 2

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15

GRUNDKURS I C-PROGRAMMERING

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Lennart Rolandsson, Uppsala universitet, Ulrica Dahlberg och Ola Helenius, NCM

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Välkomna till Numme och MATLAB, 9 hp, för Materialdesign och Energi&Miljö, årskurs 2

Objektorienterad modellering och diskreta strukturer. 13. Problem. Sven Gestegård Robertz. Datavetenskap, LTH

Dela, koda och korrigera! Undervisningsmaterial inom digital kompetens

Programmering från början

1642 uppfann Blaise Pascal världens första mekaniska räknemaskin. Den kunde både addera och subtrahera. Den kan ses som en föregångare till datorn.

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

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

FÖRELÄSNING 1 PERSONAL TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 SYFTE EXAMINATION ORGANISATION

Datalogi som vetenskap

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Programmering från början

Introduktionsmöte Innehåll

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

EXTRA UPPGIFTER I C++ PROGRAMMERING-A

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

Faktorisering med hjälp av kvantberäkningar. Lars Engebretsen

SAMMANSTÄLLNING 1 (13) Datum för sammanställningen Period 3, 2007

7, Diskreta strukturer

Jacquards vävstol, 1801

Datorteknik. Föreläsning 7 Historia och framtid. Institutionen för elektro- och informationsteknologi, LTH

Allmänna frågor om kursen: Kursutvärderare: IT-kansliet/Christina Waller. 1. Vad är ditt allmänna omdöme om kursen? Antal svar: 30 Medelvärde: 3.

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

TDDC74 Programmering, abstraktion och modellering. Tentamen

MA/PROGR. VUXENUTBILDNINGEN ÄLVKARLEBY KOMMUN Dennis Jonsson

Programmering, dans och loopar

Tekniska beräkningar. Vad är tekn beräkningar? Vad är beräkningsvetenskap? Informationsteknologi. Informationsteknologi

CS - Computer science. Datateknik Informationsbehandling Datalogi Datavetenskap (ÅA 2008)

Sätt att skriva ut binärträd

TDDC74 Programmering, abstraktion och modellering. Tentamen

Institutionen för datavetenskap vid Helsingfors universitet

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

TDDE44 Programmering, grundkurs

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

Programmering i matematik

Algoritmer, datastrukturer och komplexitet

Digitalt lärande och programmering i klassrummet

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15

Programkonstruktion och datastrukturer. Formell verifiering eller hur man bevisar att program gör rätt utan att testa dem

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Föreläsning 5: Introduktion av pekare

Introduktionsföreläsning

PROGRAMMERINGSMETODIK

! Introduktion till kursen! En dators delar! Vad är ett program? " Hur fungerar ett program när det körs

Transkript:

Välkomna till Programmeringsmetodik DV1 Programkonstruktion I+II http://www.csd.uu.se/kurs/pm1/ht02/www/ Lars-Henrik Eriksson lhe@csd.uu.se, http://user.it.uu.se/~lhe

Undervisningstillfällen Föreläsningar: I allmänhet tisdagar och onsdagar i Aulan. Laborationer: I allmänhet på torsdagar (första lab. 3/10) Stoppdatum: I allmänhet på tisdagar kl. 08:00. Lektioner: I allmänhet på fredagar (första lektion 11/10) Tenta: Onsdagen den 11/9. Kontrollera på webbplatsen i början av nästa vecka vilken grupp du tillhör och vilket labb/lektionsschema du skall ha.

Supplemental Instruction (SI) Ett sätt att bedriva sina självstudier i diskussionsgrupper. (Schema inte klart än kommer på webbplatsen.)

Algoritm Effektiv procedur för beräkning 1) Mekanisk 2) Ändliga resurser 3) Deterministisk 4) Aritmetiserbart problem

Euklides från Alexandria (325 265 f.kr.)

Euklides algoritm Precondition: m och n är naturliga tal Postcondition: n är största gemensamma delare till de ursprungliga m och n. Start. Ja. Är m=0? Stopp. Nej. Låt r vara resten när n delas med m. Låt n vara m. Låt m vara r.

Euklides algoritm stannar Största gemensamma delaren till 64 och 30 m n r 64 30 30 30 64 4 4 30 2 2 4 0 0 2 64 = 2*32 = 2*2*2*2*2*2 30 = 2*15 = 2*3*5

Eratostenes från Kyrene (276 194 f.kr.)

Eratostenes såll 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 --- --- --- --- --- --- --- 3 --- --- --- --- 4 --- --- --- 5 --- --- 6 --- 7 --- 8 --- De tal som faller igenom sållet är primtal.

Program Program är mekaniska beskrivningar för hur datorn skall arbeta. Alla program är inte algoritmer ofta vill man inte att program skall avslutas (t.ex. styrprogram av olika slag), serverprogram. Algoritmerna är fundamentala konstruktionsmönster vid programmering.

Mohammad Ibn Musa al-khwarizmi (c:a 780 c:a 850)

Två böcker av al-khwarizmi Om beräkning genom al-jabr och al-muqabala al-khwarizmi om de indiska talen ( Algoritmi de numero Indorum )

Gottfried Wilhelm von Leibniz (1646 1716) calculemus

Leibniz kalkylator Leibniz kalylator förverkligar algoritmer för de fyra räknesätten.

Charles Babbage (1791 1871)

Differenskalkylen x 2x 2-3x+4 1:a diff. 2:a diff 3:e diff. 0 4-1 1 3 4 3 0 2 6 4 7 0 3 13 4 11?? 4 24???? 5?? Polynom kan användas för approximation av matematiska funktioner (Taylorutvecklingar).

Babbages differensmaskin (del) Differensmaskinen förverkligar en algoritm för differenskalkyl.

Augusta Ada Byron grevinna av Lovelace (1815 1852)

Babbages analytiska maskin Den analytiska maskinen kunde programmeras att utföra godtycklig algoritm. Beståndsdelarna i princip samma som i en modern dator. Ada Lovelace skrev det första programmet för beräkning av Bernoullital. Den analytiska maskinen kunde aldrig byggas finmekaniken räckte inte.

Ada Lovelace om den analytiska maskinen "Again, [the Analytical Engine] might act upon other things besides number, were objects found whose mutual fundamental relations could be expressed by those of the abstract science of operations, and which should be also susceptible of adaptations to the action of the operating notation and mechanism of the engine... Supposing, for instance, that the fundamental relations of pitched sounds in the science of harmony and of musical composition were susceptible of such expression and adaptations, the engine might compose elaborate and scientific pieces of music of any degree of complexity or extent."

Alonzo Church Alan Mathison Turing (1903 1995) (1912 1954)

Vad är mekaniskt? Church: uttryckbart i l-kalkylen Turing: uttryckbart som turingmaskin. Church-Turings tes: Detta är allt som är mekaniserbart. I praktiken: uttryckbart som program i en dator. Alla beräkningar kan inte mekaniseras enligt Church/Turing. Kan de då utföras alls? l-kalkylen har blivit ett viktigt verktyg inom datavetenskapen.

Grace Murray Hopper (1906 1992)

Kompilatorer Maskiner är inte lätta att tas med speciellt inte när man programmerar. Program som styr datorn uttrycks i termer av datorns inre uppbyggnad och funktion numeriska koder. Människor vill ha mer lättanvända programspråk. Kompilatorn är en program som realiserar en algoritm som översätter program från ett användarorienterat språk till maskinspråk. Hopper skrev den första kompilatorn.

Standard ML Lämpligt för undervisning. Enkla, tydliga beståndsdelar. Funktionellt programspråk. God matematisk grund. Ursprung i l- kalkylen. Väldefinierad semantik. Semantik: Vad ett program betyder Jämför syntax: Hur ett program får se ut. ML arbetar genom funktionsberäkningar. OBS att funktion har annan betydelse än i matematiken. fun gcd(0,n) = n gcd(m,n) = gcd(n mod m,m) Detta är en rekursiv definition av funktionen gcd en kodning av algoritmen för största gemensamma delare i SML.

Beräkning av gcd(64,30) i ML fun gcd(0,n) = n gcd(m,n) = gcd(n mod m,m) gcd(64,30) fi gcd(30 mod 64,64) fi gcd(30,64) fi gcd(64 mod 30,30) fi gcd(4,30) fi gcd(30 mod 4,4) fi gcd(2,4) fi gcd(4 mod 2,2) fi gcd(0,2) fi 2

Funktioner i matematik och programmering Funktioner avbildar ( översätter ) argument till entydiga värden. Om funktionen avbildar alla möjliga argument i en given domän är den total, annars partiell. Matematiska funktioner är i princip en tabell (graf) av argument och värden. Programfunktioner är en beskrivning av hur värdet skall beräknas. (5,10) 5 (20,35) Del av grafen för gcd: 2 (2,4) (64,30)

Programmeringsmetodik Betydelsen av specifikationer (vad?) motivering (varför?) dokumentation i övrigt elegans, precision, klarhet Första introduktion till: algoritmer och datastrukturer algoritmkomplexitet