1 Grundbegreber. Noter. Stilarter i programmering og sprog. Syntaks og semantik. Datatyper. Kontrolstrukturer. Udtryk. Abstraktioner.

Størrelse: px
Starte visningen fra side:

Download "1 Grundbegreber. Noter. Stilarter i programmering og sprog. Syntaks og semantik. Datatyper. Kontrolstrukturer. Udtryk. Abstraktioner."

Transkript

1 1 Grundbegreber. Stilarter i programmering og sprog. Syntaks og semantik. Datatyper. Kontrolstrukturer. Udtryk. Abstraktioner. Parametermekanismer. Blokke og navnebindinger. Scope og scoperegler. 3

2 Parallelle kontra sekventielle programmeringssprog. Parallelle sprog. Understøtter samtidig afvikling af flere processer med hver deres kontrolforløb. Inter-processkommunikation Synkronisering Sekventielle sprog. Understøtter kun eet kontrolforløb. På Programmeringssystemer 1 vil vi udelukke beskæftige os med sekventielle sprog. Vi indleder dette kursus og denne forelæsning, med et kort overblik over forskellige stilarter inden for sprog og programmering i disse sprog. Den mest overordnede skelnen er parallelle sprog kontra sekventielle sprog. Der er mange gode grunde til at være optaget af sprog, der understøtter parallellitet. Mange aktiviteter omkring os foregår samtidigt, og en vigtig egenskab ved programmeringssprog er på en naturlig måde at kunne modellere verden omkring os. Beslægtet med ovenståe er tensen til distribution af datamaskiner og deraf følge behov for, at forskellige, distribuerede programmer kommunikerer og synkroniserer deres indenbyrdes forløb. Mere om parallelitet på kurset maskinel 2 på dat 2. 4

3 Stilarter: Programmering og programmeringssprog. Imperative sprog Programmering med assignments og procedurer, begge med sideeffekter. Eks.: Fortran, Algol, Pascal, Modula, Ada Funktionelle sprog Programmering med udtryk og funktioner uden sideeffekter. Eks: Ren Lisp, ML, Miranda. Objekt-orienterede sprog. Programmering med abstrakte datatyper, 'information hiding' og nedarvning. Eks.: Simula, Smalltalk, Beta, CLOS, C++, Eiffel. Logiksprog. Programmering med facts, if-then regler og logiske slutninger ud fra disse. Eks.: Prolog. Imperative programmeringssprog er langt de mest almindeligt forekomme i praktisk brug. Et imperativt program under udførelse er karakteriseret af en tilstand (state), som ændres over tid i takt med, at programmet udføres. Assignmentsætningen er det vigtigste primitiv, som kan ændre tilstanden af et program. Studere i Programmeringssystemer 1 antages at have en baggrund i imperativ programmering (i Pascal). Nærvære (og næste) forelæsning dækker hovedsageligt begreber og teknikker knyttet til imperative sprog. Funktionel programmering er relateret til den matematiske forståelse af funktioner (og lambda calculus). Programmer skrevet i funktionelle sprog er meget lettere at analysere imperative programmer. Man kan sige, at et funktionelt program har en tilstand, men denne tilstand ændres ikke i takt med programudførelsen. Objekt-orienteret programmering tager udgangspunkt i ideen om abstrakte datatyper. Objekter er instanser af abstrakte datatyper, og objekter kan indeholde tilstande, som ændres over tid. Dette er et lighedspunkt i forhold til imperative sprog. Kontrol over synlighed af data samt udvidelse af abstrakte datatyper ved nedarvning er vigtige karakteristika. Store dele af Programmeringssystemer 1 vil handle om objekt-orienteret progammering. Logik programmering består i at stille spørgsmål til en database af facts givet nogle inferensregler. Logikprogrammering opfattes af de fleste som meget forskellig fra de tre andre stilarter. 5

4 Syntaks og semantik. if a < b then P(a, b) else Q(a, b) Syntaks Beskrivelse af form. Semantik Beskrivelse af mening. Uformel beskrivelse En if-sætning består af et udtryk og to sætninger. Hvis udtrykket evalueres til sand udføres statement-1 ellers udføres statement-2 Formaliseret beskrivelse if_statement ::= if <expr> then <statement-1> else <statement-2> Det er vigtigt at kunne skelne mellem syntaks og semanik, altså form og mening. Syntaks kan beskrives på flere niveauer: Det laveste niveau handler om, hvordan man kan beskrive reglerne for dannelse af nøgleord, navne, tal, kommentarer og andre leksikalske enheder. Det mellemste niveau kaldes ofte beskrivelsen af konkret syntaks. Beskrivelsen et sprogs konkrete syntaks munder ud i en hierarkisk dekomponering af et programs leksikalske enheder. Abstrakt syntaks, det højeste syntaktiske niveau, giver ligeledes en hierarkisk dekomponering af et program, som er mere velegnet som udgangspunkt for beskrivelsen af af semantikken af programmet. Syntaksregler beskrives som regel af en grammatik. Grammatikker kan udtrykkes på mange forskellige måder. Grafiske syntaksdiagrammer er kte for læserne. Tekstuelle grammatikker, udtryk i den såkaldte BNF (Backus Naur Form eller Backus Normal Form) er også meget udbredte. I bogen Object Oriented Software Construction er der er et kort afsnit af syntaks notation (efter forordet), som afspejler den måde, syntaktiske elementer vil bliver beskrevet på i bogen. Semantiske regler er vanskeligere at beskrive præcist og matematisk formelt. Ovenfor har vi ikke nævnt nogen specifik teknik til formaliseret beskrivelse af semantik. I praksis beskrives semantikken for det meste uformelt, eller i bedste fald som en blanding af uformel prosa og formelle definitioner. Formel semantik er, på trods af dette, en vigtig del af faget. Mere om dette på dat2. En grammatik for Eiffel er vist i appix C af OOSC; I appix F af samme bog er vist syntaksdiagrammer, for de læsere, der foretrækker sådanne. Tag et kig på disse, og sammenlign de to formalismer. 6

