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

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

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

Å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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Hvad er formel logik?

Hvad er formel logik? Kapitel 1 Hvad er formel logik? Hvad er logik? I daglig tale betyder logisk tænkning den rationelt overbevisende tænkning. Og logik kan tilsvarende defineres som den rationelle tænknings videnskab. Betragt

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

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

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

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

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

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

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

Metaklasser i Smalltalk.

Metaklasser i Smalltalk. 8 Metaklasser i Smalltalk. Motivation Metodeopslag Simple metaklasser Mere udviklede metaklasser Klasse- og metaklassehierarkiet Instantiering og initialisering Skabelse af klasser og metoder Oversigt

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

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

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

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

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

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

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

1 Opsumering fra tidligere. 2 Dagsorden 3 BIMS. 4 Programtilstande. Statements/kommandoer (Stm) i bims. 3.1 Abstrakt syntaks for bims

1 Opsumering fra tidligere. 2 Dagsorden 3 BIMS. 4 Programtilstande. Statements/kommandoer (Stm) i bims. 3.1 Abstrakt syntaks for bims 1 Opsumering fra tidligere Hvis A er kontekstfrit, S er der et p > 0 s Alle s A hvor s p kan splittes op som s = uvxyz så argument 1-3 holder A er ikke kontekstfrit, hvis for ethvert bud på p kan findes

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

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

Introduktion til prædikatlogik

Introduktion til prædikatlogik Introduktion til prædikatlogik Torben Braüner Datalogisk Afdeling Roskilde Universitetscenter 1 Plan Symbolisering af sætninger Syntaks Semantik 2 Udsagnslogik Sætningen er den mindste syntaktiske enhed

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder

Læs mere

Programmering i C. Kursusintroduktion. Lektion september Målgruppe 2 Indhold 3 Form 4 Materiale. Målgruppe Indhold Form Materiale

Programmering i C. Kursusintroduktion. Lektion september Målgruppe 2 Indhold 3 Form 4 Materiale. Målgruppe Indhold Form Materiale Programmering i C Lektion 1 16. september 2008 Målgruppe Indhold Form Materiale Kursusintroduktion 1 Målgruppe 2 Indhold 3 Form 4 Materiale 2 / 21 Målgruppe Indhold Form Materiale Folk der har styr på

Læs mere

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer BRP 13.9.2006 Tal. Om computer-repræsentation og -manipulation. Logaritmer 1. Opgaverne til i dag dækker det meste af stoffet 2. Resten af stoffet logaritmer binære træer 3. Øvelse ny programmeringsopgave

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

PHP 3 UGERS FORLØB PHP, MYSQL & SQL PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at

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

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer

Læs mere

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42 Slide 1/42 Hvad er matematik? 1) Den matematiske metode 2) Hvad vil det sige at bevise noget? 3) Hvor begynder det hele? 4) Hvordan vælger man et sæt aksiomer? Slide 2/42 Indhold 1 2 3 4 Slide 3/42 Mængder

Læs mere

Rekursion og dynamisk programmering

Rekursion og dynamisk programmering Rekursion og dynamisk programmering Datastrukturer & Algoritmer, Dat C Forelæsning 12/10-2004 Henning Christiansen Rekursion: at en procedure kalder sig selv eller et antal metoder kalder hinanden gensidigt.

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

Koordinering. dopsys

Koordinering. dopsys Koordinering At indføre flertrådethed (1) når tråde tages i brug opstår typisk konflikter (et velkendt eksempel er errno ) 2 At indføre flertrådethed (2) en del konflikter kan afhjælpes med thread-local

Læs mere

Oversættere Skriftlig eksamen onsdag d. 19. april 2006

Oversættere Skriftlig eksamen onsdag d. 19. april 2006 Københavns Universitet Naturvidenskabelig Embedseksamen Oversættere Skriftlig eksamen onsdag d. 19. april 2006 Eksamenstiden er to timer. Opgavernes vægt i procent er angivet ved hver opgave. Den skriftlige

