Begreber og Redskaber 2. Plan for idag Noget om bestanddelene i et programmeringssprog Syntaksbeskrivelse af java Næste gang: –Binære tal –Repræsentation.

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

Begreber og Redskaber 1 BRP.
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Selve objektet versus referencen til objektet Nedarvning
Grundlæggende programmering Efterår 2001
09 – Arv og polymorfi i java
Hvordan man skriver koden.
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.
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.
Begreber og Redskaber 2 BRP.
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
Forelæsning 3.1 Collections Javas for-each løkke
Begreber og Redskaber 3 BRP.
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.
Fundamentale datastrukturer
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
GP 5, 26/ Grundlæggende programmering Efterår 2001 Forelæsning 5 onsdag 26/ kl. 9:15 – 12:00.
Klasser.
GP 6, 13/ Grundlæggende programmering Forår 2002 Forelæsning 6 onsdag 13/ kl. 9:15 – 12:00.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
GP 3, 12/ Grundlæggende programmering Efterår 2001 Forelæsning 3 onsdag 12/ kl. 9:15 – 12:00.
Procestræ under afvikling af cp init login shell cp cp src dest.
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Paradigmer i Programmering 1. Program for idag : Funktioner og udtryk i SML : Øvelse : Frokost – 14.00: Deklarative.
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 ?
Begreber og Redskaber 1 BRP.
11 - Exceptions. 2 NOEA2009Java-kursus – Exceptions Hvad er en exception? En undtagelse. Typisk en fejl der opstår runtime Afbryder det normale programflow.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Paradigmer i Programmering 1. Plan for kurset 4 x Mads R, 4 x Torben B, 2 x opgave MR: Funktionsprogrammering, SML TB: Logikprogrammering, Prolog Opgave:
1 Implementering af fundamentale datastrukturer. 2 Stakke og køer Array-repræsentation Liste-repræsentation Hægtede lister Træer Terminologi Traversering.
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
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 (..)?
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.
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.
GP4, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 4 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
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.
GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
Forelæsning 7.1 – repetition
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
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.
 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,
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
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;
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
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;
Forelæsning Uge 4 – Mandag
Klasser og objekter (Afsnit i manualen).
Præsentationens transcript:

Begreber og Redskaber 2

Plan for idag Noget om bestanddelene i et programmeringssprog Syntaksbeskrivelse af java Næste gang: –Binære tal –Repræsentation af tal I maskinen –Regne med tal og logiske værdier

Computer CPU Registre RAM Cache Tastatur Skærm Mus Harddisk CD-ROM Ydre enheder

von Neumann model CPU Registre Program Data