5 Datatyper. Simple, sprogdefinerede typer. Real, integer, boolean Sprogdefinerede type-konstruktorer. Array, record, set, file Bruger-definerede typer. Type my-type = typeudtryk. Statisk typing: Typen af ethvert udtryk i et program kan bestemmes inden programmet udføres. Alle programmeringssprog understøtter data af primitive såvel som sammensatte typer. Med indførelsen af Pascal (først i 70erne) blev det også almindeligt, at brugeren selv kunne definere navngivne typer. Der er altid naturlige operationer tilknyttet en type. F.eks. er de aritmetiske operationer definerede på integer (og andre er tilsvare defineret på real); og selektion i arrays a[i] er en operation på en array type. På brugerdefinerede typer er disse operationer tilknyttet på en mere løs facon til typerne, og dermed til variablene og udtrykkene af disse typer. Ovenståe observationer er motivationen for en tættere tilknytning mellem en type og naturlige operationer på værdier af typen. Dette førte til udviklingen af begrebet abstrakte datatyper, som vi ver kraftigt tilbage til lidt senere i kurset. Statisk typing er et grundelement i Pascal og mange andre, ligne sprog. En hel anden problematik om typer er, hvilke typer ligner hinanden så meget, at variable af disse typer kan erstatte hinanden i de udtryk, hvor de indgår. Dette er typeækvivalens eller typesammenlignelighedsproblemet, som vi ikke vil dyrke eksplicit på dette kursus. Vi ver dog konkret tilbage til problematikken i forbindelse med Eiffel. 7

6 Arrays og records. Arrays a: array[index_type] of element_type Homogen tabel. Repræsenterer en funktion: index_type -> element-type Element access: a[j] Indekset j beregnes under programudførelsen. Record Heterogen tabel. Repræsenterer et Cartetisk produkt: T1 x T2 x T3. Element access: r.felt2 Feltnavnet er statisk (kan ikke beregnes under programudførelsen). variant-records: Variation i typen -- samme typenavn. Lager-økonomi: delt lagring af varianter. r: v: record felt1: T1; felt2: T2; felt3: T3 record felt1: T1; felt2: T2; case felt3: T3 of variant-1: (felt-4: T4); variant-2: (felt-5: T5) Denne slide opregner på kort form nogle vigtige egenskaber ved to vigtige typekonstruktorer fra Pascal. Det er vigtigt at bide mærke i, at både arrays og record giver direkte tilgang til data i tabellerne. Underligge betyder dette, at positionen af data i tabellen beregnes ved element access, og data slåes derved direkte op uden nogen form for tidskræve søgning. Variant records giver programmøren mulighed for at beskrive specialiseringer af recorden i to eller flere retninger, uden det giver typesammenlignelighedsproblemer (uanset hvilken specialisering der konkret lagres, er typen den samme). Vi vil på dette kursus bevæge os meget længere, variant records tillader med hensyn til typespecialisering. Mere om dette under forelæsningerne om nedarvning. Opgave: Som beskrevet ovenfor kan indekset j i a[j] være et udtryk, hvis værdi beregnes på programmets udførelsestidspunkt. Eksempelvis kan vi skrive x:= a[f(i)] hvorved array-elementet, der tilgåes, kommer til at afhænge af funktionen f og værdien af i. Diskutuer hvorfor man ikke i Pascal kan skrive x := r.f(...), hvor f er en funktion, som vi ønsker skulle returnere et feltnavn i recorden r. 8

7 Statisk og dynamisk dataallokering. Statisk data allokering: Størrelse og struktur af data er uforanderlige. Indholdet af datastrukturen kan ændres under programudførelse. Data allokeres ved "blokindgang" og deallokeres ved "blokudgang". type T = array[1..n] of integer; procedure P; var table: T (* initialize table *)... ; Dynamiske data allokering: Størrelse, struktur samt indhold af data kan ændres under programudførelse. Data allokeres eksplicit. Deallokering: Eksplicit Implicit, via garbage collection når data ikke længere kan påvirke programmets udførelse. procedure P; var table: ^T new(table); table^[1] :=... dispose(table); ; I mange sammenhænge er det ikke fleksibelt nok, at alle datastrukturer allokeres af fast størrelse og struktur. Ofte ønsker vi at kunne udvide vore strukturer i takt med programudførelsen. I Pascal kan man dynamisk allokere data med proceduren new. Dynamisk allokerede data refereres via såkaldte pointere. Til gengæld for øget fleksibilitet af programmet under udførelsen skaber brugen af dynamiske data og deraf følge brug af pointere ofte programmeringsmæssige komplikationer. Det er simplethen vanskeligere at holde styr på dynamisk allokerede data, det er tilfældet med statisk allokerede data. Eksplicit allokering af dynamiske data er uundgåelig (på et eller andet programmeringsniveau) hvis man ønsker fleksibiliteten. Derimod kan deallokeringen af lager gøres automatisk via såkaldt garbage collection. Garbage collection genopsamler lagerceller, som indgår i data, der ikke længere på nogen måde kan påvirke forløbet af programmets udførelse (data kan ikke længere "nåes" fra det køre program). Det forventes ikke, at alle kursusdeltagere har programmeringserfaring med dynamiske data. Dynamiske data er reglen og statiske data undtagelsen i Eiffel. Derfor får man i løbet af Programmeringssystemer 1 stor erfaring i håndtering af dynamiske data. Heldigvis har Eiffel garbage collection, så vi behøver blot at bekymre os om allokering. 9

