Datalogi 0 GA Forelæsning september 2003 Nils Andersen. Datamatiske principper

Relaterede dokumenter
It og informationssøgning Forelæsning 1 6. september 2006 Nils Andersen. Beregning på computer

Datalogi 0 GA Forelæsning september 2003 Nils Andersen. Tegn og tekster. Listefunktionalen map. Naïv sortering

FP-2: Supplerende noter i funktionsprogrammering

Datalogi 0 GA Forelæsning oktober 2003 Nils Andersen. Undtagelser. Kombinatorisk søgning

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter Abstract

Moduler i Standard ML

Baggrundsnote om logiske operatorer

Talregning. Aktivitet Emne Klassetrin Side. Indledning til VisiRegn ideer Oversigt over VisiRegn ideer 1-7 3

Eksempel: Skat i år 2000

Regulære udtryk og endelige automater

Hjælp! Der er brok med mit ML-program

2. KLASSE UNDERVISNINGSPLAN MATEMATIK

Rolf Fagerberg. Forår 2013

! Forelæsning 1: Om modeller og modellering. ! Gruppeopgave: Modeller i jeres projektarbejde. ! Forelæsning 2: Modelleringseksempler

2. KLASSE UNDERVISNINGSPLAN MATEMATIK!

Spørgeskema til evaluering af Datalogi 0 GA høst 2003

Kursus 02199: Programmering. Kontrol af programudførelsen. afsnit if (indkomst > ) topskat = (indkomst ) * 0.

Computerarkitektur. - en introduktion til computerarkitektur med LINDA

Uge Emne Materiale Fokus/faglige mål Kompetencer Andre aktiviteter

Matematik Matematik efter Lillegruppen (0-1 kl.)

Rolf Fagerberg. Forår 2012

Årsplan for matematik

Lær Python - Dag 4, modul 1 Objektorienteret programmering

Oversigt over Forenklede Fælles Mål i forbindelse med kapitlerne i MULTI. Problembehandling. Modellering

It og informationssøgning Forelæsning september 2006 Nils Andersen. Underprogrammer og betingelser. Standardfunktioner, typeomsætning

MaxiMat og de forenklede Fælles mål

Årsplan for 2.klasse 2018/19 Matematik

Årsplan matematik 5. klasse. Kapitel 1: Godt i gang

Oversigt over Forenklede Fælles Mål i forbindelse med kapitlerne i MULTI. Ræsonnement og tankegang. Modellering

ÅRSPLAN 1. KLASSE MATEMATIK 2016/2017 Eva Bak Nyhuus

Programmering og Problemløsning, 2017

Introduktion til DM507

Rolf Fagerberg. Forår 2015

Første del af rapporten består af et diagram, der viser, hvor mange point eleverne på landsplan fik i de enkelte opgaver.

Årsplan for matematik

Projektenhedskursus (PE): Studiets metoder (SME)

Foreløbig udgave af læringsmål til: Kapitel 1 Regn med store tal Fælles Mål Læringsmål Forslag til tegn på læring

Noter til C# Programmering Selektion

APPENDIX A INTRODUKTION TIL DERIVE

Programmering i C. Kursusintroduktion. Lektion september Målgruppe 2 Indhold 3 Form 4 Materiale. Målgruppe Indhold Form Materiale

Årsplan 9. Klasse Matematik Skoleåret 2015/16

Rolf Fagerberg. Forår 2014

Eleven kan handle med overblik i sammensatte situationer med matematik. Eleven kan anvende rationale tal og variable i beskrivelser og beregninger

Omskrivningsregler. Frank Nasser. 10. december 2011

En lille vejledning til lærere og elever i at bruge matematikprogrammet WordMat (begynderniveau)

Selam Friskole Fagplan for Matematik

DM507 Algoritmer og datastrukturer

Fag- og indholdsplan 9. kl.:

WORKSHOP 1C, DLF-kursus, Krogerup Højskole, den 19. oktober 2015

Regulære udtryk og endelige automater. Ugens emner

Årsplan for matematik i kl.