Læs mere

Forelæsning Uge 4 Torsdag

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

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

Yderligere udvidelser af oversætter for Minimal

Yderligere udvidelser af oversætter for Minimal Yderligere udvidelser af oversætter for Minimal Karakteropgave på kurset Oversættere Vinter 2005 1 Introduktion Dette er den anden del af rapportopgaven på Oversættere, vinter 2005. Opgaven skal løses

Læs mere

Noter til C# Programmering Selektion

Noter til C# Programmering Selektion Noter til C# Programmering Selektion Sætninger Alle sætninger i C# slutter med et semikolon. En sætning kontrollerer sekvensen i programafviklingen, evaluerer et udtryk eller gør ingenting Blanktegn Mellemrum,

Læs mere

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002 Databaser, efterår 2002 ER-modellen 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

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Skoleåret 2016/17 Institution Hansenberg Gymnasium Uddannelse Fag og niveau Lærer Hold htx Programmering,

Læs mere

Videregående Programmering for Diplom-E Noter

Videregående Programmering for Diplom-E Noter Videregående Programmering for Diplom-E Noter 1. Uddelegering Ét af de væsentlige principper i objektorienteret programmering er, at enhver klasse selv skal kunne "klare ærterne". Enhver klasse skal altså

Læs mere

Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner

Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner Forelæsning 4.1 Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner finden findalle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Afleveringsopgave

Læs mere

Introduktion. Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3. Philip Bille

Introduktion. Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3. Philip Bille Introduktion Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3 Philip Bille Introduktion Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3 Algoritmer

Læs mere

Processer og tråde. dopsys 1

Processer og tråde. dopsys 1 Processer og tråde dopsys 1 Motivation.. parallelle processer udnytter hardwaren bedre: Batch operativsystemer (50 erne) hhv. små systemer: Multiprogrammering og time-sharing (fra 60 erne og frem): dopsys

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

Læs mere

Introduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal

Introduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal Philip Bille Algoritmer og datastrukturer Algoritmisk problem. Præcist defineret relation mellem input og output. Algoritme. Metode til at løse et algoritmisk problem. Beskrevet i diskrete og entydige

Læs mere

20 Filer og indekser.

20 Filer og indekser. 20 Filer og indekser. Filbegrebet. Sekventielle og direkte filer. Filer i Eiffel. Eksternt dataområde for objekter. Lageradminstration og postlængder. Indeksbegrebet. Konsekutiv, kædet og vilkårlig organisering.

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Onsdag den 0. juni 009, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)

Læs mere

Kursuskatalog 2012 TwinCAT Basic og Extended

Kursuskatalog 2012 TwinCAT Basic og Extended Kursuskatalog 2012 TwinCAT Basic og Extended Basic Modul 1 Software Kursus K120101 K120102 K120103 K120104 K120105 K120106 Dato 31.1-1.2.12 6.-7.3.12 8.-9.5.12 21.-22.8.12 2.-3.10.12 20.-21.11.12 Modul

Læs mere

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser.

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. 25 Sortering III. Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. Sortering ved fletning, med fire bånd, i én fase (balanceret fletning). Polyfase fletning med tre bånd. Generaliseret

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4 DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens

Læs mere

Programmering i C. Kurt Nørmark 2005 Institut for Datalogi, Aalborg Universitet. Sammendrag

Programmering i C. Kurt Nørmark 2005 Institut for Datalogi, Aalborg Universitet. Sammendrag Programmering i C Kurt Nørmark 2005 Institut for Datalogi, Aalborg Universitet Sammendrag Dette er et undervisningsmateriale om introducerende programmering i et imperativt sprog. Mere konkret er det et

Læs mere

1. Variable og assignment

1. Variable og assignment 1. Variable og assignment Dette er starten af det faglige indhold i første lektion af 'Programmering i C'. Før dette følger et antal mere praktiske slides, som vi ikke har medtaget i denne 'tematiske udgave'

Læs mere