8 Kommandoer og kontrolstrukturer. Kommandoer kan ændre programmets tilstand. Assignment var := expr Den vigtigste og mest karakteristiske primitive kommando i imperative sprog. Procedurekald P(x + y, z) Sprogdefinerede og primitive Brugerdefinerede Kontrolstrukturer aktuelle parameterudtryk som evalueres til argumenter Sekventielle Selektive Iterative Der anves forskellig terminologi, for det vi her kalder kommadoer: sætninger (statements) og intruktioner. Vi har allerede behandlet rollen af assignments, da vi tidligere diskuterede forskellige programmeringsstilarter. Procedurekald kan enten referere til procedurer, som er defineret af sproget eller af brugeren. I moderne sprog er der en tens til, at færre og færre procedurer defineres som en del af sproget. I sådanne sprog findes der et sæt af biblioteker, hvori samlinger af beslægtede procedurer defineres. Dette vil blive et grundtema på dette kursus. Sprogdefinerede procedurer er undertiden specielle i forhold til de procedurer, som brugeren selv kan definere. F.eks. kan visse sprogdefinerede procedurer i Pascal tage et vilkårligt antal parametre. Formålet med kontrolstrukturer i imperative programmer kan---lidt poppet---siges at være, at blande assignments på en passe, kontrollerbar og overskuelig måde. I tidernes morgen brugte man ikke kontrolstrukturer, men derimod eksplicitte og ukontrollerbare hop. Den mest fundamentale kontrolmekanisme i imperative sprog er sekventiel sammensætning: Først udføres een kommando ; (semikolon) dernæst en anden kommando. 10

9 Selektion. Udvælgelse af een kommando blandt flere mulige If-then-else Indlejrede if-then-else: sekventiel beregning og udvælgelse. if boolean-expression-1 then command-1 else if boolean-expression-2 then command-2 else command-3 Case Tabelopslag på basis af selector-værdi. Udtømme opremsning af "cases". case selector-expression of case-constant-1: command-1; case-constant-2: command-2; case-constant-3: command-3; Pascal's if-then-else struktur udvælger i udgangspunktet blandt to muligheder på basis af et boolsk (sandt el. falsk) udtryk. Ved indlejring af en ny if-then-else i else-delen af den første (og ved passe typografisk indrykning af programteksten), kan vi dog opnå en tilsvare effekt som ved cond, kt bl.a. fra Lisp. Mere moderne sprog udvider typisk if-then-else sætningen til denne sekventielle beregning af boolske udtryk, og efterfølge udvælgelse af en (sekvens af) kommando(er). Case sætningen er mere begrænset, men også mere effektiv multivejs udvælgelse ved sekventiel beregning af boolske udtryk. Alle case-constanter skal, som navnet antyder, være bestemmelige på oversættelsestidspunkt, og derfor kan selektionen foregå ved direkte hop til den ønskede kommando på baggrund af selektorens beregnede værdi. Bemærk at case-sætningen og "case-records" (variant records, som vi behandlede tidligere i dette kapitel) ikke har noget med hinanden at gøre. 11

10 Iteration. Ubestemt antal gentagelser: while test inden gentagelse nul, en eller flere udførelser af kommando repeat test efter gentagelse mindst een udførelse af kommandoer while expression do command repeat command-sequence until expression Bestemt antal gentagelser: for for i := first to last do command Man skulle måske tro, at iterative kontrolstrukturer er lige så vigtige og fundamentale som de selektive. Det er de ikke. Enhver iteration kan nemlig programmeres ved brug af rekursive procedurer. Programmering med iterative strukturer med et (på forhånd) ubestemt antal gennemløb er svære at styre. En sådan iterativ struktur kan afstedkomme en uelig løkke; og ofte er der randproblemer, dvs. problemer med enten det første eller det sidste gennemløb. Brug derfor for-sætninger, hvor det er muligt! I dette kursus vil vi se på tiltag, der hjælper programmøren med at styre sådanne "svære" iterative strukturer: invariant og variant. Vi ver tilbage til dette i forelæsningen: "Udtryk og kommandoer i Eiffel". Det er ofte mere hensigtsmæssigt at tilknytte iteration til datastrukturer omvt. Dette lyder måske lidt uforståeligt på nuvære tidspunkt, men vi ver tilbage til problemstillingen i forelæsningen om "Arrays og lister". 12

11 Udtryk. Et udtryk kanberegnes hvorved der fremkommer en værdi. Beregning af et udtryk ændrer ikke på programmets tilstand. Forskellige former for udtryk: Variabelreference. Konstantudtryk. Funktionskald og operatorudtryk. Eksempel i Pascal: x := y = f(5) konstantudtryk funktionskald operatorudtryk variabelreference Tilsvare eksempel i C: x = y == f(5) Der er en vigtig begrebsmæssig forskel mellem kommandoer og udtryk. Som allerede omtalt kan udførelsen af en kommando ændre programmets tilstand, men kommandoen resulterer ikke i nogen værdi. Omvt forholder det sig med et udtryk, idet udførelsen af et udtryk altid efterlader programmets tilstand uændret, men det giver en værdi. Nogle sprog, såsom C og Lisp, forplumrer denne begrebsmæssige forskel. I mange sprog har et assignment såvel som et procedurekald en værdi, og disse kan således anves som udtryk. I C kan man således skrive if (a = b)... hvor a = b er et assignment hvis værdi er værdien af variablen b. Dette er dårlig programmeringsstil, som bør undgåes. Det bør også nævnes at mange sprog tillader en funktion at have sideeffekter, således at et kald af funktionen (et udtryk) også spiller rollen som en kommando. Det er yderst vanskeligt for compilere at opdage dette i imperative sprog; det anbefales at pålægge sig selv disciplinen aldrig at lave sideeffekter i funktioner. Også hvad angår terminologi og syntaks skal man være agtpågiven. I C og Lisp taler man udelukke om fuktioner selv om mange af disse er procedurer (funktionskaldet er en kommand). Og i C ser et assignment (ala a = b ) ud som et Pascal operatorudtryk. I resten af dette kursus vil vi konsekvent notere et assignment med := symbolet. Formen a = b vil betegne et operatorudtryk. Brug af = som assignment (eller := som lighedsoperator) vil blive opfattet som groft sløseri samt mangel på forståelse af ovennævnte vigtige skelnen mellem udtryk og kommandoer. 13