Et java program public class HelloWorld{ public static void main(String[] args){ // Hovedprogram! System.out.println(”Hej”); }

Bestanddele af program Variable og typer Regneudtryk Sætninger Underprogrammer Klasser Biblioteker

Typer Heltal ( int,..), Kommatal ( float, double ) 1.0 1E10 Logiske værdier ( boolean ) true false Tegn ( char ) ’c’ ’\n’ Tekststrenge ( String ) ”hello” Og så er der også klasser og objekter...

Variable Variable og typer –Variabel erklæring –int i; –Variabel initialisering –int i = 1; –Variabel tildeling –i = 1; –Variabel inkrementering –i++;

Udtryk Sammenligning ( ==,>=,,!= ) Aritmetik ( +,-,*,/,% ) Tildeling ( =,+=,++ ) Betinget udtryk ( ? : ) Eksempel int i = 3+4; boolean b = (i++ == 7);

Tekststrenge ”dette er en tekststreng” Sammenhæftning af strenge med + Næsten alt kan konverteres til tekststrenge, f.eks. når det står efter + Eksempel int i = 7; String s; s = ”i = ” + i;

Udskrivning System.out.println( udtryk ); System.out.println(); System.out.print( udtryk ); Udtryk er streng, tal, tegn, logisk værdi,.. Eksempel System.out.println(”Hello”);

Indlæsning med swing import javax.swing.*; public class brp2{ public static void main(String[] args){ String x=JOptionPane.showInputDialog( "giv mig et tal"); int tal1=Integer.parseInt(x); String y=JOptionPane.showInputDialog( "giv mig et andet tal"); int tal2=Integer.parseInt(y); JOptionPane.showMessageDialog(null, "summen er "+(tal1+tal2)); System.exit(0); }

Indlæsning fra dos-vindue? Nå ja – men det er ikke helt let! Eksempel try{ DataInputStream in = new DataInputStream(System.in); String s = in.readLine(); System.out.println("Read : "+s); }catch(java.io.IOException e){}

Sætninger If: if( exp ) stmt else stmt While: while( exp ) stmt Do: do stmt while( exp ) For: for( exp;exp;exp ) stmt Switch: switch( exp ){ case exp: stmt..} Andet: break,continue,return,try

Hvad mer?? Klasser, nedarvning og beskyttelse Overlæsning, overskrivning, polymorfi Interface, abstrakte klasser Tabeller Undtagelser, parallelitet Et hav af standard klasser

Leksikalske regler Leksikalsk analyse: bryd tekst op i ord Regel: Der brydes ved længste lovlige sekvens Blanktegn stort set ligegyldige Der må være blanktegn men ikke linieskift i tekststrenge x+++++x el. x+++++x intx; intintx;

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

Java Language Specification Findes på nettet – indeholder detaljeret beskrivelse af alle konstruktioner i java, syntaks, semantik og pragmatik Her følger et udkog med ca 2/3 af Java – de dele I får brug for… Kun syntaks og I EBNF format Der tages forbehold for fejl og mangler..

Navne og tal Identifier : Bogstav { Ciffer | Bogstav | ”_” } VarName : Identifier TypeName : Name ClassName : Name Number : Ciffer { Ciffer } [”l” | ”L”] Char : ”’” Tegn ”’” String: ””” {Tegn } ””” Tegn: ”\r” | ”\n” | ”\b” | ”\f” | ”\t” | ”\”” | ”\’” | ”\\” | ….

Simple udtryk Primary: ”(” Expression ”)” ”this” [ Arguments ] ”super” [ Arguments ] ”new” Identifier ”[” Expression ”]” { ”[” Expression ”]” } ”new” Identifier Arguments Identifier { ”.” Identifier } [ Arguments ] Number String Char Arguments: ”(” [ Expression { ”,” Expression } ] ”)”

Udtryk Expression: Expression1 [AssignmentOperator Expression1] AssignmentOperator: ”=” | ”+=” | ”-=” | ”*=” | ”/=” | ”&=” | ”|=” | ”^=” | ”%=” | ” >=” | ”>>>=” Expression1: Expression2 [ ”?” Expression ”:” Expression1 ] Expression2 : Expression3 { Infixop Expression3 } Expression3 ”instanceof” Type Infixop: ”||” | ”&&” | ”|” | ”^” | ”&” | ”==” | ”!=” | ” ” | ” =” | ” >” | ”>>>” | ”+” | ”-” | ”*” | ”/” | ”%” Expression3: PrefixOp Expression3 ”(“ Type “)” Expression3 Primary {Selector } {PostfixOp } Selector: ”.” Identifier | ”[” Expression ”]” PrefixOp: ”++” | ”--” | ”!” | ”~” | ”+” | ”-” PostfixOp: ”++” | ”--”

Typer, mm. Type: Identifier { “.” Identifier } BracketsOpt BasicType BasicType: ”byte” | ”short” | ”char” | ”int” | ”long” | ”float” | ”double” | ”boolean” Catches: CatchClause { CatchClause } CatchClause: ”catch” ”(” FormalParameter ”)” Block ForInit: Expression { ”,” Expression } [”final”] Type VariableDeclarator { ”,” VariableDeclarator } ForUpdate: Expression { ”,” Expression } SwitchBlockStatementGroups: { SwitchLabel {Statement } } SwitchLabel: ”case” Expression ”:” | ”default” ”:”

Sætninger Statement: Block ”if” ”(”Expression ”)” Statement [“else” Statement ] ”for” ”(” ForInit ”;” [Expression] ”;” ForUpdate ”)” Statement ”while” ”(”Expression ”)” Statement ”do” Statement ”while” ”(”Expression ”)” ”;” ”try” Block ( Catches | [Catches ] ”finally” Block ) ”switch” ”(”Expression ”)”{ SwitchBlockStatementGroups } ”synchronized” ”(”Expression ”)” Block ”return” [Expression ] ”;” ”throw” Expression ”;” ”break” [Identifier ] ”;” ”continue” [Identifier ] ”;” Expression ”;” Identifier ”:” Statement

Metoder består af sætninger Block: ”{” { BlockStatement } ”}” BlockStatement : [ ”final” ] Type VariableDeclarator { ”,” VariableDeclarator } ”;” [Identifier ”:”] Statement VariableDeclarator: Identifier BracketsOpt [ ”=” VariableInitializer ] BracketsOpt: { ”[” ”]” } FormalParameters: ”(” [ FormalParameter { ”,” FormalParameter } ] ”)” FormalParameter: Type Identifier BracketsOpt

En klasse består af metoder ClassBody: ”{” { ClassBodyDeclaration } ”}” ClassBodyDeclaration: ”;” [ ”static” ] Block {Modifier } MemberDecl MemberDecl: [ ”void” | Type ] Identifier FormalParameters BracketsOpt [ ”throws” IdentifierList ] ( Block | ”;” ) Type Identifier BracketsOpt [ ”=” VariableInitializer ] VariableInitializer: ”{” [VariableInitializer { ”,” VariableInitializer } [”,”] ] ”}” Expression

Et program består af klasser CompilationUnit: [ ”package” QualifiedIdentifier ”;” ] {ImportDeclaration } {ClassDeclaration } ImportDeclaration: ”import” Identifier { ”.” Identifier } [ ”.*” ] ”;” ClassDeclaration: {Modifier } ”class” Identifier [ ”extends” Type ] [ ”implements” TypeList ] ClassBody Modifier: ”public” | ”protected” | ”private” | ”static” | ”abstract” | ”final” | ”native” | ”synchronized” | ”transient” | ”volatile” | ”strictfp”

Syntakstræer ”CompilationUnit” er roden i træet Bladene i træet er ”terminalerne” Der sidder ”nonterminaler” i alle forgreninger Når det tegnes vokser det nedad med roden øverst Samler man bladene ved gennemløb af træet fra venstre til højre får man programteksten

Syntakstræer Expression: x x expression expression1 expression2 expression3 infixop ”+””+” expression3primaryprefixoppostfixop ”++”identifierprimary”++” identifier ”x””x” ”x””x”

Syntakstræer Expression: x+ y + z expression expression1 expression2 expression3 infixop ”+””+” primary identifier primary identifier ”x””x” ”z””z” infixopexpression3 ”+””+” identifier ”y””y” primary