Begreber og Redskaber 1 BRP.

Slides:



Advertisements
Lignende præsentationer
Fra formel til funktionel undervisning
Advertisements

Velkommen til Softwarekonstruktion
Begreber og Redskaber 6. Afprøvning Formål: •Ekstern afprøvning (Funktionstest). •Hvordan dokumenterer man afprøvning i en rapport. •Hvordan konstuerer.
Hvordan bruger jeg First Class konferencerne ?
Perspektiverende Datalogi Internetalgoritmer MapReduce Gerth Stølting Brodal.
Begreber og Redskaber 1 BRP.
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
NetBeans Installation og brug.
Selve objektet versus referencen til objektet Nedarvning
09 – Arv og polymorfi i java
Hvordan man skriver koden.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Sproghistorie Syntaks (struktur) Semantik (Indhold)
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Endelige Automater Simple sprog (regulære sprog) kan beskrives vha. Regulære udtryk. Regulære sprog kan altid parses vha endelige automater. Nondeterministik.
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
Begreber og Redskaber 2. Plan for idag Noget om bestanddelene i et programmeringssprog Syntaksbeskrivelse af java Næste gang: –Binære tal –Repræsentation.
Intro til C# apps Kodegennemgang af simpel C# app
VPG/Otto Knudsen1 VPR - Repetition Trådning Distribueret Programmering Sprogteori Grafer.
FEN Sprog1 Lidt om sprog Definition: Et sprog over et endeligt alfabet  (sigma) er en mængde af strenge dannet af tegn fra . Eksempel: Lad.
Begreber og Redskaber 1. Emner i kurset Om sprog og sprogbeskrivelse Repræsentation af tal i maskinen –Heltal, negative tal, kommatal, logiske værdier.
Sprog og grammatik Et sprog L(G) er mængden af sætninger afledt af grammatikken G. Grammatik er en 4-tupel: G={N, ,P,S}. Hvor: N er et sæt af non-terminale.
Sproghistorie Syntaks (struktur) Semantik (Indhold)
Fundamentale datastrukturer
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
GP 5, 26/ Grundlæggende programmering Efterår 2001 Forelæsning 5 onsdag 26/ kl. 9:15 – 12:00.
Begreber og Redskaber 1. Rettelse til sidst Sidst vrøvlede jeg lidt om algoritmer: Ordet stammer fra Abu Ja’far Mohammed ibn Musa al- Khowarizm der i.
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
Begreber og Redskaber 1. Programmeringssprog Sprog = mængde af sætninger ?
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Begreber og Redskaber 1. Plan for kurset Formål –Give et begrebsmæssigt grundlag for programudvikling, samt overblik over udvalg af redskaber og metoder.
JavaCC Top-down (Recursive descent). Mest populære mht Java. Regulær grammatik og Context-free grammatik i en fil. Tillader EBNF: (..)*, (..)+ og (..)?
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Identitet vs lighed. Spørgsmål Hvad udskriver run metoden? 1.”Ens!” 2.”Forskellige!” 3.Ved ikke public class Driver{ public static void run(){ String.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
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.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
DAIMIIntroducerende objektorienteret programmeringkd.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,
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Fromelle sprog Per P. Madsen Afd. for proceskontrol.
Sproghistorie Syntaks (struktur) Semantik (Indhold)
Klasser og objekter (Afsnit i manualen).
Præsentationens transcript:

Begreber og Redskaber 1 BRP

Syntaksbeskrivelse Oversigt Formelle og naturlige sprog Syntaks, semantik, pragmatik Jernbanediagram og EBNF Genkendelse af sprog Videre perspektiv – historie, teori, resultater

Formål Kunne læse syntaksbeskrivelse af Java Nyttigt redskab i en værktøjskasse Forstå hvad en syntaksbeskrivelse er Se om tekster er syntaktisk korrekt Skrive syntaks ud fra eksempler Omskrive EBNF til jernbanediagram Give et videre perpektiv Historie Videnskab mellem lingvistik og matematik

Sprog Formelt vs. Naturligt sprog Programmering sker i formelle sprog Maskinel analyse af naturlige sprog er kompliceret aktivt forskningsfelt Eksempler på formelle sprog Telefonnumre Email adresser HTML dokumenter Java programmer

Syntaks, semantik,.. Syntaks Semantik Pragmatik Hvilke sætninger må man skrive og hvordan hænger ordene sammen i sætninger Semantik Hvad betyder sætningerne i sproget Pragmatik Hvordan bruger man sproget i praksis Idiomer (talemåder, fast vendinger)

Begreber I Formelle sprog siger vi at Et sprog er mængden af syntaktisk korrekte tekster i sproget Et sprogs syntaks kan beskrives med en grammatik Jernbanediagrammer og EBNF er eksempler på måder at angive grammatikker på Tekster i det formelle sprog Java er altså de syntaktisk korrekte programmer

Jernbanediagrammer og EBNF Email adresser Om EBNF navn ”@” { navn ”.” } navn ”.” navn navn @ navn . navn

Notation Terminaler: Det der skal stå direkte i tekster (f.eks. Dele af Javaprogram ) I Jernbanediagram: I EBNF f.ex. class Nonterminaler: dele af tekster som forklares andetsteds i grammatikken I Jernbanediagram I EBNF Expression class Expression

Mer notation EBNF udtryk bruger: EBNF regler har ofte formen [ .. ] mulighed 0-1 { .. } gentagelse 0-flere (.. | .. ) valgmulighed EBNF regler har ofte formen Nonterminal: udtryk1 udtryk2 Det skal læses som: (udtryk1 | udtryk2)

Fra EBNF til jernbanediagram (Den anden vej er ikke helt så triviel) udtryk1 udtryk2 (sammensætning) {udtryk} (gentagelse 0-flere) [udtryk] (mulighed 0-1) (udtryk1 | udtryk2) (valg) udtryk1 udtryk2 udtryk udtryk udtryk1 udtryk2

Et Java Program public class A { public static void main(String[ ] args) System.out.println(”Hello”); }

Compilation Unit (Baseret på L&L – men som EBNF) Compilation Unit: [PackDecl] {ImportDecl} {TypeDeclaration} Vi vælger TypeDeclaration TypeDeclaration: ClassDeclaration InterfaceDeclaration Vi vælger ClassDeclaration

Class Declaration ClassDeclaration: {Modifier} class id ClassAss ClassBody Vi vælger en Modifier: public Vi vælger: public class A ClassBody ClassBody: ”{” {ClassMember} ”}” Vi tager en enkelt: { ClassMember }

Et Java Program public class A { public static void main(String[ ] args) System.out.println(”Hello”); }

ClassMember ClassMember FieldDeclaration ConstructorDeclaration MethodDeclaration ClassDeclaration InterfaceDeclaration static Block Vi vælger MethodDeclaration

MethodDeclaration MethodDeclaration: {Modifier} (Type|void) id par thrw MethBody Modifier: public | private | protected | static | final | abstract | native | synchronized | transient | volatile Vi vælger: public static Vi vælger: void (ikke Type) og id: main

Et Java Program public class A { public static void main(String[ ] args) System.out.println(”Hello”); }

Parameters Par ”(” [ Type id { ”,” Type id } ] ”)” Vi vælger en enkelt med id: args Type: (PrimType | Name) { ”[” ”]” } Vi vælger: String[ ] Og får: (String[ ] args)

MethodBody MethBody: Block ”;” Block: ”{” {BlockStatement} ”}” LocalVariableDeclaration ”;” Statement ClassDeclaration

Et Java Program public class A { public static void main(String[ ] args) System.out.println(”Hello”); }

Statement Statement: Block | ExpressionStatement | BasicAssignment | IfStatement | SwitchStatement | WhileStatement | DoStatement | ForStatement | ReturnStatement | ThrowStatement | TryStatement | SynchronizedStatement | EmptyStatement | BreakStatement | ContinueStatement | LabeledStatement

ExpressionStatement ExpressionStatement: Expression ”;” (Lige her er der et par små trykfejl i de to grammatikker: JLS har glemt ExpressionStatement, og L&L får begrænset Expression for meget)

Expression Expression: PrimaryExpression | Assignment | EqualityExpression | RelationalExpression | LogicalExpression | BitwiseExpression | ConditionalExpression | InstanceExpression | CastExpression | UnaryExpression Vi vælger PrimaryExpression

PrimaryExpression Primary: Primary1 { PrimSuffix } Primary1: Literal Name this super ”.” id ”(” Expression ”)” Allocation

Primary Name: Id { ”.” Id } PrimSuffix: ”.” Id ”.” this ”.” class ”.” Allocation ”[” Expression ”]” Arguments

Arguments Arguments: ”(” [ Expression { ”,” Expression } ] ”)” Literal: IntegerLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | BooleanLiteral | null StringLiteral: ””” { Character } ”””

Primary fortsat En mulighed for PrimaryExpression er derfor: Id {”.” Id} (Expression {”,” Expression}) Vi vælger System.out.println(”Hello”)

Et Java Program public class A { public static void main(String[ ] args) System.out.println(”Hello”); }

Afledning: Syntakstræ Compilation Unit: [PackDecl] {ImportDecl} {TypeDeclaration} ClassDeclaration class A { ClassBody }

EBNF Extended Backus Naur Form 1963: Brugt i Algol rapport (Peter Naur ed.) John Backus medforfatter. (De brugte en simplere version uden ”{” og ”}”) Variant af Kontekst-fri grammatikker (Chomsky 1956) Variant brugt af Panini, indisk grammatiker ca. 300 BC, til beskrivelse af Sanskrit

Regulære udtryk Regulære udtryk er en variant af EBNF hvor man kun har et udtryk og ikke mulighed for ekstra regler Kendes fra søgninger i mange tekstbehandlingssystemer Bruger ofte lidt andre symboler: ( .. )* betyder gentag 0-flere gange ( .. )+ betyder gantag 1-flere gange ( .. )? betyder mulighed 0-1

Chomsky hierarkiet Type 0 sprog: Uindskrænkede sprog (sprog med en formel syntaks) Type 1 sprog: Kontekst-følsomme sprog (hvad der må stå hvor i tekster afhænger af kontekst) Type 2 sprog: Kontekst-frit sprog (sprog der kan beskrives med EBNF eller tilsv.) Type 3 sprog: Regulære sprog (sprog der kan beskrives ved en enkelt regel i EBNF eller tilsv. Dvs. regulære udtryk)

Chomsky Noam Chomsky: lingvist og samfundsdebatør (f. 1928) Chomsky hierarkiet er fra 1956 og primært tænkt til beskrivelse af naturlige sprog (vha transformationsgrammatikker..)

Et par resultater Sproget: ”ab”,”aabb”,”aaabbb”,... er kontekstfrit men ikke regulært. Sproget: ”abc”,”aabbcc”,”aaabbbccc”,.. er ikke kontekstfrit men kontekstafhængigt. Sprog1: ab a Sprog1 b

Et par resultater Der findes ingen generelle teknikker til at undersøge om to EBNF’er beskriver samme sprog (Det kan bevises at en sådan teknik heller ikke kan findes!) En sådan teknik findes for regulære udtryk.

Hvad kan det bruges til? Regulære udtryk → søgninger i store datamængder Genkendelse kan klares af endelige automater (uden hukommelse) Kontekst fri sprog → oversættere Genkendelse kræver hukommelse Særligt effektive genkendere findes for klasser af kontekst-fri grammatikker (LL(1), LALR(1),..) De kan konstrueres automatisk ud fra grammatikken (YACC, Bison, Antlr)

Afrunding EBNF og Jernbanediagrammer er redskaber til at beskrive tekster i formelle sprog Undersøge om en given tekst hører til sproget: Genkendelse, afledning Afklare hvad der er korrekt Java