12 Abstraktioner over kommandoer og udtryk. En abstraktion over en kommando er en procedure. En abtraktion over et udtryk er en funktion. En definition af en abstraktion består af Et navn for abstraktionen Et antal parametre, som generaliserer abstraktionen. Den abstraherede kommando/udtryk/... Formel parameter procedure P(x: T) commands function F(x: T): S F := expression Primær motivation: Højne programmets abstraktionsniveau, bedre læselighed og forståelighed. Sekundær motivation: At identificere programfragmenter, som bruges mere eet sted, gøre disse til en procedure, som kaldes to eller flere gange. Abstraktioner er et af de absolut centrale elementer i programmeringssprog; tilsvare er passe brug af abstraktioner i programmering et af de suverænt vigtigste aspekter i "god programmeringsstil". Abstraktioner er ikke begrænsede til at virke på kommandoer og udtryk. Man kan principielt lave abstraktioner over "hvad som helst", med variere nytteværdi, naturligvis. Funktioner a la Pascal begrænser ikke programmøren til kun at skrive eet udtryk i kroppen af funktionen. Man kan skrive vilkårlige kommandoer, men det kræves, at der returneres et resultat (ved assignment til funktionsnavnet). Det opfattes dog som dårlig stil, hvis en funktion har sideeffekter. Vi vil dyrke objekt-orienteret programmering på dette kursus. Den helt centrale, programmeringssproglige konstruktion er i denne sammenhæng en klasse. Det er interessant at vide, at klasser faktisk er abstraktioner over definitioner. Så vi kunne således kalde en klasse for en definitions-procedure. 14

13 Parametermekanismer. 'Call by value' En kopi af a overføres til P. Kopien bindes til den formelle parameter x. Eventuelle assignments til x har kun lokale virkninger 'Call by reference' Der overføres en reference (adresse) på a til P. I kroppen af abstraktionen er x et alternativt navn (et alias ) på variablen a. Eventuelle assingments til x har effekt uden for proceduren. Kun udtryk, hvortil der kan 'assignes', kan benyttes som var-parametre til en procedure. procedure P(x: T) commands a: T; P(a) procedure P(var x: T) commands a: T; P(a) De to nævnte parametermekanismer er centrale, og det er meget vigtigt at forstå forskellen mellem dem. I forskellige sprog findes der forskellige variationer, såsom 'value result' og 'name' parametre. Vi kommer ikke ind på disse i "Programmeringssystemer 1". Forskellen mellem 'value' og 'reference' parametre blødes lidt op, hvis vi overfører pointere (referencer) som parametre. Vi ver tilbage til dette i forbindelse med parametermekanismen i Eiffel. I Pascal kan man også overføre procedurer og funktioner som parametre. Opgave. Dette kapitel har været inspireret af Pascal. Emnerne fra dette kapitel kan naturligvis også anskues fra andre programmeringssprog, f.eks. programmeringssproget Lisp, som jo har været berørt på Basisuddannelsen. Hvilken programmeingsstilart synes I Lisp understøtter? Hvordan er den syntaktiske struktur af Lisp? Hvilke datatyper har I kskab til i Lisp? Er der statisk typing? Er der arrays og records? Hvordan laver man assignment? Hvordan virker cond i forhold til if-then-else kommandoen. Hvilke iterative kontrolstrukturer har I kskab til i Lisp? Kan man forestille sig andre abstraktioner procedurer og funktioner i Lisp? Hvilke parametermekanismer understøttes af Lisp. 15

14 Blokke og navnebindinger. En blok er en eller flere kommandoer tilknyttet nogle navnebindinger. Eksempel på en blok i Pascal: I Pascal er blok-begrebet tilknyttet hovedprogrammet, procedurer og funktioner. I andre sprog kan enhver kommando være en blok. Blokke kan indlejres i vilkårlig dybde. const n = 10; type table = array[1.. n] of integer; var a: table i: 1.. n for i := 1 to n do a[i] := i;... En navnebinding er associationen mellem et navn og en værdi. En navnebinding er eksplicit, hvis der findes en definition i programmet, som introducerer navnet og dets værdi. Eksplicit definition af navne og deres værdier er et meget værdifuldt element i moderne programmeringssprog. Modstykket til dette er implicit definition af navne, hvor et navn bliver introduceret første gang det optræder (første gang det bliver anvt). En navnebinding (eller blot en binding) knytter et navn til en værdi. Constant og type definitioner i Pascal er gode eksempler på navnebindinger. Variabel erklæringer er også eksempler herpå. Værdien er her en plads i lageret (også kaldet en location), ikke den værdi som er tilskrevet variablen gennem et assignment. Navne, der forekommer (på "venstre-siden") i en definition, kaldes undertiden for definere navneforekomster. Definere navneforekomster er gode at opsøge, hvis man vil vide noget om navnets egenskaber og rolle i programmet. Navneforekomster, der ikke er definere, er anvte forekomster. 16

15 Scope og scoperegler. Scopet af en navnebinding er det område af programmet (programteksten) hvor bindingen har effekt. Scope I Scope II procedure P var a, b: integer; procedure Q var b, c: real a: Scope I b: Scope I \ II b: Scope II c: Scope II \ III hul i scopet Q: Scope I Scope III procedure R var c, d: integer... (* Q *)... (* P *)... c: Scope III d: Scope III R: Scope II Notation: I \ II betegner scope I fratrukket scope II. Scoperegler varierer naturligvis fra sprog til sprog. Selv om scoperegler er vigtige i alle sprog, er det af største betydning, at man fæstner sig ved scopereglerne ved sprog, der lægger op til en dyb indlejring af blokke i hinanden. Dette er tilfældet i Pascal, hvor procedurer og funktioner kan indlejres i hinanden. I Eiffel, som er det sprog vi vil benytte på Programmeringssystemer 1, er det kun i mindre omfang muligt at indlejre definitioner i hinanden, og sproget har tillige nogle ret konservative konventioner med hensyn til navnesammenfald mellem scopeniveauer. 17

