Programmering og Problemløsning, 2017
|
|
- Harald Eskildsen
- 6 år siden
- Visninger:
Transkript
1 Programmering og Problemløsning, 2017 Træstrukturer Part III Martin Elsman Datalogisk Institut Københavns Universitet DIKU 3. November, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
2 Outline 1 Træstrukturer Part III Udtrykstræer Evaluering af Udtryk Simpel Pretty-Printing Symbolsk Differentiering Generering af LAT E X kode Simplificering af Symbolske Udtryk Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
3 Outline Udtrykstræer og Symbolsk Differentiering Emner for i dag: 1 Udtrykstræer. Sum-type definition (funktioner af en variabel) 2 Evaluering af udtryk. 3 Simpel pretty-printing. Pretty bad... 4 Symbolsk differentiering. Vi implementerer gymnasiereglerne for differentiering... 5 Generering af L A TEX kode. Vi prøver at undgå unødige parenteser... 6 Simplificering. Vi implementerer forskellige regneregler til simplificering... Times Plus Divide X X Const 3 X ( 3 + x) sin x x Sin Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
4 Udtrykstræer Regneudtryk i én variabel Et udtryk kan (rekursivt) være på en af følgende former: 1 Variablen x. 2 En konstant c IR. 3 To udtryk adskilt af +. 4 To udtryk adskilt af. 5 To udtryk adskilt af (gange). 6 To udtryk adskilt af en brøkstreg. 7 Et udtryk opløftet til en potens p. 8 Funktionen sin anvendt på et udtryk. 9 Funktionen cos anvendt på et udtryk. 10 Funktionen log anvendt på et udtryk. 11 Konstanten e opløftet til en potens angivet med et udtryk. 12 Et udtryk omgivet af parenteser. Eksempel: sin x + (x + 1)2 cos x Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
5 Udtrykstræer Sum-Type til Udtrykstræer type expr = X // The variable x Const of float // Constants Plus of expr * expr // Addition Minus of expr * expr Times of expr * expr Divide of expr * expr Power of expr * float // a d, e.g., (x + 2) 2.3 Sin of expr Cos of expr Log of expr Exp of expr // e a, e.g., e (2+x) Bemærk Vi understøtter kun funktioner af én variabel. Parenteser er implicitte; træet indkoder parenteser direkte. Dvs: Parsning (at konvertere en streng til et udtrykstræ) er en separat problemstilling vi vil se på en anden gang... Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
6 Evaluering af Udtryk Evaluering af Udtryk (fortolkning) Et udtrykstræ repræsenterer kroppen på en funktion f (x). let rec eval e x = // assume a value for the variable X match e with X -> x Const c -> c Plus (e1, e2) -> eval e1 x + eval e2 x Minus (e1, e2) -> eval e1 x - eval e2 x Times (e1, e2) -> eval e1 x * eval e2 x Plus Divide (e1, e2) -> eval e1 x / eval e2 x Power (e, p) -> (eval e x) ** p Sin e -> sin (eval e x) Cos e -> cos (eval e x) Divide Power Log e -> log (eval e x) Exp e -> exp (eval e x) Sin Cos Plus 2 x x x 1 let ee = Plus (Divide (Sin X, Cos X), Power (Plus (X, Const 1.0), 2.0)) let v = eval ee 3.0 // evaluates to Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
7 Simpel Pretty-Printing Simpel Pretty-Printing (pretty bad) let par s = "(" + s + ")" let rec pp e : string = match e with X -> "x" Const c -> sprintf "%g" c Plus (e1, e2) -> par(pp e1 + "+" + pp e2) Minus (e1, e2) -> par(pp e1 + "-" + pp e2) Times (e1, e2) -> par(pp e1 + "*" + pp e2) Divide (e1, e2) -> par(pp e1 + "/" + pp e2) Power (e, p) -> par(pp e + "ˆ" + sprintf "%g" p) Sin e -> "sin " + pp e Cos e -> "cos " + pp e Log e -> "log " + pp e Exp e -> "exp " + pp e Hvad er der galt ved denne pretty-printer? 1 2 Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
8 Symbolsk Differentiering Differentieringsregler h(x) h (x) x 1 c 0 f (x) + g(x) f (x) + g (x) f (x) g(x) f (x) g (x) f (x) g(x) f (x) g(x) + f (x) g (x) f (x) g(x) x n f (x) g(x) f (x) g (x) (g(x)) 2 n x n 1 sin x cos x cos x sin x logx 1 e x f (g(x)) x e x f (g(x)) g (x) Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
9 Symbolsk Differentiering Symbolsk Differentiering i F# let rec ddx e = match e with X -> Const 1.0 Const c -> Const 0.0 Plus (e1, e2) -> Plus(ddx e1, ddx e2) Minus (e1, e2) -> Minus (ddx e1, ddx e2) Times (e1, e2) -> Plus (Times (ddx e1, e2), Times (e1, ddx e2)) Divide (e1, e2) -> Divide(Minus (Times (ddx e1, e2), Times (e1, ddx e2)), Power (e2, 2.0)) Power (e, p) -> Times (Times (Const p, Power (e, p-1.0)), ddx e) Sin e -> Times (Cos e, ddx e) Cos e -> Times (Minus (Const 0.0, Sin e), ddx e) Log e -> Times (Divide (Const 1.0, e), ddx e) Exp e -> Times (Exp e, ddx e) Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
10 Symbolsk Differentiering Symbolsk Differentiering i F# > ddx ee;; val it : expr = Plus (Divide (Minus (Times (Times (Cos X,Const 1.0),Cos X), Times (Sin X,Times (Minus (Const 0.0,Sin X), Const 1.0))), Power (Cos X,2.0)), Times (Times (Const 2.0,Power (Plus (X,Const 1.0),1.0)), Plus (Const 1.0,Const 0.0))) > pp (ddx ee);; val it : string = "(((((cos x*1)*cos x)-(sin x*((0-sin x)*1)))/... (cos xˆ2))+((2*((x+1)ˆ1))*(1+0)))" Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
11 Generering af LAT E X kode Generering af L A TEX kode I stedet for at generere tekst kan vi generere L A T E X kode. Strategien er at lade vores pretty-printer returnere et par af to værdier: 1 En streng der repræsenterer den genererede L A T E X kode. 2 Et tal (præcedens) der siger hvor stærkt det underliggende udtryk binder. Eksempler pp (Plus(X, Const 1.0)) ("x+1.0", 2) pp (Times(Const 2.0, Const 3.0)) ("2.0\\cdot 3.0", 3) Betrakt udtrykket Times(X,Plus(X,Const 1.0)): Når vi nu skal pretty-printe det højre argument til Times kan vi se at vi skal sætte paranteser rundt om udtrykket "x+1.0", da præcedens-tallet 2 er mindre end (eller lig med) præcedens for konstruktøren Times: pp (Times(X, Plus(X, Const 1.0))) ("x\\cdot (x+1.0)", 3) Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
12 Generering af LAT E X kode Generering af L A TEX kode del 0 Nogle hjælpfunktioner samt præcedens-konstanter: let p_plus = 3 // precedence let p_times = 4 let p_divide = 0 // division with horizontal bar let p_unop = 5 let p_max = 1000 // [par p s] adds parentheses around s if the relative // precedence p (p_parent - p_child) is positive or 0 let par p s = if p < 0 then s else "(" + s + ")" Igen: Ingen parenteser er nødvendige omkring et barn hvis dets udtryk binder stærkere end forældre-udtrykket. Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
13 Generering af LAT E X kode Generering af L A TEX kode del 1 let tolatex e = let rec pp e : string * int = match e with X -> ("x", p_max) Const c -> (sprintf "%g" c, p_max) Plus (e1, e2) -> pp_binop ("+",p_plus) e1 e2 Minus (e1, e2) -> pp_binop ("-",p_plus) e1 e2 Times (e1, e2) -> pp_binop ("\\cdot ",p_times) e1 e2 Divide (e1, e2) -> let (s1,s2,_) = pp_bin p_divide e1 e2 in ("\\frac{" + s1 + "}{" + s2 + "}", p_max) Power (e, k) -> let (s1,s2,p) = pp_bin p_unop e (Const k) in (s1 + "ˆ{" + s2 + "}", p) Sin e -> pp_unop "sin " e Cos e -> pp_unop "cos " e Log e -> pp_unop "log " e Exp e -> let (s,a) = pp e in ("eˆ{" + par (p_unop-a) s + "}", p_unop) and... Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
14 Generering af LAT E X kode Generering af L A TEX kode del 2... and pp_bin p e1 e2 = let (s1,p1) = pp e1 let (s2,p2) = pp e2 in (par (p-p1) s1, par (p-p2) s2, p) and pp_binop (op,p) e1 e2 = let (s1,s2,p) = pp_bin p e1 e2 in (s1 + op + s2, p) and pp_unop op e = let (s,p) = pp e in ("\\"+op + par (p_unop-p) s, p_unop) in fst(pp e) Eksempel: tolatex (ddx ee) "\frac{(\cos x\cdot 1)\cdot \cos x-\sin x\cdot ((0-\sin x)... \cdot 1)}{(\cos x)ˆ{2}}+(2\cdot (x+1)ˆ{1})\cdot (1+0)" (cos x 1) cos x sin x ((0 sin x) 1) (cos x) 2 + (2 (x + 1) 1 ) (1 + 0) Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
15 Simplificering af Symbolske Udtryk Simplificering af Symbolske Udtryk Der er tilsyneladende en række konstruktioner der kan simplificeres... ddx ee Plus (Divide (Minus (Times (Times (Cos X,Const 1.0),Cos X), Times (Sin X,Times (Minus (Const 0.0,Sin X), Const 1.0))), Power (Cos X,2.0)), Times (Times (Const 2.0,Power (Plus (X,Const 1.0),1.0)), Plus (Const 1.0,Const 0.0))) Eksempler: Times (Cos X,Const 1.0) = Cos X Plus (Const 1.0,Const 0.0) = Const 1.0 Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
16 Simplificering af Symbolske Udtryk En Simplificeringsfunktion i F# del 1 let rec simplify e = match e with Plus (e1, Const 0.0) -> simplify e1 Plus (Const 0.0, e2) -> simplify e2 Plus (Const a, Const b) -> Const (a + b) Plus (e1, e2) -> Plus (simplify e1, simplify e2) Minus (e1, Const 0.0) -> simplify e1 Minus (Const a, Const b) -> Const (a - b) Minus (e1, Minus(Const 0.0, e2)) -> Plus (simplify e1, simplify e2) Minus (e1, e2) -> Minus (simplify e1, simplify e2) Divide (Const 0.0, e2) -> Const 0.0 Divide (e1, Const 1.0) -> simplify e1 Divide (e1, e2) -> Divide (simplify e1, simplify e2) Power (e, 1.0) -> simplify e Power (e, c) -> Power (simplify e,c)... Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
17 Simplificering af Symbolske Udtryk En Simplificeringsfunktion i F# del 2 let rec simplify e = match e with... Times (e1, Const 0.0) -> Const 0.0 Times (Const 0.0, e2) -> Const 0.0 Times (e1, Const 1.0) -> simplify e1 Times (Const 1.0, e2) -> simplify e2 Times (Const a, Const b) -> Const (a * b) Times (e1,plus(e2,e3)) -> simplify (Plus(Times(e1,e2),Times(e1,e3))) Times (e1,minus(e2,e3)) -> simplify (Minus(Times(e1,e2),Times(e1,e3))) Times (e1, e2) -> if e1 = e2 then simplify (Power (e1,2.0)) else Times (simplify e1, simplify e2) Sin e -> Sin (simplify e) Cos e -> Cos (simplify e) Log e -> Log (simplify e) Exp e -> Exp (simplify e) _ -> e Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
18 Simplificering af Symbolske Udtryk Det tager flere steps før simplifyeren stabiliseres: tolatex(ddx ee) (cos x 1) cos x sin x ((0 sin x) 1) (cos x) 2 + (2 (x + 1) 1 ) (1 + 0) tolatex(simplify(ddx ee)) cos x cos x sin x (0 sin x) (cos x) 2 + (2 (x + 1) + 0) tolatex(simplify(simplify(ddx ee))) (cos x) 2 (0 (sin x) 2 ) (cos x) 2 + (2 x + 2) tolatex(simplify(simplify(simplify(ddx ee)))) (cos x) 2 + (sin x) 2 (cos x) 2 + (2 x + 2) Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
19 Simplificering af Symbolske Udtryk Komplet Simplificering Med generisk lighed og rekursion kan vi let skrive en simplifyer der kalder simplify igen og igen indtil udtrykket ikke længere simplificeres: let rec simplifymax e = let se = simplify e in if se = e then e else simplifymax se Komplet Simplificering i Aktion: tolatex(simplifymax(ddx ee)) "\\frac{(\\cos x)ˆ{2}+(\\sin x)ˆ{2}}{(\\cos x)ˆ{2}}+(2\\cdot x+2)" L A T E X Fortolkning: (cos x) 2 + (sin x) 2 (cos x) 2 + (2 x + 2) Martin Elsman (DIKU) Programmering og Problemløsning, November, / 19
Programmering og Problemløsning, 2017
Programmering og Problemløsning, 2017 Typer og Mønstergenkendelse Martin Elsman Datalogisk Institut Københavns Universitet DIKU 23. Oktober, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017
Læs mereProgrammering og Problemløsning, 2017
Programmering og Problemløsning, 2017 Parsing med Højere-Ordens Funktioner Martin Elsman Datalogisk Institut Københavns Universitet DIKU 1. December, 2017 Martin Elsman (DIKU) Programmering og Problemløsning,
Læs mereProgrammering og Problemløsning, 2017
Programmering og Problemløsning, 2017 Rekursion Towers of Hanoi og Liniegrafik Martin Elsman Datalogisk Institut Københavns Universitet DIKU 13. Oktober, 2017 Martin Elsman (DIKU) Programmering og Problemløsning,
Læs mereProgrammering og Problemløsning, 2017
Programmering og Problemløsning, 2017 Martin Elsman Datalogisk Institut Københavns Universitet DIKU 10. Oktober, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017 10. Oktober, 2017 1 / 15
Læs mereProgrammering og Problemløsning, 2017
Programmering og Problemløsning, 2017 Højere-ordens Funktioner Part I Martin Elsman Datalogisk Institut Københavns Universitet DIKU 20. November, 2017 Martin Elsman (DIKU) Programmering og Problemløsning,
Læs mereProgrammering og Problemløsning, 2017
Programmering og Problemløsning, 2017 Martin Elsman Department of Computer Science University of Copenhagen DIKU September 27, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017 September
Læs mereSproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract
Sproget Six Til brug i rapportopgaven på kurset Oversættere Vinter 2006 Abstract Six er baseret på det sprog, der vises i figur 6.2 og 6.4 i Basics of Compiler Design. Den herværende tekst beskriver basissproget
Læs mereProgrammering for begyndere Lektion 2. Opsamling mm
Lektion 2 Opsamling mm God tone Der er indlagt spørge sessioner Lektion 2 - Agenda Programmering for Lidt ændringer til teknikken, herunder hvordan du genser en lektion Lidt generelle tilbagemeldinger
Læs mereProgrammering og Problemløsning, 2017
Programmering og Problemløsning, 2017 Programmering med Lister og Arrays Martin Elsman Department of Computer Science University of Copenhagen DIKU October 3, 2017 Martin Elsman (DIKU) Programmering og
Læs mereLøsningsforslag Skriftlig eksamen 9. januar 2012
Løsningsforslag Skriftlig eksamen 9. januar 2012 Version 1, 2012-01-09 Spørgsmål 1 Spørgsmål 1.1 Først laver vi indlysende korrekt NFAer for hver af de to dele (ddd ddd) og (_ddd)* af det givne regulære
Læs mereDynamisk programmering
Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur blandt mange mulige. Dynamisk programmering Optimeringsproblem: man ønsker at finde
Læs mereLektion 3 Sammensætning af regnearterne
Lektion Sammensætning af regnearterne Indholdsfortegnelse Indholdsfortegnelse... Plus, minus, gange og division... Negative tal... Parenteser og brøkstreger... Potenser og rødder... Lektion Side 1 Plus,
Læs mereForelæsning Uge 2 Torsdag
Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug
Læs mereLær Python dag 1 - modul 1
Lær Python dag 1 - modul 1 Introduktion, basis python Steffen Berg Klenow Jonas Bamse Andersen Syddansk Universitet Indhold 1. Velkommen 2. Programmering i python 3. Typer, variabler og udtryk 1 Velkommen
Læs meredynamisk geometriprogram regneark Fælles mål På MULTIs hjemmeside er der en oversigt over, hvilke Fælles Mål der er sat op for arbejdet med kapitlet.
Algebra og ligninger - Facitliste Om kapitlet I dette kapitel om algebra og ligninger skal eleverne lære at regne med variable, få erfaringer med at benytte variable Elevmål for kapitlet Målet er, at eleverne:
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave
Læs mereDynamisk programmering
Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur (struktur opbygget af et endeligt antal enkeltdele) blandt mange mulige. Eksempler:
Læs mereForelæsning Uge 2 Mandag
Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgave:
Læs mereProgrammering og Problemløsning, 2017
Programmering og Problemløsning, 2017 Input og Output Martin Elsman Datalogisk Institut Københavns Universitet DIKU 27. November, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017 27. November,
Læs mereSymbolbehandlingskompetencen er central gennem arbejdet med hele kapitlet i elevernes arbejde med tal og regneregler.
Det første kapitel i grundbogen til Kolorit i 8. klasse handler om tal og regning. Kapitlet indledes med, at vores titalssystem som positionssystem sættes i en historisk sammenhæng. Gennem arbejdet med
Læs mereDokumentation af programmering i Python 2.75
Dokumentation af programmering i Python 2.75 Af: Alexander Bergendorff Jeg vil i dette dokument, dokumentere det arbejde jeg har lavet i løbet opstarts forløbet i Programmering C. Jeg vil forsøge, så vidt
Læs mereOprids over grundforløbet i matematik
Oprids over grundforløbet i matematik Dette oprids er tænkt som en meget kort gennemgang af de vigtigste hovedpointer vi har gennemgået i grundforløbet i matematik. Det er en kombination af at repetere
Læs mereAlgoritmer og invarianter
Algoritmer og invarianter Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker. Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker.
Læs mereDynamisk programmering
Dynamisk programmering Dynamisk programmering Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Har en hvis lighed med divide-and-conquer: Begge opbygger løsninger til større problemer
Læs mereInduktive og rekursive definitioner
Induktive og rekursive definitioner Denne note omhandler matematiske objekter, som formelt er opbygget fra et antal basale byggesten, kaldet basistilfælde eller blot basis, ved gentagen brug af et antal
Læs mere2) Det er let at være produktiv med Python, da Python som regel kun har mellem 67 og 80% færre linier end tilsvarende C eller Java kode.
Denne guide er oprindeligt udgivet på Eksperten.dk I gang med Python I denne artikel vil jeg forsøge at give et kort og hurtigt indblik i programmeringssproget Python, der desværre er alt for overset.
Læs mereEt udtryk er (som bekendt?) lineært hvis den differentierede er en konstant funktion, dvs. at den ikke afhænger af x. Betragt f lgende værdiprocedurer
Opgave 1 (25%) Simple udtryk med +, - og * over heltal og en enkelt variabel x kan repræsenteres som værdier af f lgende type: Type Expression = Sum(const: Int, x: Unit, plus, minus, times: Arguments)
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af opgaverne:
Læs mereSyntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik
Datalogi C, RUC Forelæsning 22. november 2004 Henning Christiansen Syntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik Dagens program Hvad
Læs mereForelæsning Uge 2 Mandag
Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgave:
Læs mereOpgaver til Maple kursus 2012
Opgaver til Maple kursus 2012 Jonas Camillus Jeppesen, jojep07@student.sdu.dk Martin Gyde Poulsen, gyde@nqrd.dk October 7, 2012 1 1 Indledende opgaver Opgave 1 Udregn følgende regnestykker: (a) 2342 +
Læs mereJavaScript. nedarvning.
JavaScript er et sprog, der kan give en hjemmeside mere funktionalitet og gøre den interaktiv, så den reagerer på læsernes handlinger. CGI (Common Gateway Interface) har hidtil været de protokoller, man
Læs merePython 3 kursus lektion 1:
Python 3 kursus lektion 1: Her laves et nyt program Her køre programmet! Her skrives koden: Gem (CTRL-s) Tryk F5 (for at køre) www.madsmatik.dk d.14-01-2016 1/5 At skrive til skærmen: Hello World Man kan
Læs merePUT og INPUT funktionerne
PUT og INPUT funktionerne Af: Peter Kellberg Danmarks Statistik Sejrøgade 11 DK-2100 København Ø pke@dst.dk PUT og INPUT-funktionerne Denne artikel er foranlediget af en henvendelse til vores interne SAS
Læs mereProgrammering i C Videre med C (2 af 4) 19. marts 2007
Programmering i C Videre med C (2 af 4) 19. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan i dag Brush-up fra sidst Videre med C Kontrolløkker (while, for, ) Conditional Execution (if, if/else) Funktioner
Læs mereLøsningsforslag Skriftlig eksamen 3. januar 2013
Løsningsforslag Skriftlig eksamen 3. januar 2013 Version 1, 2013-01-03 Spørgsmål 1 Spørgsmål 1.1 L1: od2 := FALSE L2: SLEEP 100 IF (cd2 < 14) GOTO L2 od2 := TRUE Ovenstående løser opgaven fordi digital
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning
Læs mereEt udtrykstrç med de ære regnearter, heltalskonstanter og variabler beskrives. Type Expr = Sumèplus, minus, times, div: Args, const: Int, name: Textè
Opgave 1 è20èè Et udtrykstrç med de ære regnearter, heltalskonstanter og variabler beskrives af fçlgende rekursive Trine-type: Type Expr = Sumèplus, minus, times, div: rgs, const: Int, name: Textè Type
Læs mereSkriftlig Eksamen Algoritmer og Datastrukturer (dads)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Tirsdag den 27. maj 2003, kl. 9.00 3.00 Opgave (25%) For konstanten π = 3.4592... gælder identiteten π 2 6 =
Læs mereØVEHÆFTE FOR MATEMATIK C FORMLER OG LIGNINGER
ØVEHÆFTE FOR MATEMATIK C FORMLER OG LIGNINGER INDHOLDSFORTEGNELSE 0. FORMELSAMLING TIL FORMLER OG LIGNINGER... 2 Tal, regneoperationer og ligninger... 2 Isolere en ubekendt... 3 Hvis x står i første brilleglas...
Læs merematx.dk Enkle modeller
matx.dk Enkle modeller Dennis Pipenbring 28. juni 2011 Indhold 1 Indledning 4 2 Funktionsbegrebet 4 3 Lineære funktioner 8 3.1 Bestemmelse af funktionsværdien................. 9 3.2 Grafen for en lineær
Læs mereKapitel 3 Betinget logik i C#
Kapitel 3 i C# er udelukkende et spørgsmål om ordet IF. Det er faktisk umuligt at programmere effektivt uden at gøre brug af IF. Du kan skrive små simple programmer. Men når det bliver mere kompliceret
Læs mereDefinition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er
Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er en unik simpel vej mellem ethvert par af punkter i
Læs mereBits DM534. Rolf Fagerberg, 2012
Bits DM534 Rolf Fagerberg, 2012 Resume af sidst Overblik over kursus Introduktion. Tre pointer: Datalogi er menneskeskabt og dynamisk. Tidslinie over fremskridt mht. ideer og hardware. Algoritme er et
Læs mereHinkeHop DE HURTIGE 5-6 ÅR. Sådan gør du: Prøv at justere aktiviteten sådan her...!
HinkeHop Sådan gør du: 1. Print hoppepladerne. 2. Hvis du har kridt og et sted på jorden, der må tegnes, kan du sammen med barnet tegne hoppeplade 1 med kridt på jorden. Sørg for at tegne felterne, så
Læs mereIntroduktion til funktioner, moduler og scopes i Python
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til funktioner, moduler og scopes i Python Denne artikel er fortsættelsen af "I gang med Python", som blevet publiceret her på sitet for
Læs mereEksempel: Skat i år 2000
Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 11 sider Skriftlig eksamen i Datalogi Modul 1 Sommer 2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 10% Opgave 2 10%
Læs mereProgrammering, algoritmik og matematik en nødvendig sammenblanding?
Programmering, algoritmik og matematik en nødvendig sammenblanding? Oplæg til IDA møde, 29. november 2004 Martin Zachariasen DIKU 1 Egen baggrund B.Sc. i datalogi 1989; Kandidat i datalogi 1995; Ph.D.
Læs mereRekursion og dynamisk programmering
Rekursion og dynamisk programmering Datastrukturer & Algoritmer, Dat C Forelæsning 12/10-2004 Henning Christiansen Rekursion: at en procedure kalder sig selv eller et antal metoder kalder hinanden gensidigt.
Læs merePolynomier. Frank Villa. 26. marts 2012
Polynomier Frank Villa 26. marts 2012 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Indhold 1 Introduktion 2
Læs mereForelæsning Uge 2 Mandag
Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgaver
Læs mereSikre Beregninger. Kryptologi ved Datalogisk Institut, Aarhus Universitet
Sikre Beregninger Kryptologi ved Datalogisk Institut, Aarhus Universitet 1 Introduktion I denne note skal vi kigge på hvordan man kan regne på data med maksimal sikkerhed, dvs. uden at kigge på de tal
Læs mereMIPS modulet og registerallokatoren
MIPS modulet og registerallokatoren Værktøjer til oversætterdelen af K1 Dat1E 2001 MIPS modulet Den vigtigste del af modulet MipsData.sml er datatypen mips, som beskriver MIPS ordrer, se figur 1. Alle
Læs mereØVEHÆFTE FOR MATEMATIK C FORMLER OG LIGNINGER
ØVEHÆFTE FOR MATEMATIK C FORMLER OG LIGNINGER INDHOLDSFORTEGNELSE 0. FORMELSAMLING TIL FORMLER OG LIGNINGER... 2 Tal, regneoperationer og ligninger... 2 Ligning med + - / hvor x optræder 1 gang... 3 IT-programmer
Læs mere#AlleKanKode. Lektion 2 - Konstanter og Variabler
#AlleKanKode Lektion 2 - Konstanter og Variabler Disclaimer / Ansvarsfraskrivelse Alt du deler og siger mm bliver optaget. Lad være med at dele privat oplysninger, adgangskoder, kreditkort oplysninger
Læs mereDivide-and-Conquer algoritmer
Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer (af samme type). 2. Løs delproblemerne ved rekursion (dvs. kald algoritmen
Læs mereSammensætning af regnearterne
Sammensætning af regnearterne Plus, minus, gange og division... 19 Negative tal... 0 Parenteser og brøkstreger... Potenser og rødder... 4 Sammensætning af regnearterne Side 18 Plus, minus, gange og division
Læs mereListen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:
Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra
Læs mereSproget Limba. Til brug i G1 og K1. Dat1E 2003
Sproget Limba Til brug i G1 og K1 Dat1E 2003 Abstract Limba er et simpelt imperativt sprog med hoballokerede tupler. Dette dokument beskriver uformelt Limbas syntaks og semantik samt en fortolker for Limba,
Læs mereEnigma. Et programmeringssprog. Forfatter: Niels Serup X. Y Vejleder: A B C. Fag: Programmering Uddannelsessted: N M
Enigma Et programmeringssprog Forfatter: Niels Serup X. Y Vejleder: A B C Fag: Programmering Uddannelsessted: N M 25. maj 2010 Indholdsfortegnelse Indledning 3 Sproget 3 Syntax.............................................
Læs mereFundamentale sprogbegreber
Fundamentale sprogbegreber Sætninger og udtryk Niveauer af programbeskrivelse (statisk versus dynamisk syn) Oversigt Sætninger simple sætninger (assignment, metodekald) sammensatte sætninger (selektion,
Læs mereMini-formelsamling. Matematik 1
Indholdsfortegnelse 1 Diverse nyttige regneregler... 1 1.1 Regneregler for brøker... 1 1.2 Potensregneregler... 1 1.3 Kvadratsætninger... 2 1.4 (Nogle) Rod-regneregler... 2 1.5 Den naturlige logaritme...
Læs mereLæringsprogram. Numeriske metoder. Matematik A Programmering C Studieområdet. Roskilde Tekniske Gymnasium Klasse 3.4
Læringsprogram Numeriske metoder Matematik A Programmering C Studieområdet Roskilde Tekniske Gymnasium Klasse 3.4 Lau Lund Leadbetter Mikkel Karoli Johnsen Tobias Sønderskov Hansen Lineær regression ved
Læs mereForelæsning Uge 4 Mandag
Forelæsning Uge 4 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Opfølgning på Skildpadde
Læs mereSproget Rascal (v. 2)
Sproget Rascal (v. 2) Til brug i K1 på kurset Oversættere Opdateret 29/11 2004 Abstract Rascal er et simpelt Pascal-lignende imperativt sprog. Dette dokument beskriver uformelt Rascals syntaks og semantik
Læs mereDifferentiation i praksis
Differentiation i praksis Frank Villa 7. august 2012 2008-2012. IT Teaching Tools. ISBN-13: 978-87-92775-00-9. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere
Læs mereKlasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22.
Klasser og Objekter i Python Uge 46 Learning Python: kap 15-16, 19-22. Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. En kage form Klassens
Læs mereDivide-and-Conquer algoritmer
Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Vinter 1998/99 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 16% Opgave 2 12% Opgave 3 10% Opgave
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 3. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Varighed: timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.
Læs mereVed indkøring påtrykkes en kendt amplitude (HUSK 50 ohms afslutning) og displayet aflæses.
/* Power Meter 2012 /* Rettet den 13.februar 2013 /* Version 1.2 /* Input medie er en AD8307, som forsynes fra Arduino Uno stabiliserede 5 volt. A/D input er på Arduino analog input pin A0 AREF er tilført
Læs mereNoter til C# Programmering Selektion
Noter til C# Programmering Selektion Sætninger Alle sætninger i C# slutter med et semikolon. En sætning kontrollerer sekvensen i programafviklingen, evaluerer et udtryk eller gør ingenting Blanktegn Mellemrum,
Læs mereAlgebra med Bea. Bea Kaae Smit. nøgleord andengradsligning, komplekse tal, ligningsløsning, ligningssystemer, nulreglen, reducering
Algebra med Bea Bea Kaae Smit nøgleord andengradsligning, komplekse tal, ligningsløsning, ligningssystemer, nulreglen, reducering Indhold 1 Forord 4 2 Indledning 5 3 De grundlæggende regler 7 3.1 Tal..........................
Læs mereRepræsentation af tal
Repræsentation af tal DM534 Rolf Fagerberg 1 / 18 Mål Målet for disse slides er at beskrive, hvordan tal repræsenteres som bitmønstre i computere. Dette emne er et uddrag af kurset DM548 Computerarkitektur
Læs mereIntroduktion Til Konkurrenceprogrammering
Introduktion Til Konkurrenceprogrammering Søren Dahlgaard og Mathias Bæk Tejs Knudsen {soerend,knudsen}@di.ku.dk Version 0.1 Indhold Indhold i Introduktion 1 1 Palindromer 3 1.1 Introduktion til Python...............
Læs mereOpfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner
Forelæsning 4.1 Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner finden findalle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Afleveringsopgave
Læs mereRettelser til Pilen ved træets rod
Rettelser til Pilen ved træets rod Hans Hüttel Pr. 12. juni 2003 Nedenstående rettelser er indsamlet af mig selv, Peter Poulsen, Martin Maach og ikke mindst Lars Schunk i løbet af foråret 2003. Simple
Læs mereAt klippe en streng over på det mest hensigtsmæssige sted
Denne guide er oprindeligt udgivet på Eksperten.dk At klippe en streng over på det mest hensigtsmæssige sted Formålet med denne artikel er at kaste lidt lys over, hvordan man klipper en streng over på
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereExceptions i Delphi. Try except
Exceptions i Delphi Exceptions er en teknik til at fange fejl under programafviklingen. Ikke programmeringsfejl, men fejl der opstår i forskellige situationer, f.eks. en fil der mangler en fil der er skrivebeskyttet,
Læs mereAritmetiske Forelæsning Pr ogrammering operatorer tir 1999 sda præcedens september 1999 Logiske Sammenligningsoperatorer operatorer præcedens
Programmering 1999 Forelæsning 3, tirsdag 7. september 1999 Aritmetiske og logiske operatorer, præcedens Den indbyggede klasse String: tegnstrenge Metoder i klasser Metoder: returtype eller void Metoder:
Læs mereOversættere Skriftlig eksamen onsdag d. 25. januar 2006
Københavns Universitet Naturvidenskabelig Embedseksamen Oversættere Skriftlig eksamen onsdag d. 25. januar 2006 Eksamenstiden er to timer. Opgavernes vægt i procent er angivet ved hver opgave. Den skriftlige
Læs mereTirsdag 12. december David Pisinger
Videregående Algoritmik, DIKU 2006/07 Tirsdag 12. december David Pisinger Resume sidste to gang Sprog L : mængden af instanser for et afgørlighedsproblem hvor svaret er 1. P = {L : L genkendes af en algoritme
Læs mereTræer. Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/
Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/11-2004 Træer En meget vigtig datastruktur Repræsentation af sprog (i meget generel betydning), syntakstræer: Java (i en compiler), SQL (i et databasesystem),
Læs mereÅben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser
3/10/96 Seminaret den 26/10 vil omhandle den sidste fase af analysen og de første skridt i kodegenereringen. Det drejer sig om at finde betydningen af programmet, nu hvor leksikalsk og syntaktisk analyse
Læs mereDivide-and-Conquer algoritmer
Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer
Læs mereSøgetræer: Generel repræsentation af (sorterede) mængder og funktioner Databasesystemer...
Datastrukturer & Algoritmer, Datalogi C Forelæsning 11/11-2003 Træer En meget vigtig datastruktur Repræsentation af sprog (i meget generel betydning), syntakstræer: Java (i en compiler), SQL (i et databasesystem),
Læs mereEt kommatal som for eksempel 1,25 kaldes også noget andet. Hvad kaldes det også?
Et tal som både består af et helt tal og en brøk, for eksempel 2 " #. Hvad hedder det? Et kommatal som for eksempel 1,25 kaldes også noget andet. Hvad kaldes det også? Hvad kalder man tallet over brøkstregen
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 10
DM502 Forelæsning 10 Rekursion Fakultet n! Fibonaccitallene 2. projektopgave Opgaven Formalia Indhold Rekursion Rekursion Prøv at definere en liste af tal uden at bruge ordet liste Rekursion Prøv at definere
Læs mereDesignMat Den komplekse eksponentialfunktion og polynomier
DesignMat Den komplekse eksponentialfunktion og polynomier Preben Alsholm Uge 8 Forår 010 1 Den komplekse eksponentialfunktion 1.1 Definitionen Definitionen Den velkendte eksponentialfunktion x e x vil
Læs mereTAL OG BOGSTAVREGNING
TAL OG BOGSTAVREGNING De elementære regnerter I mtemtik kn vi regne med tl, men vi kn også regne med bogstver, som gør det hele en smugle mere bstrkt. Først skl vi se lidt på de fire elementære regnerter,
Læs mere1 Opsumering fra tidligere. 2 Dagsorden 3 BIMS. 4 Programtilstande. Statements/kommandoer (Stm) i bims. 3.1 Abstrakt syntaks for bims
1 Opsumering fra tidligere Hvis A er kontekstfrit, S er der et p > 0 s Alle s A hvor s p kan splittes op som s = uvxyz så argument 1-3 holder A er ikke kontekstfrit, hvis for ethvert bud på p kan findes
Læs mereIt og informationssøgning Forelæsning september 2006 Nils Andersen. Underprogrammer og betingelser. Standardfunktioner, typeomsætning
It og informationssøgning Forelæsning 2 13. september 2006 Nils Andersen Underprogrammer og betingelser Standardfunktioner, typeomsætning Funktionskald Moduler, lange navne Brugerdefinerede funktioner
Læs mereSide 1 af 10. Undervisningsbeskrivelse. Stamoplysninger til brug ved prøver til gymnasiale uddannelser. Termin Maj-juni 2009/10
Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Maj-juni 2009/10 Institution Uddannelse Fag og niveau Lærer(e) Hold Handelsskolen Sjælland Syd, Vordingborg
Læs mereMIPS, registerallokering og MARS
MIPS, registerallokering og MARS Torben Mogensen 2011 Resumé Vi beskriver modulerne Mips.sml og RegAlloc.sml, samt hvordan de bruges sammen med MIPS-emulatoren MARS. 1 MIPS modulet Modulet Mips.sml indeholder
Læs mereMike Vandal Auerbach. Funktioner.
Mike Vandal Auerbach Funktioner y f g x www.mathematicus.dk Funktioner. udgave, 208 Disse noter er skrevet til undervisning i matematik på stx A- og B-niveau. Det indledende kapitel beskriver selve funktionsbegrebet,
Læs mereGrådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for
Læs mereDanmarks Tekniske Universitet
side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer Kursus nr. 02326. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne:
Læs mere3 Algebra. Faglige mål. Variable og brøker. Den distributive lov. Potenser og rødder
3 Algebra Faglige mål Kapitlet Algebra tager udgangspunkt i følgende faglige mål: Variable og brøker: kende enkle algebraiske udtryk med brøker og kunne behandle disse ved at finde fællesnævner. Den distributive
Læs mere