Fagårsplan 10/11 Fag: Matematik Klasse: 8.A Lærer: Henrik Stillits Fagområde/ emne Færdighedsregning - Typer af opgaver - Systematik

DM507 Algoritmer og datastrukturer

De rigtige reelle tal

Undersøgende matematik i prøverne. Odense 26. april 2019

Rolf Fagerberg. Forår 2015

Projekt Pascals trekant

Anstændige jobs og økonomisk vækst. Brug ressourcerne effektivt i forbrug og produktion. Skab fuld beskæftigelse

Sproget Limba. Til brug i G1 og K1. Dat1E 2003

DM507 Algoritmer og datastrukturer

Lineær regression i Standard ML

Forenklede Fælles Mål. Matematik i marts 27. marts 2014

Godkendelsesopgave G2 Datafangst: lyd og billeder Version 1.1, den 4/

Matematik samlet evaluering for Ahi Internationale Skole

Montørvejledning for DTC2100 Temperaturtyring - Version 1. Generel beskrivelse

Klasse: 3. årgang Fag: Matematik År: 2016/17. Læringsmål Hvad er de overordnet læringsmål for klassen?

Årsplan for 9 årgang

Evaluering test screening udredning. Øvelse: Udredningsmateriale til eget brug.

Et SML-program til at finde rødder i en kontinuert funktion

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Grundlæggende Algoritmer og Datastrukturer

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Trinmål Matematik. Børnehaveklasse Efter 3. klasse Fagligt bånd. Matematiske kompetencer. Problemløsning. Regnesymboler. Talforståelse Mængder

Induktive og rekursive definitioner

Årsplan for 1.klasse 2018/19 Matematik

VisiRegn: En e-bro mellem regning og algebra

Montørvejledning for DTC2102 Temperaturtyring - Version 1. Generel beskrivelse

ITS MP 013. Talsystemer V009. Elevens navn. IT Skolen Boulevarden 19A-C 7100 Vejle Tel.:

Fagårsplan 12/13 Fag: Matematik Klasse: 3.A Lærer:LBJ Fagområde/ emne At regne i hovedet

Jan B. Larsen HTX Næstved Computational Thinking Albena Nielsen N. Zahles Gymnasium 2018/2019

Matematik 2. klasse Årsplan. Årets emner med delmål

Årsplan for 2. årgang. Kapitel 1: Jubii. Kapitel 2: Mere om positionssystemet

Undervisningsplan for matematik

Ordinær eksamen i Introduktion til programmering, blok 1, 2010

Formativ brug af folkeskolens prøver årets resultater på landsplan Den skriftlige prøve i matematik FP10 maj 2019

Matematikvejlederdag. Ankerhus 3. november Side 1

Fagårsplan 12/13 Fag: Matematik Klasse: 6.a Lærer: LBJ Fagområde/ emne

DM507 Algoritmer og datastrukturer

Årsplan 9. klasse matematik Uge Emne Faglige mål Trinmål Materialer/ systemer 33 Årsprøven i matematik

Kursus 02199: Programmering. Lidt om forelæseren. Velkommen til. Praktisk information: kursusaktiviteter. Praktisk information: forelæsninger

PRØV! mundtlig til undervisningen og prøvesituationen

Matematik i Marts Torsdag d. 28. marts At eksperimentere ved brug af digitale læremidler Kl kl

Årsplan for 2. årgang Kapitel 1: Jubii. Kapitel 2: Mere om positionssystemet

ALMINDELIGT ANVENDTE FUNKTIONER

Odense, den 4. marts 2013 Heidi Kristiansen Heidi Kristiansen - Folkeskolens afsluttende prøver i matematik

Målsætning. Se hovedmål for scenariet og hovedmål for færdighedslæring her. Økonomi

HVAD STÅR DER I DE NYE FÆLLES MÅL OM DEN MATEMATISKE KOMPETENCE, KOMMUNIKATION? KØBENHAVN 29. SEPTEMBER 2015

Årsplan i matematik for 7. klasse 2018/2019

Årsplan for 2.klasse 2017/18 Matematik