4 Basal Objekt-orienteret Programmering I.

4 Basal Objekt-orienteret Programmering I. 4 Basal Objekt-orienteret Programmering I. Klasser i forhold til abstrakte datatyper og record-typer. Variable og operationer. Klasse-interfaces. Klasser og typer. Klasse-instantiering og initialisering.

Læs mere

26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler.

26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler. 26 Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler. Hvad er programverifikation? Bevisregel for 'tom kommando'. Bevisregel for assignment. Bevisregler for selektive

Læs mere

Sproget Rascal (v. 2)

Sproget 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 mere

Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Abstrakte klasser.

Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Abstrakte klasser. 10 Nedarvning I. Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Dynamisk binding og virtuelle operationer. Decentraliseret/centraliseret

Læs mere

3 Algebraisk Specifikation af Abstrakte Datatyper.

3 Algebraisk Specifikation af Abstrakte Datatyper. 3 Algebraisk Specifikation af Abstrakte Datatyper. Specifikation kontra program. Bestanddele af en algebraisk specifikation. Klassificering af funktioner i en ADT. Systematisk definition af ligninger.

Læs mere

2 Abstrakte datatyper.

2 Abstrakte datatyper. 2 Abstrakte datatyper. Motivere eksempel: top-down udvikling af program 'mini-bank' Strukturering af et program: efter data eller funktion? Definition af en abstrakt datatype og tilknyttede begreber. Fænomener,

Læs mere

Åben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser

Å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 mere

Årsagen til fejl. Erkendelse af fejl. Håndtering af fejl.

Årsagen til fejl. Erkendelse af fejl. Håndtering af fejl. 9 Fejlhåndtering Årsagen til fejl Erkelse af fejl Håndtering af fejl Fejlerkelse og -håndtering i objekt-orienterede sprog Fejlerkelse og -håndtering i Eiffel Udbredelse af fejl i Eiffel Nuanceret fejlhåndtering

Læs mere

Sproget 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 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 mere

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. 22 Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. Indsættelse i hobe. Sletning af minimalt element i hobe. Repræsentation. 327

Læs mere

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1 Spørgsmål 1 Grundlæggende objektorienterede begreber o Klasse (class) o Objekt (object) o Metode (method), herunder return type og parametre o Instansvariable (instance variables) & egenskaber (properties),

Læs mere

30 Objekt-orienteret Programmering i Andre Sprog.

30 Objekt-orienteret Programmering i Andre Sprog. 30 Objekt-orienteret Programmering i Andre Sprog. Abstrakte datatyper i Pascal. Abstrakte datatyper i Modula og Ada. C++ Overordnet organisering Instantiering og initialisering. Interfaces. Nedarvning.

Læs mere

Ugeseddel 4 1. marts - 8. marts

Ugeseddel 4 1. marts - 8. marts Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 1 8. september 2009 Målgruppe Motivation Indhold Form Materiale 2 / 47 Kursusintroduktion 1 Målgruppe 2 Motivation 3 Indhold 4 Form 5 Materiale Målgruppe Motivation Indhold Form

Læs mere

Sproget Limba. Til brug i G1 og K1. Dat1E 2003

Sproget 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 mere

5 Basal Objekt-orienteret Programmering II.

5 Basal Objekt-orienteret Programmering II. 5 Basal Objekt-orienteret Programmering II. Historik og sprogoversigt. Programbeskrivelse kontra programudførelse. Referencer og værdier. Skabelse af objekter i Eiffel. Features og deres klassificering

Læs mere

16 Træer. Noter. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype.

16 Træer. Noter. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype. 16 Træer. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype. Gennemløb af binære træer. Træer i Eiffel. 229 Definition af et træ.

Læs mere

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

Introduktion til Funktionsorienteret Programmering.

Introduktion til Funktionsorienteret Programmering. 1 Introduktion til Funktionsorienteret Programmering. Dynamiske sprog og omgivelser. Applikativ og funktionsorienteret programmering. Eksempler på funktionsorienteret programmering. Uafhængighed af evalueringsrækkefølge.

Læs mere

Rettelser til Pilen ved træets rod

Rettelser 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 mere

Introduktion til programmering. Programmeringssprog Uge 44 Computer Science, kap 6. Learning Python: kap 13, 14.

Introduktion til programmering. Programmeringssprog Uge 44 Computer Science, kap 6. Learning Python: kap 13, 14. Introduktion til programmering Programmeringssprog Uge 44 Computer Science, kap 6. Learning Python: kap 13, 14. Plan Programmeringsparadigmer Funktionel programmering i Python Pause Scope: referencekonteksten

Læs mere

Rename og redefine. Abstrakte klasser. Dynamisk binding.

Rename og redefine. Abstrakte klasser. Dynamisk binding. 11 Nedarvning II. Enkeltnedarvning i Eiffel. Rename og redefine. Initialisering af superklasse-dele af et objekt. Interfaces til klienter og subklasser. Typesammenlignelighed og polymorfi. Abstrakte klasser.

Læs mere

Multiparadigme Programmering

Multiparadigme Programmering Multi Programmering Repetition: De grundliggende r Systematisk karateristik. Paradigmesupplering. Symmetrisk multi programmering Leda eksempler på logikprogrammering kombineret med imperativ og funktionsorienteret

Læs mere

Introduktion til Funktionsorienteret Programmering.

Introduktion til Funktionsorienteret Programmering. Introduktion til Funktionsorienteret Programmering. Sammenligning med det imperative paradigme Assignment kontra navnebinding. Iterative kontra rekursion. Introduktion til højereordensfunktioner. Evalueringsrækkefølge.

