FEN 2013-04-11KbP/seminar 1: Specifikationer/Notationen Q 1 Kontraktbaseret programmering: Seminar 1 Om specifikationer Algoritmenotationen Q.

Slides:



Advertisements
Lignende præsentationer
Funktioner Grundbegreber.
Advertisements

Funktioner Grundbegreber.
1 Problemkompleksitet 2 Problemers kompleksitet En ineffektiv algoritme: køretiden vokser eksponentielt med input- størrelsen Et problem, der ikke kan.
Velkommen til Softwarekonstruktion
SQL underforespørgsler og Join
Udsagn (propositioner)
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Grundlæggende programmering Efterår 2001
Design af brugerflader8.1 Kursusgang 8 Oversigt: Sidste kursusgang Design ­ Design og beskrivelse ­ En simpel notation Eksempel på design af dialogen ­
Validering af data (Access, del 7)
Opslagsfelter (Access, del 6). RHS – Informationsteknologi 2 Udgangspunkt Vi er ofte i den situation, at valg af en type for et felt ikke begrænser vores.
Oprettelse af tabeller (Access, del 2)
FEN Diskret matematik/Seminar 3 - proofs 1 Beviser Et bevis er en argumentation, som overbeviser om, at en påstand er sand, påstanden kaldes.
Søgning & sortering Intro søgning Lineær søgning Binær søgning
1 Bevisteknikker. 2 Bevisteknikker (relevant både ved design og verifikation) Teorem: Der findes uendeligt mange primtal Bevis: Antag at der findes et.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
1 UNION-FIND. 2 inddata: en følge af heltalspar (p, q); betydning: p er “forbundet med” q uddata: intet, hvis p og q er forbundet, ellers (p, q) Eksempel.
Induktion og rekursion
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
FEN Rekursion og induktion1 Induktion og (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler.
Datastrukturer og Collections Rasmus D. Lehrmann DM
FEN KbP/seminar2: LoopsReview1 Kontraktbaseret programmering Seminar 2 Udvikling af løkker: Checklisten for løkker “Hånd-i-hånd” udvikling.
Økonometri 1: Specifikation og dataproblemer1 Økonometri 1 Specifikation, og dataproblemer 7. april 2003.
1 Datalogi C Datastrukturer og algoritmer ved Keld Helsgaun.
FEN Prædikater/Seminar 11 Prædikatslogik eller Kvantificerede udtryk Prædikater udvider propositionslogikken på to måder: –Vi tillader variable.
MMP Model og Metode til Programudvikling – MMP 1 Kursusindhold: Modellering af postkontor Objekt Orienteret Programudvikling - OO* Unified Modelling.
1 Sortering I elementære metoder. 2 Plan Terminologi Elementære metoder til sortering -sortering ved udvælgelse -sortering ved indsættelse -Shellsort.
Intro til C# apps Kodegennemgang af simpel C# app
Opsamling Loops Klassedesign Immutable Lister shallowCopy() Projekt 2 FEN KbP/seminar3: Opsamling.
Rapporter (Access, del 5). RHS – Informationsteknologi – Udgangspunkt Vi har oprettet en database Vi har defineret en eller flere tabeller, og.
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
Fundamentale datastrukturer
1 JavaScript Lektion 6: Repetition i JavaScript Math TIDY Litteratur: JST lektion 10.
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
1 Design, analyse og verifikation. 2 Design Bevisteknikker Design ved hjælp at matematisk induktion Analyse O-notation Logaritmer Binær søgning Verifikation.
Ingeniørhøjskolen i Århus Slide 1 Newton approximation ”Oversæt” til algoritme - Step 5: Skriv kode - Step 4: Skriv pseudokode - Step 3: Specificér pre-
Opslagsfelter (Access, del 6). RHS – Informationsteknologi – Udgangspunkt Vi er ofte i den situation, at valg af en type for et felt ikke begrænser.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Procestræ under afvikling af cp init login shell cp cp src dest.
DIEB4.1 Kursusgang 4 Oversigt: Sidste kursusgang Opgaver Aktivitet 2: Generer design (fortsat) Design af interaktionselementer.
FEN KbP/seminar1: ProgUdsagn1 Kontraktbaseret programmering Seminar 1 Programudsagn og programbeviser.
FEN KbP/seminar2: design21 Kontraktbaseret programmering Seminar 2 Klassedesign: Immutable lister Queue Shallowcopy og alkvantoren.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Økonometri 1: Specifikation og dataproblemer1 Økonometri 1 Specifikation og dataproblemer 2. november 2004.
Oprettelse af tabeller (Access, del 2)
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
PD – kursusgang 3 Introduktion til Java Script. Mål Viden om hvordan JavaScripts indlejres i HTML dokumenter Viden om programmering i JavaScript  Erklæring.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Intro Siden sidst: evaluering på opgaver og virtuel kursus Kursussammensætning: forelæsning – læse – arbejde selvstændigt – newsgroup – øvelsestime – aflevering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
Statistik II 4. Lektion Logistisk regression.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Michael E. Caspersen, 2000 Introducerende objektorienteret programmering4A.1 Sweep-algoritmer Programmering med invarianter og uden kaniner.
Forelæsning Uge 2 – Mandag
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Quiz Uge 2 – mandag.
ROBOTTERNE KOMMER - OZOBOTTERNE.
Forelæsning Uge 4 – Torsdag
Algoritmer og Datastrukturer 1
Præsentationens transcript:

FEN KbP/seminar 1: Specifikationer/Notationen Q 1 Kontraktbaseret programmering: Seminar 1 Om specifikationer Algoritmenotationen Q

FEN KbP/seminar 1: Specifikationer/Notationen Q 2 Specifikationer Følgende er et eksempel på en specifikation, der udtrykker, at s skal være summen af tallene i tabellen b[0..N): s : [N  0, s = (+ i | 0  i < N : b[i])] Husk: ”(+i…” er det samme som (  i | 0  i  N : b[i]) En specifikation består af fire komponenter: –Omgivelsen er tabellen b[0..N) og variablen s –Rammen er s (de/den variable, som specifikationen drejer sig om) –pre-betingelsen er N  0 –post-betingelsen er s = (  i | 1  i  N : b[i]) Array-segment: 0 incl., N excl.

FEN KbP/seminar 1: Specifikationer/Notationen Q 3 Flere eksempler x : [true, x = y 2 ] Sæt x til kvadratet på y. y : [x  0, y 2 = x] Sæt y til en kvadratrod af x under forudsætningen, at x ikke er negativ. e : [S  {}, e  S] Sæt e til en værdi fra mængden S under forudsætningen, at S ikke er tom. x : [b 2  4  a  c, a  x 2 +b  x+c = 0] Sæt x til en rod for andengradspolynomiet under forudsætningen, at diskriminanten ikke er negativ.

FEN KbP/seminar 1: Specifikationer/Notationen Q 4 Generelt Generelt har en specifikation formen w : [pre, post] hvor w er rammen, pre er startbetingelsen og post er slutbetingelsen. I rammen må kun refereres variabler, der er beskrevet i omgivelserne. Betydningen af en sådan specifikation er: Hvis starttilstanden tilfredsstiller pre, ændres kun variabler i rammen w, så sluttilstanden tilfredsstiller post.

FEN KbP/seminar 1: Specifikationer/Notationen Q 5 Endnu flere eksempler... ”Find en heltalsapproksimation til kvadratroden af heltallet n.” –Resultatet skal gemmes i en variabel; vi vælger r –Vi har hermed omgivelsen |[ n, r: int; ]| –n ikke må være negativ. Startbetingelsen er derfor n  0. Til sidst skal vi have præciseret, hvad vi mener med “en heltalsapproksimation til kvadratroden af n”. Hermed mener vi det største heltal, der højst er  n, det vil sige det største heltal r, så r 2  n. En mulig specifikation er således r : [n  0, r  0  r 2  n < (r+1) 2 ]

FEN KbP/seminar 1: Specifikationer/Notationen Q 6 Søgning En uformel specifikation kunne være “find x i b[0..N)”. En mere præcis specifikation må fastlægge forudsætninger om N og b: –Kan tabellen være tom? –Findes x? Hvis ikke, hvordan skal vi så beskrive, at x ikke findes? Her er fire mulige specifikationer, som på hver sin måde besvarer disse spørgsmål. I de tre første tilfælde er omgivelsen |[ N: int ; b: array [0..N) of int ; x: int ; p: int ; ]| i det sidste tilfælde er omgivelsen udvidet med variablen found: bool.

FEN KbP/seminar 1: Specifikationer/Notationen Q 7 p : [x  b[0..N), 0  p < N  x = b[p]] Denne specifikation forudsætter, at x findes i b og dikterer, at et indeks for en forekomst af x gemmes i p. p : [N  0, 0  p < N  x = b[p]  p = N  x  b[0..N)] Her forudsættes ikke, at x findes, men det dikteres, at p sættes til N, hvis x ikke forekommer. p : [N  0, 0  p < N  x  b[0..p)  x = b[p]  p = N  x  b[0..N)] Denne er næsten magen til den forrige, men som noget ekstra dikterer den, at p skal være indeks for første forekomst af x i b (hvis x er der). p, found : [N  0, (found  x  b[0..N))  (found  0  p < N  x = b[p])] Her benyttes en ekstra variabel found til at indikere, om x forekommer i b, og dikterer kun en slutværdi for p, hvis x forekommer. Hvad hvis x ikke er der?

FEN KbP/seminar 1: Specifikationer/Notationen Q 8 Lidt (mere) notation I specifikationer har man behov for at relatere start- og slutværdier af variabler. Skal vi for eksempel lave en specifikation for en algoritme, der skal tælle en variabel x én op, kunne vi forsøge os med x : [true, x = x +1]. Men denne specifikation er umulig at tilfredsstille: der findes ingen sluttilstand, hvori x = x +1. Vi ønsker at udtrykke, at slutværdien af x skal være én større end startværdien. Vi har derfor behov for at kunne skelne mellem start- og slutværdien af en variabel.

FEN KbP/seminar 1: Specifikationer/Notationen Q 9 x : [true, x = x 0 + 1] x : [true, x´ = x + 1] x : [x = X, x = X + 1]. x 0 er startværdien af x x’ er slutværdien af x X er startværdien af x

FEN KbP/seminar 1: Specifikationer/Notationen Q 10 Øvelser Formulér følgende specifikationer med dine egne ord: 1.x : [true, x =  x´] 2.r : [N  0, r  (  i | 0  i < N : b[i]  0)] 3.r : [N  0, r  (  i | 0 < i < N : b[i  1]  b[i])] 4.p : [(  i | 0  i 0), p = (  i | 0  i 0 : i)] Formalisér følgende uformelle specifikationer: 1.Alle værdier i b har fået skiftet fortegn. 2.Beregn summen af elementerne i b[j..k). 3.Find den største værdi i b[j..k). 4.Find indeks for en største værdi i b[j..k). Minimum

FEN KbP/seminar 1: Specifikationer/Notationen Q 11 Q, en algoritmenotation Kommandoer: –skip –fail –parallel tildeling –kontrolstrukturer: sekvensiering, selektion og iteration procedure- og funktionsbegreb

FEN KbP/seminar 1: Specifikationer/Notationen Q 12 skip og fail Skip Udførelse af skip-kommandoen skip gør ingenting (og - må man formode - gør det hurtigt)! Fail Udførelse af fail-kommandoen er uforudsigelig, (vi anvender den ikke, men den kan bruges til at beskrive fejlbehæftet kode).

FEN KbP/seminar 1: Specifikationer/Notationen Q 13 Parallel tildeling Kommandoen til parallel tildeling har formen x 1, x 2,..., x n := e 1, e 2,..., e n hvor x i er variabler, og e i er udtryk, 1  i  n. –Typen af x i og e i skal parvis være ens. –Kommandoen kan kun udføres i en tilstand, hvor alle e i er veldefinerede, og i dette tilfælde består udførelsen i først at evaluere e i -erne (i vilkårlig rækkefølge) og dernæst tildele resultaterne til de tilsvarende x i (igen i vilkårlig rækkefølge). Nondeterminisme Sideeffekt-fri

FEN KbP/seminar 1: Specifikationer/Notationen Q 14 Sekvens Sekventiel sammensætning er én måde at konstruere større algoritmer ud fra mindre. Lad S 1 og S 2 være to kommandoer. Da er S 1 ; S 2 en kommando, og betydningen af den er, at først udføres S 1 og derefter S 2.

FEN KbP/seminar 1: Specifikationer/Notationen Q 15 Selektion (Dijkstra’s Guarded Command) if x  0  z:= x x  0  z:=  x fi eller if x  0  z:= x x  0  z:=  x fi Hvad hvis x = 0? Nondeterminisme

FEN KbP/seminar 1: Specifikationer/Notationen Q 16 Den generelle form af if-kommandoen er if B 0  S 0 B 1  S 1... B n  1  S n  1 fi Hver B i  S i, 0  i < n, er en bevogtet kommando. S i kan være vilkårlige kommandoer alle vagter være veldefinerede i den aktuelle tilstand. mindst én vagt skal være sand hvis mere end én vagt er sand, vælges tilfældigt en bevogtet kommando med sand vagt, og den tilhørende kommando udføres Nondeterminisme

FEN KbP/seminar 1: Specifikationer/Notationen Q 17 Om guarded command et vilkårligt antal alternativer: –både if og switch/case –nondeterminisme. Hvis mere end én vagt er sand, er der frit slag for en implementation til at vælge en vilkårlig af disse, men kun én. Det kan være et fuldstændig tilfældigt valg, det kan altid være den første eller implementationen kan forsøge at vælge den med den korteste udførelsestid. Pointen er, at eftersom ethvert af disse valg giver et korrekt resultat, så behøver programmøren ikke bekymre sig om, hvilket der skal udføres. Af hensyn til effektiviteten kan nogle vagter strammes, så nondeterminismen elimineres.

FEN KbP/seminar 1: Specifikationer/Notationen Q 18 Iteration do B 0  S 0 B 1  S 1... B n  1  S n  1 od Semantikken af do-kommandoen er som følger: –Gentag følgende sålænge det er muligt: Vælg en bevogtet kommando med sand vagt og udfør den tilhørende kommando. Løkken standser når (hvis) alle vagter er falske. –Bemærk, at nondeterminisme er tilladt. Den simple: do B  S od svarer til while-sætningen i fx Java: while(B) { S;S; } Nondeterminisme

FEN KbP/seminar 1: Specifikationer/Notationen Q 19 Procedurer og funktioner proc identifier (parameter specifications) body hvor identifier er navnet på proceduren, parameter specifications er en beskrivelse af slags, navn og type af procedurens parametre og body er procedurens handlingsdel. func identifier (parameter specifications)  r: resulttype body parameteroverførselsmekanismer –in, inout, out samt ref

FEN KbP/seminar 1: Specifikationer/Notationen Q 20 Eksempler max:|[m, n, r: int ; r : [true, r = m  n] ; if m  n  r:= m m  n  r:= n fi ]| Omgivelser Specifikation Algoritme Navngivning

FEN KbP/seminar 1: Specifikationer/Notationen Q 21 Summering af array sum:|[b: array [0..N) of int ; s: int ; s : [true, s = (+ i | 0  i < N : b[i])] ; |[n: int ; n, s:= 0, 0 ; do n  N  n, s:= n + 1, s + b[n] od ]| Bemærk: n er ikke en del af omgivelserne, men en del af løsningen. n er erklæret i en lokal blok |[...]|, der afgrænser variablens virkefelt. Hvad hvis b er tomt?

FEN KbP/seminar 1: Specifikationer/Notationen Q 22 Fibonacci-tal fibonacci: |[ n, r: int ; r : [n  0, r = ‘det n’te Fibonacci-tal’] ; r:= fib(n) where fib is func fib (n: int)  r: int if n = 0  r:= 0 n = 1  r:= 1 n > 1  r:= fib(n  1) + fib(n  2) fi ]| Rekursion

FEN KbP/seminar 1: Specifikationer/Notationen Q 23 Øvelser Skriv algoritmer i Q, som tilfredsstiller specifikationerne: 1.r : [N  0, r  (  i | 0  i < N : b[i]  0)] 2.p : [(  i | 0  i 0), p = (  i | 0  i 0 : i)] 3.Brug din specifikation af: Find den største værdi i b[j..k).