EN SKOLE FOR LIVET ÅRSPLAN 18/19

Transkript:

Datalogi 0 GA Forelæsning 1 2 1. september 2003 Nils Andersen Datamatiske principper EDB som simulering Programmering Problemløsning Tilstandsorienteret Værdiorienteret (= funktionsorienteret) Administrative oplysninger Standard ML Funktioner (matematik >< datalogi) Typer 1

Data (Edb-ordbog, Dansk Standard 2049-1970): En formaliseret repræsentation af kendsgerninger eller forestillinger på en sådan form, at den kan kommunikeres eller omformes ved en eller anden proces. Analoge data >< digitale data ord af positioner med tegn fra et alfabet alfabet = {O, I, U}, ord = IOOUII Data beror på konvention; har både syntaks (form) og semantik (betydning). R A T da. eng. ty. 2

Datalogi? Datalogi EDB Informatik IT (informationsteknologi) IKT Kybernetik Computer science Computing Omverden Tanke fænomen begreb Virkelighed Information Kode symbol Data Databehandling 3

Simulering gammel virkelighed ny analyse og måling modellering repræsentation indgangsfænomen information indgangsoplysninger resultater udgangsfænomen brug indsigt tolkning inddata data uddata dataproces 4

Symbolbehandling Med symboler kan man Sende information (brev, telegram,... ) Gemme information (indskrift, dokument,... ) Behandle information (regneskema) Kalkule: 2 2 1 : 8 = 2 7 rest 5 1 6 ----- 6 1 5 6 --- 5 Regnemaskine: Blaise Pascal 1642 pascaline (addition, subtraktion) Computer/datamaskine/datamat: Fuldautomatisk; kan simulere enhver symbolbehandlingsoperation. (Beregning + styring) 5

Universel datamat Enhver dataproces kan eftergøres blot programmet vælges passende. Program Inddata Processor Uddata Regneenhed i forbindelse med et lager det imperative (tilstandsorienterede) programmeringsparadigme. Programmer er også data. John von Neumann: Program- og datalager kombineres; programmer kan frembringes som data. John McCarthy: regneoperationer udvides (med omflytningsoperationer som i Alonzo Church λ-kalkule) det applikative (funktions- eller værdiorienterede) programmeringsparadigme. 6

Organisation Datalogi 0 GA forelæsninger Nils Andersen Julia Lawall øvelser 11 hold 6 instruktorer Fra i dag kl. 13! Holdfordeling ved opslag Bøger M.R. Hansen & H. Rischel: Standard ML Introduction to Kursusbogen bind 1 Generelle oplysninger bind 2 Vejledning i brug af DIKUs EDBsystem bind 3 Laboratorieøvelser bind 4 Noter bind 5 Uddrag af L.C. Paulson: ML for the Working Programmer, 2nd edition 7

Øvelser Skaf jer (dvs. hent) jeres UNIX-brugernummer Prøv at gå på nettet (med netscape eller opera); find hjemmesiden for Datalogi 0 GA: http://www.diku.dk/undervisning/2003e/dat0ga/ Prøv mosml I det omfang, der er tid: Regn følgende opgaver: HR opg. 1.1 KB4 opg. 3.2, 3.3 De supplerende opgaver på næste side. Til særligt interesserede: Løs KB4 opg. 3.3 (for signum : int -> int) og supplerende opgave 3 og 4 med ren heltalsaritmetik, det vil sige under anvendelse af +, -, *, div, mod og abs, men uden brug af værdier af type real, uden brug af if...then...else... og uden brug af ordningsrelationerne <, <=, > eller >=. 8