Læs mere

Dat 2/BAIT6/SW4: Syntaks og semantik En manual for studerende

Dat 2/BAIT6/SW4: Syntaks og semantik En manual for studerende Dat 2/BAIT6/SW4: Syntaks og semantik En manual for studerende Hans Hüttel Foråret 2011 Indhold Indhold 1 1 Kurset er lavet om! 1 2 Kursets indhold 2 2.1 Kursets emner................................ 2

Læs mere

Python programmering. Per Tøfting. MacFest

Python programmering. Per Tøfting. MacFest Python programmering MacFest 2005 Per Tøfting http://pertoefting.dk/macfest/ Indhold Måder at afvikle Python program på Variabler Data typer Tal Sekvenser Strenge Tupler Lister Dictionaries Kontrolstrukturer

Læs mere

18 Multivejstræer og B-træer.

18 Multivejstræer og B-træer. 18 Multivejstræer og B-træer. Multivejs søgetræer. Søgning i multivejssøgetræer. Pragmatisk lagring af data i multivejstræer. B-træer. Indsættelse i B-træer. Eksempel på indsættelse i B-træ. Facts om B-træer.

Læs mere

29 Opsamling af Objekt-orienteret Programmering.

29 Opsamling af Objekt-orienteret Programmering. 29 Opsamling af Objekt-orienteret Programmering. Bottom-up kontra top-down design. "The shopping list approach". Hvordan finder man på objekterne. Klasser og dataabstraktion. Klasse interface og interface-teknikker.

Læs mere

13 Objekt-orienteret Design.

13 Objekt-orienteret Design. 13 Objekt-orienteret Design. Analyse i forhold til design. Programbeskrivelse og designbeskrivelse. Sømløs udvikling. Design i forhold til OO Eiffel programmering. Kategorisering af klasser i et design.

Læs mere

14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer.

14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer. 14 Algoritmeanalyse. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. O og Ω. Køretid for forskellige kontrolstrukturer. Eksempler på algoritmeanalyse. Eksponentiel og polynomiel

Læs mere

Dat 2/F6S: Syntaks og semantik 2005 Centrale emner og eksamenspensum

Dat 2/F6S: Syntaks og semantik 2005 Centrale emner og eksamenspensum Dat 2/F6S: Syntaks og semantik 2005 Centrale emner og eksamenspensum Hans Hüttel 14. juni 2005 Indhold 1 Centrale emner 1 2 Fuldt pensum 2 3 Reduceret pensum 3 3.1 Hvad er fjernet her?........................

Læs mere

Recollections about the Development of Pascal. Niklaus Wirth ACM, 1993

Recollections about the Development of Pascal. Niklaus Wirth ACM, 1993 Recollections about the Development of Pascal Niklaus Wirth ACM, 1993 1 Niklaus Wirth, 73 Født i Schweiz, 1934 Ph.D., University of California, Berkeley, 1963 Assistant Professor of CS, Stanford University,

Læs mere

Forelæsning Uge 2 Mandag

Forelæ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 mere

Skriftlig eksamen, Programmer som Data Onsdag 6. januar Spørgsmål 1 (20 %): Regulære udtryk og automater

Skriftlig eksamen, Programmer som Data Onsdag 6. januar Spørgsmål 1 (20 %): Regulære udtryk og automater Skriftlig eksamen, Programmer som Data Onsdag 6. januar 2010 Dette eksamenssæt har 5 sider. Tjek med det samme at du har alle siderne. Eksamens varighed er 4 timer. Der er fire spørgmål. For at få fuldt

Læs mere

Introduktion til funktioner, moduler og scopes i Python

Introduktion 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 mere

Forelæsning Uge 2 Torsdag

Forelæ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 mere

OBS! Prøveeksamen med syntaks på tirsdag! Kursusgang 8

OBS! Prøveeksamen med syntaks på tirsdag! Kursusgang 8 Kursusgang 8 OBS! Prøveeksamen med syntaks på tirsdag! Kursusgang 8 Matematik Arkæologi Eksempel Semantik Bims (Basic Imperative Statements / Begrænset Imperativt Sprog) Abstrakt syntaks Transitionssystemer

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

8 Specifikation med Logiske Udtryk.

8 Specifikation med Logiske Udtryk. 8 Specifikation med Logiske Udtryk. Specifikation kontra program. Specifikation af funktioner. Specifikation af funktions-orienterede ADT-er. Integreret specifikation og program i Eiffel. Korrekthed af

Læs mere

Programmering i C. Lektion oktober 2008

Programmering i C. Lektion oktober 2008 Programmering i C Lektion 2 20 oktober 2008 Historie Processen At kompilere 2 / 23 Fra sidst 1 Historie 2 Processen 3 At kompilere Historie Processen At kompilere 3 / 23 ALGOL 60 1963 CPL 1966 BCPL 1969

Læs mere

Moduler i Standard ML

Moduler i Standard ML Moduler i Standard ML Hans Hüttel December 2001 I løbet af datalogikurset har vi haft glæde af en hel række forskellige standardmoduler som f.eks. Math, Int, Real og String. Disse moduler kan, har vi set,

Læs mere

Software Construction 1 semester (SWC) Spørgsmål 1

Software Construction 1 semester (SWC) Spørgsmål 1 Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /

Læs mere

Klasser og objekter. (Afsnit i manualen)

Klasser og objekter. (Afsnit i manualen) Klasser og objekter (Afsnit 4 + 5 i manualen) Grundbegreber Klasser og objekter beskrivelse oprettelse Attributter og metoder tilstand opførsel Indkapsling afskærmning datarepræsentationsuafhængighed Klasser

Læs mere

Programmering i C. Lektion 4. 5. december 2008

