Begreber og Redskaber 1. Emner i kurset Om sprog og sprogbeskrivelse Repræsentation af tal i maskinen –Heltal, negative tal, kommatal, logiske værdier.

Slides:



Advertisements
Lignende præsentationer
1 Problemkompleksitet 2 Problemers kompleksitet En ineffektiv algoritme: køretiden vokser eksponentielt med input- størrelsen Et problem, der ikke kan.
Advertisements

Begreber og Redskaber 6. Afprøvning Formål: •Ekstern afprøvning (Funktionstest). •Hvordan dokumenterer man afprøvning i en rapport. •Hvordan konstuerer.
Begreber og Redskaber 1 BRP.
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
Symbolsk maskinsprog.
NetBeans Installation og brug.
Første generation (maskiner/operativsystemer) 45-55: radiorør Kun maskinsprog programmering = skrivning af nullerog ettaller Intet operativsystem programmør.
GP10, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 10 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
Intro Variabler - datatyper. 2. forelæsning Hvad skete sidste gang Hvad er PHP? Kursussammensætning: læse – newsgroup – forelæsning – øvelsestime – aflevering.
Sproghistorie Syntaks (struktur) Semantik (Indhold)
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable 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.
1 Projektforslag på modul 2 ved Keld Helsgaun. 2 Fagligt indhold Projekt- og kursusarbejdet skal give de studerende indsigt i følgende emnekredse: Gå.
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.
GP 10, 7/ Grundlæggende programmering Efterår 2001 Forelæsning 10 onsdag 7/ kl. 9:15 – 12:00.
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.
Pc-kørekort Mere om software. Programmering Definition: at skrive et program ved hjælp af en tekst–editor på en måde, som computeren kan forstå Instruktionerne.
Operationer på relationer
Endelige Automater Simple sprog (regulære sprog) kan beskrives vha. Regulære udtryk. Regulære sprog kan altid parses vha endelige automater. Nondeterministik.
1 Datalogi C Datastrukturer og algoritmer ved Keld Helsgaun.
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
1 Sortering I elementære metoder. 2 Plan Terminologi Elementære metoder til sortering -sortering ved udvælgelse -sortering ved indsættelse -Shellsort.
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.
1 Algoritmik ved Keld Helsgaun. 2 Plan Algoritmebegrebet et simpelt eksempel Et eksempel på algoritmedesign.
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.
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.
W1b1 PC baseret analyse og simulering. w1b2 Definition Digital Elektronisk beregningsmaskine, der har intern hukommelse til lagring af program og mellem-regninger.
Sproghistorie Syntaks (struktur) Semantik (Indhold)
1 Design, analyse og verifikation. 2 Algoritmebegrebet Design Bevisteknikker Design ved hjælp at matematisk induktion Analyse O-notation Logaritmer Binær.
Fundamentale datastrukturer
1. Database-systemer, introduktion
Per P. Madsen- Proces1 Algoritmer og datastrukturer Grundprincipper og analyse af algoritmer. MM1 Lister, stakke og køer. MM2 Træer, og Hash-tabeller.
FEN KbP/seminar 1: Specifikationer/Notationen Q 1 Kontraktbaseret programmering: Seminar 1 Om specifikationer Algoritmenotationen Q.
1 Design, analyse og verifikation. 2 Design Bevisteknikker Design ved hjælp at matematisk induktion Analyse O-notation Logaritmer Binær søgning Verifikation.
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.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
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.
Begreber og Redskaber 1. Programmeringssprog Sprog = mængde af sætninger ?
Begreber og Redskaber 1 BRP.
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:
Begreber og Redskaber 1. Plan for kurset Formål –Give et begrebsmæssigt grundlag for programudvikling, samt overblik over udvalg af redskaber og metoder.
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.
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.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
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.
REGULARITET & AUTOMATER Indhold
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
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 programmering2C.1 Syntaksbeskrivelse Syntaksdiagrammer og EBNF-notation.
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
 Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.1 Syntaksbeskrivelse Syntaksdiagrammer og EBNF-notation.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
Paradigmer i Programmering 0. Plan for kurset 4 x Mads R, 4 x Torben B, 2 x opgave MR: Funktionsprogrammering, SML TB: Logikprogrammering, Prolog Opgave:
Fromelle sprog Per P. Madsen Afd. for proceskontrol.
Sproghistorie Syntaks (struktur) Semantik (Indhold)
Studiepraktik Thomas Bøgholm Mikkel Hansen Jacob Elefsen
Præsentationens transcript:

Begreber og Redskaber 1

Emner i kurset Om sprog og sprogbeskrivelse Repræsentation af tal i maskinen –Heltal, negative tal, kommatal, logiske værdier Håndkøring af programmer Rekursion () Sortering og søgning Datastrukturer Stak, kø, hægtede lister Afprøvning af programmer

Plan for kurset Formål –Give et begrebsmæssigt grundlag for programudvikling, samt overblik over udvalg af redskaber og metoder en programmør kan bruge Forstå –hvad et programmeringssprog er –hvordan man kan strukturere data –algoritmer til søgning og sortering

Algoritmer Ordet stammer fra Abu Ja’far Mohammed ibn Musa al- Khowarizm der i 825 AD skrev en matematisk tekstbog med titlen ”Kitab al jabr w’al-muqabala” Tidligere eksempler: Euclid ca. 300 BC Algoritme: foreskrift for hvordan noget skal gøres/udføres/løses/udregnes

Målgruppe Studerende der lige har eller samtidig lærer at programmere Dette semester: ret nye til programmering God balast til programmeringsprojekt Sørg for hurtigt at komme i gang med at skrive nogle små java programmer.