Opgaver til uge 36 Hansen & Rischel: Opgave 1.1 Kursusbogens bind 4: Opgave 3.2 og 3.3 Supplerende opgaver: 1. Skriv den funktion af type int -> bool, som ud fra en persons alder afgør, om personen har stemmeret. 2. Skriv den funktion af type real -> real, som ud fra en anvist løn beregner den udbetalte løn, når fradraget er 2312 og trækprocenten er 48 (se bort fra arbejdsmarkedsbidrag o.lign.). 3. Skriv den funktion af type int -> int, som for antallet af deltagere på et kursus beregner, hvor mange øvelseshold der skal oprettes, når antallet af hold skal være mindst muligt, men der højst må være 25 på hvert hold. 4. Det er gratis at ringe til telefonnumre, hvis to første (af de otte) cifre er 80. Skriv en funktion af type int -> bool, der undersøger, om det er gratis at ringe til det opgivne nummer. 9

Opgaver til uge 37 Særligt vigtige opgaver er fremhævet med fed skrift. Opgaver til skriftlig aflevering er skrevet med kursiv. Hansen & Rischel: Opgave 2.2, 2.6, 2.7, 2.8, 2.9 Kursusbogens bind 4: Opgave 4.1, 4.2, 4.3, 4.4 For særligt interesserede: Løs kursusbogens opgave 4.4 på følgende måde: Skriv først en funktion, der løser opgaven, når a b c. Brug derefter denne funktion som hjælpefunktion ved løsning af opgaven i det generelle tilfælde. Løs desuden opgave 4.6 i kursusbogens bind 4. 10

Begrundelser Hvorfor værdiorienteret programmering? Færre og enklere grundbegreber Lettere at ræsonnere om programmerne Ortogonalt: Tillader vilkårlige kombinationer Tillader abstraktioner på ethvert niveau Hvorfor stærkt typesystem? Mere informative fejlmeldinger Lettere at få programmer korrekte Hvorfor Standard ML? Værdiorienteret Stærkt typesystem Usædvanlig veldefineret Gode implementeringer Gratis Ikke særlig udbredt Uinteressant grænseflade (tekst ind/tekst ud)? Bruges ikke i praksis? Kører langsomt 11

Eksempel på kørsel grerr > mosml Moscow ML version 2.00 (June 2000) Enter quit(); to quit. - 3 + 5; > val it = 8 : int - it div 2; > val it = 4 : int - val moms = 0.25; > val moms = 0.25 : real - round (~27.8); > val it = ~28 : int - fun pris (oere) = oere + round (real (oere) * moms); > val pris = fn : int -> int - pris (30000); > val it = 37500 : int - quit(); grerr > 12

Funktioner matematik En funktionel relation. 2 4 1 2 0 0 1 2 2. 4 Total, når ikke andet er præciseret datalogi En beregningsforskrift fun f n = n + n; fun g n = 2 * n; Her regnes f og g for forskellige (og funktioner kan i øvrigt ikke sammenlignes med = eller <>) Partiel, når ikke andet er præciseret 13

Simple typer ~ abs + - * div mod int ceil floor round trunc real + - * / real ~ abs < = > <= >= <> < = > <= >= <> = <> chr ordsize bool not < = > <= >= <> < = > <= >= <> ^ char str string Se KB4 side 51. 14

Gruppering Parenteser grupperer, men har ikke noget at gøre med funktionskald. Man kan valgfrit skrive f(x) eller f x eller endda (f)(x) eller (f)x men helt uden nogen form for adskillelse fx opfattes det som et nyt værdinavn. Hvis argumentet er sammensat, må det sættes i parentes: fun pris oere = round (real oere * moms) + oere; for funktionsanvendelse binder stærkere end nogen operator. Højresiden betyder derfor (round ((real oere) * moms)) + oere svarende til udtrykstræet real oere round * + moms oere 15

Associeringsretning og prioritet Grupperingsregler for udtryk med flere operatorer: Ved flere forekomster af samme operator bestemmes grupperingen af dens associeringsretning. De fleste operatorer associerer fra venstre: a - b - c - d betyder ((a - b) - c) - d. (I SML tre vigtige undtagelser: ::, @ og -> associerer fra højre.) Blandes flere forskellige operatorer, er deres prioritet afgørende (i SML et tal 0, 1,..., 9): 7: *, /, div, mod 6: +, -, ^ 5: ::, @ 4: =, <>, <, <=, >, >= 3: :=, o 0: before højere prioritetstal binder stærkere. 16