Programmering i C. Lektion 4. 5. december 2008 Programmering i C Lektion 4 5. december 2008 Funktioner Eksempel Fra sidst 1 Funktioner 2 Eksempel Funktioner Eksempel Eksempel: 1 / f u n k t i o n s p r o t o t y p e r / i n t i n d l a e s ( void )

Læs mere

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Programmering Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Oversigt Undervisningen Hvad er programmering Hvordan er et program organiseret? Programmering og fysik Nobelprisen

Læs mere

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller. Flowchart Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller. Et godt program til at tegne flowcharts med er, EDGE-Diagrammer, eller Smartdraw.

Læs mere

Kontrol-strukturer i PHP

Kontrol-strukturer i PHP Denne guide er oprindeligt udgivet på Eksperten.dk Kontrol-strukturer i PHP Denne artikel gennemgår kontrolstrukturer i PHP. 'if', 'switch', 'while' og 'for' bliver gennemgået. Den forudsætter lidt grundlæggende

Læs mere

2 Funktionsorienteret programmering i Scheme.

2 Funktionsorienteret programmering i Scheme. 2 Funktionsorienteret programmering i Scheme. Lisp og Scheme. Listebegrebet i Lisp. Funktionsdefinition og lambdaudtryk. Navnebinding. Iteration. Første-klasses funktioner. Closures som klasser. Praktisk

Læs mere

Noter til Perspektiver i Matematikken

Noter til Perspektiver i Matematikken Noter til Perspektiver i Matematikken Henrik Stetkær 25. august 2003 1 Indledning I dette kursus (Perspektiver i Matematikken) skal vi studere de hele tal og deres egenskaber. Vi lader Z betegne mængden

Læs mere

Programmering i C. Lektion november 2008

Programmering i C. Lektion november 2008 Programmering i C Lektion 3 18. november 2008 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler Kontrolstrukturer Udvælgelse Gentagelse

Læs mere

Objekt-orienteret programmering uden klasser: Self.

Objekt-orienteret programmering uden klasser: Self. Objekt-orienteret programmering uden klasser: Self. Sammenligning klasse-baseret og klasseløs programstrukturering. Basale forhold Singulære objekter Dynamisk nedarvning Variable i forhold til metoder.

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering 1 / 36 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 6, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

LØKKER METODER C S HISTORIE. Grundlæggende programmering Lektion 4

LØKKER METODER C S HISTORIE. Grundlæggende programmering Lektion 4 LØKKER METODER C S HISTORIE Grundlæggende programmering Lektion 4 1 LEKTIER UML struktur diagrammer om biler 2 OPERATORER Syntaks til at udføre forskellige beregninger og handlinger Booleans og hvorfor

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 2 14. september 2009 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Kommentarer Format - scanf og printf 2 / 27 Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler

Læs mere

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5 Databaser og SQL Introduktion til SQL Kap 1-5 1 Dagens gang Databaser Database begreber Mapning af klasser til relationel model Normalisering Opgaver til næste gang 2 Databasebegreber A database is a:

Læs mere

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september 2008. (Tak til Jakob Bardram for nogle slides) Dagens begreber

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september 2008. (Tak til Jakob Bardram for nogle slides) Dagens begreber Klasser Grundlæggende Programmering med Projekt Peter Sestoft Tirsdag 2. september 2008 (Tak til Jakob Bardram for nogle slides) Dagens begreber Felt (field) Metode (method) Parameter (parameter) Sætning,

Læs mere

Algoritmedesign med internetanvendelser ved Keld Helsgaun

Algoritmedesign med internetanvendelser ved Keld Helsgaun Algoritmedesign med internetanvendelser ved Keld Helsgaun 1 Analyse af algoritmer Input Algoritme Output En algoritme er en trinvis metode til løsning af et problem i endelig tid 2 Algoritmebegrebet D.

Læs mere

Programmering for begyndere Lektion 2. Opsamling mm

Programmering 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 mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

Læs mere

Programmering, algoritmik og matematik en nødvendig sammenblanding?

Programmering, 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 mere

Algoritmer og invarianter

Algoritmer 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 mere

En note om Programmering

En note om Programmering En note om Programmering Kurt Nørmark Institut for Datalogi Aalborg Universitet normark@cs.aau.dk Resumé Denne note er en introduktion til programmering. Formålet er at give dig et indblik i hvad programmering

Læs mere

5. Kontrolstrukturer - Motivation og Oversigt

5. Kontrolstrukturer - Motivation og Oversigt 5. Kontrolstrukturer - Motivation og Oversigt I dette og de følgende afsnit vil vi - vigtigst af alt - møde forgreninger og løkker. Sådanne kaldes kontrolstrukturer, fordi vi med disse kan kontrollere

Læs mere

Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. "10") til heltal (10). if (udtryk) else

Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. 10) til heltal (10). if (udtryk) else Programmering 1999 Forelæsning 2, fredag 3. september 1999 Betingede ordrer: if-, if Indlejrede betingede ordrer Løkker med begrænset iteration: for Løkker med ubegrænset iteration: while Betingede ordrer,

Læs mere

Rolf Fagerberg. Forår 2012

Rolf Fagerberg. Forår 2012 Forår 2012 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: DM502 og DM503 Timer: 50% forelæsninger, 50% øvelser Forudsætninger: DM502 og DM503 Eksamenform: Skriftlig eksamen: Timer: 50% forelæsninger,

Læs mere

Projekt arbejde til kurset Advanced Models and Programs, SASP-AMP 2008 Poul Brønnum, IT Universitetet i København, Maj 2008. Indholdsfortegnelse

Projekt arbejde til kurset Advanced Models and Programs, SASP-AMP 2008 Poul Brønnum, IT Universitetet i København, Maj 2008. Indholdsfortegnelse Udvidelse af MicroC compileren til at kunne håndtere struct- og union typer samt switch-, break- og continue statement. Yderligere er ovenstående konstruktioner anvendt til at indføre malloc og free kald