BRP : gruppe 1/T TIT’er skal have 2*T + 2*P ialt med ISP+BRP har man 1*T+1*P TIT’er skal have 7-9 kurser Dat-OB’er skal have 5 gruppe 1 kurser Dat-OB’er skal have 6 kurser + Dat A Gruppe 1: Dat C/BRP, Dat B/ISP, DA, DB, SUO, DigiKom, OOP Tag enten Dat C, BRP eller DA

Forelæsninger 10/02/03: Om sprog og sprogbeskrivelse 17/02/03: Oversigt over Java 24/02/03: Datatyper og logiske udtryk 03/03/03: Håndkøring af programmer 10/03/03: Afprøvning 17/03/03: Iteration og rekursion 24/03/03: Sortering og søgning I 31/03/03: Sortering og søgning II 07/03/03: Datastrukturer I 14/04/03: Datastrukturer II

Programmeringssprog Sprog = mængde af sætninger ?

Programmeringssprog Sprog = syntaks+semantik+pragmatik Syntaks: hvilken tekst der må stå Semantik: hvad det betyder Pragmatik: hvordan det bruges

Syntaksbeskrivelse Syntaksbeskrivelse: beskrivelse af de korrekte sætninger i sproget. idag Regulære udtryk Kontekstfri grammatikker (EBNF)

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 Give et videre perpektiv –Historie –Videnskab mellem lingvistik og matematik

Syntaks: hvad må der stå? public class A { public static void main(String[ ] args) { System.out.println(”Hello”); }

Syntaks Præcedens regler i*j+k*l Associativitet a-b-c(a-b)-c a=b=ca=(b=c) Dangling else –if() if() stmt; else stmt

Semantik Hvad betyder det? Hvad er forskellem på & og &&? Hvornår er to strenge ens? Hvordan virker % for negative tal? Osv...

Pragmatik Konventioner –Klassenavne med stort bogstav –Felter og metoder med små bogstaver –Konstanter med kun store bogstaver Ideomer –for(;;){.. if(..)break;..} God stil –Indrykninger, kommentarer,..

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

Syntaksbeskrivelse Fra ccj2 2.2 Assignment variableName = expression; 6.1 The while statement while( condition ) statement Osv..

Notation Terminaler: Det der skal stå direkte i tekster (f.eks. Dele af Javaprogram ) –f.eks. while og ( eller som ” while ” Nonterminaler: dele af tekster som forklares andetsteds i grammatikken –f.eks expression

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

Grammatik: udtryk Grammatikken for regneudtryk i MiniJava Expression : VarName | Number | ””” { Tegn } ””” | Expression ”+” Expression | Expression ”-” Expression | ”(” Expression ”)”

Udtryk: navne, tal Number : Ciffer { Ciffer } Ciffer : ”0” | ”1” | ”2” | ”3” | ”4” | ”5” | ”6” | ”7” | ”8” | ”9” VarName : Bogstav { Ciffer | Bogstav } Bogstav : ”a” | ”b” | ”c” |... Tegn : Bogstav | Ciffer | ”.” | ”,” |...

Udtryk Eksempler: ”hej verden” ( )+ 1+(1+(1+(1+1)))

Eksempel: udtryk Java udtryk: Afledning: Expression → Expression ”-” Expression Number Expression ”+” Expression 2 3 4

Eksempel: udtryk Javaudtryk: Alternativ afledning: Expression → Expression ”+” Expression Expression ”-” Expression Number 2 3 4

Grammatikken er rekursiv To regneudtryk kan sættes sammen med et ”+” eller et ”-” og tilsammen er det et regneudtryk. Rekursive definitioner kan være problematiske… Barbereren barberer alle de folk i byen som ikke barberer sig selv. Hvem barberer barbereren?

Fibonacci tal De to første fibonacci tal er 1 og 1. Et fibonacci tal er summen af de to foregående fibonacci tal. Definitionen er rekursiv. 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 Rekursive definitioner er ok hvis det definerer noget ”større” ud fra noget ”mindre” og det ”mindste” er veldefineret uden rekursion. (”større”, ”mindre” og ”mindste” kan formaliseres som ordnede mængder i matematikken)

Tvetydig grammatik Grammatikken er tvetydig Dvs: Der findes tekststrenge som kan afledes på mere end en måde fra grammatikken. Tvetydighed er ikke et problem for hvad der er syntaktisk korrekt Tvetydighed er et problem når vi skal forklare semantikken af udtryk Tvetydighed afklares ofte ved at specificere associativitet og præcedens af operatorer.. ”Time flies like an arrow” ”Tyve brød gennem taget”

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!) (det er et uafgørligt problem) 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, parsere Genkendelse kræver hukommelse Særligt effektive genkendere/parsere findes for klasser af kontekst-fri grammatikker (LL(1), LALR(1),..) De kan konstrueres automatisk ud fra grammatikken (YACC, Bison, Antlr)

Programmeringssprog Generationer af sprog: 1. Generation: 1940’erne –Maskinkode 2. Generation –Assembler, AUTOCODE (1952) –Tidlige maskinspecifikke sprog 3. Generation 1954 → –Højniveausprog: Java, C, C++, Pascal, 4. Generation –Specielle programmeringsomgivelser til særlige formål 5. Generation –Naturligt sprog

Programmeringssprog Fortran, 1954 Cobol, Algol 1960 Basic 1964 C 1972 Simula 1967 Pascal 1972 C Java 1995 C# 2000 Andre sprog Logikprogrammering prolog 1972 Funktionsprogrammering Lisp 1960 ML, Haskell, Scheme +mange tusinde