Læs mere

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Forelæsning Uge 4 Mandag

Forelæ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 mere

SWC eksamens-spørgsmål. Oversigt

SWC eksamens-spørgsmål. Oversigt SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition

Læs mere

Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 - forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)

Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 - forstå datastrukturer og algoritmer (teoretisk forståelse og intuition) Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 Datastrukturer og algoritmer Henning Christiansen henning@ruc.dk http://www.ruc.dk/~henning Formål: at kunne - forstå datastrukturer og algoritmer

Læs mere

It og informationssøgning Forelæsning oktober 2006 Jakob Grue Simonsen. Klasser

It og informationssøgning Forelæsning oktober 2006 Jakob Grue Simonsen. Klasser It og informationssøgning Forelæsning 7 25. oktober 2006 Jakob Grue Simonsen Klasser Downey, Elkner & Meyers: Chapt. 12-14 Andersen & Simonsen: kap. 7 Vi har tidligere set, at Python tilbyder en række

Læs mere

Syntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik

Syntaks 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 mere

Greenfoot En kort introduktion til Programmering og Objekt-Orientering

Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot er et computer-program, som kan benyttes til at skrive andre computer-programmer, i et programmeringssprog kaldet Java.

Læs mere

Forelæsning Uge 2 Mandag

Forelæ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 mere

Exceptions i Delphi. Try except

Exceptions 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 mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Kontraktbaseret Design. Anker Mørk Thomsen

Kontraktbaseret Design. Anker Mørk Thomsen Kontraktbaseret Design Anker Mørk Thomsen 5. marts 2014 -2 Kontraktbaseret Design Anker Mørk Thomsen 1. udgave ISBN: 9788740491500 Forord Bogen er blevet til gennem undervisning i faget Kontraktbaseret

Læs mere

Eksamens spørgsmål Software Construction. Objekter. Spørgsmål 1: Januar Giv en beskrivelse af Objekt-begrebet og deres brug

Eksamens spørgsmål Software Construction. Objekter. Spørgsmål 1: Januar Giv en beskrivelse af Objekt-begrebet og deres brug Spørgsmål 1: Objekter Giv en beskrivelse af Objekt-begrebet og deres brug Under eksaminationen forventes du at forklare: Hvad er en type og en variabel? Hvordan erklæres en variabel? Hvad forstås ved en

Læs mere

Principper for Samtidighed og Styresystemer

Principper for Samtidighed og Styresystemer Principper for Samtidighed og Styresystemer kursusintroduktion og Introduktion til Styresystemer René Rydhof Hansen Februar 2008 PSS 08 (Forelsning 00) Kursus intro./intro. styresystemer Februar 2008 1

Læs mere

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1. Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:

Læs mere

Gödel: Über formal unentschiedbare Sätze der Principia Mathematica und verwandter Systeme I, 1931

Gödel: Über formal unentschiedbare Sätze der Principia Mathematica und verwandter Systeme I, 1931 Kommentar til 1 Gödel: Über formal unentschiedbare Sätze der Principia Mathematica und verwandter Systeme I, 1931 Denne afhandling af den 24-årige Kurt Gödel er blevet en klassiker. Det er vist den eneste

Læs mere

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer: Sortering Sortering Input: Output: n tal De n tal i sorteret orden Eksempel: Kommentarer: 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Sorteret orden kan være stigende eller faldende. Vi vil i dette kursus

Læs mere

Noter til C# Programmering Iteration

Noter til C# Programmering Iteration Noter til C# Programmering Iteration Programflow Programmer udfører det meste af deres arbejde vha. forgrening og løkker. Løkker Mange programmeringsproblemer kan løses ved at gentage en handling på de

Læs mere

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater Design by Contract Bertrand Meyer 1986 Design and Programming by Contract Michael R. Hansen & Anne Haxthausen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design

Læs mere

Rekursion C#-version

Rekursion C#-version Note til Programmeringsteknologi Akademiuddannn i Informationsteknologi Rekursion C#-version Finn Nordbjerg 1 Rekursion Rekursionsbegrebet bygger på, at man beskriver noget ved "sig selv". Fx. kan tallet

Læs mere

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002 Databaser, efterår 2002 Databasesystemer Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk

Læs mere

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater Design by Contract Design and Programming by Contract Anne Haxthausen ah@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design by Contract er en teknik til at specificere

Læs mere

15 Arrays og Lister samt Stakke og Køer.

15 Arrays og Lister samt Stakke og Køer. 15 Arrays og Lister samt Stakke og Køer. Introduktion til arrays. Algebraisk specifikation af arrays. Arrays i Eiffel. Introduktion til lister og kædede lister. Fælles egenskaber ved stakke og køer. Algebraisk

Læs mere

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign 28 Algoritmedesign. Algoritmeskabelon for Del og Hersk. Eksempler på Del og Hersk algoritmer. Binær søgning i et ordnet array. Sortering ved fletning og Quicksort. Maksimal delsums problem. Tætteste par

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (i mandags) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

Læs mere

Pointers. Programmering i C. 11. december Lektion 5. Eksempel: denne plads. Getting the address of a variable:

Pointers. Programmering i C. 11. december Lektion 5. Eksempel: denne plads. Getting the address of a variable: Programmering i C Lektion 5 11. december 2008 Pointers 1 Pointers 2 Referenceparametre 2 / 23 Husk: En variabel er en navngiven plads i computerens lager. En pointer er en pegepind der peger på denne plads.

Læs mere

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion Polymorfi Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type Coercion Tvangskonvertering (forfremmelse og begrænsning) Oversigt Abstrakt klasse abstrakt

Læs mere

Introduktion. Philip Bille

Introduktion. Philip Bille Introduktion Philip Bille Plan Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3 Algoritmer og datastrukturer Hvad er det? Algoritmisk problem: præcist defineret relation mellem

Læs mere

DM507 Algoritmer og datastrukturer

DM507 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 mere