Att referera till objekt

Storlek: px
Starta visningen från sidan:

Download "Att referera till objekt"

Transkript

1 Att referera till objekt En algoritm för generering av refererande uttryck 729G43: Artificiell intelligens Examinator: Arne Jönsson 2

2 Innehållsförteckning 1. Inledning Bakgrund Syfte Frågeställning Tidigare forskning och avgränsningar Metod Struktur Huvuddel Bakgrundsbeskrivning Algoritmen Implementering Kunskapsbasen Användarmodellen Funktionerna Exempelkörning Resultat och analys Avslutande diskussion Referenser Bilaga EN ALGORITM FÖR GENERERING AV REFERERANDE UTTRYCK 1. Inledning 1.1 Bakgrund I genereringen av naturligt språk skiljer man på besluten mellan vad som ska sägas och hur det ska sägas. De två faserna där dessa beslut fattas brukar kallas för textplanering och lingvistiskt förverkligande där textplaneringen rör beslut om vad som ska sägas. Detta arbete rör beslut om en nominalfras semantiska struktur som är nödvändiga innan det lingvistiska förverkligandet kan ske. Huruvida uppdelningen mellan textplanering och lingvistiskt förverkligande är så självklar som det låter kan ifrågasättas (vilket har gjorts), men det är utanför ramen för detta arbete. (Dale, 1992, ss. 6-10) 1.2 Syfte Arbetets syfte är att få en djupare förståelse för hur ett system för generering av naturligt språk bestämmer den semantiska formen av en nominalfras som refererar till ett specifikt objekt i en angiven kontext, samt att implementera en algoritm för en sådan generering. 1.3 Frågeställning Den fråga som rapporten ämnar svara på är hur man med en algoritm för generering av refererande uttryck kan skapa nominalfraser som tillfredsställer de principer som finns för dess konstruktion i naturligt språk så att de identifierar en avsedd referent i en angiven kontext för en mänskliga mottagare. 1.4 Tidigare forskning och avgränsningar Den litteratur som står som grund för detta arbete är Robert Dales bok Generating Referring Expressions (1992) som beskriver EPICURE, ett system för generering av naturligt språk, med fokus på refererande nominalfraser. EPICURE är designat för att generera en sammanhängande diskurs från specifikationer av planerade handlingar och består av många olika delar. Generering av refererande nominalfraser är bara en del i detta system. En del i EPICURE s generering av nominalfraser är en algoritm framtagen av Dale och Reiter (1995) som utifrån en given kunskapsbas och modell över mottagarens kunskap 4

3 bestämmer den semantiska struktur som en nominalfras bör ha. Detta för att följa de principer som finns för att en mänsklig mottagare ska kunna identifiera den avsedda referenten. Algoritmen har även implementerats som en del av ett annat system för generering av naturligt språk kallat IDAS. Den är även där en del av textplaneringen som utgör den semantiska formen av ett uttryck och är känsligt för mottagarens kunskap (Reiter, Mellish, & Levine, 1994). Detta arbete har avgränsats till att förklara och implementera den algoritm som Dale och Reiter (1995) tagit fram och kommer därför inte att ge någon vidare beskrivning av de system som tagits upp ovan. Den nyfikne läsaren hänvisas därför till de verk som refereras till. 1.5 Metod Implementeringen av algoritmen har skrivits i programspråket Python (2.7) och kunskapsbasen som den använder är en enkel form av kunskapsrepresentation i dictionaries. Algoritmen har testats inom en enkel domän vilken också används som exempel genom rapporten. 1.6 Struktur Till att börja med ges en bakgrundsbeskrivning till refererande nominalfraser och de principer som finns för dess konstruktion i avsnitt 2.1. I avsnitt 2.2 beskrivs algoritmen och de funktioner som behövs. Sedan följer min implementering av algoritmen i 2.3 med beskrivning av kunskapsbasen (2.3.1), användarmodellen (2.3.2), funktionerna (2.3.3) och till sist en exempelkörning (2.3.4). En kort analys av resultatet ges i avsnitt 4 och en avslutande diskussion i avsnitt Huvuddel 2.1 Bakgrundsbeskrivning En nominalfras som har som syfte att identifiera ett objekt för en mottagare har som beskrivet av Dale och Reiter (1995, s. 236) ett kommunikativt mål att ge en särskiljande beskrivning av objektet. Den bör alltså vara en korrekt beskrivning av det objekt som den refererar till, men inte av något annat objekt i den aktuella kontexten. Kontexten kan definieras som alla objekt som mottagaren antas kunna uppmärksamma. För att särskilja ett objekt från de resterande objekten i kontexten definieras en upprättning kontrasterande objekt som helt enkelt är alla objekt i kontexten förutom den avsedda referenten. En refererande nominalfras som uppnår sitt kommunikativa mål består av olika attributvärden som var och en utesluter de kontrasterande objekten och på så sätt hjälper till att identifiera den avsedda referenten för mottagaren. Exempelvis skulle båda nominalfraserna den svarta hunden och den lilla hunden vara tillräckligt för att identifiera en liten svart hund i en kontext där de kontrasterande objekten är en stor vit hund och en liten svart katt. I detta fall skulle den lilla svarta hunden vara en onödigt lång nominalfras för att identifiera den avsedda referenten. (Dale & Reiter, 1995, ss ) Dale (1992, s. 117) beskriver tre principer för att konstruera refererande nominalfraser, vilka kan liknas med de Griceanska maximerna, som han kallar principerna för känslighet(eng, sensitivity), effektivitet(eng, efficiency) och tillräcklighet(eng, adequacy). Principen för känslighet innebär att talaren bör vara känslig för sina mottagare vilket i konstruktionen av nominalfraser kräver att talaren beaktar vad mottagaren förmodas veta (Dale, 1992, s. 117). En nominalfras som den svarta labradoren kan vara tillräcklig för att identifiera en av flera hundar i en kontext där det bara finns en svart labrador, men om användaren inte (a) känner till att labrador är en hundras eller (b) inte kan skilja på labradorer och andra hundraser, är uttrycket inte tillräckligt för att mottagaren ska kunna identifiera den avsedda referenten. Principen för tillräcklighet innebär att nominalfrasen bör identifiera den avsedda referenten otvetydigt och förse mottagaren med tillräcklig information för att fungera enligt det refererande syftet (Dale, 1992, s ). Om en talare skulle be en mottagare att hämta min svarta jacka kommer nominalfrasen endast att vara tillräcklig om mottagaren tidigare fått 6

4 tillräckligt med information för att hitta jackan. Om jackan inte är uppenbart synlig för mottagaren skulle det kanske vara nödvändigt att säga min svarta jacka i garderoben i hallen för att tillfredsställa principen för tillräcklighet. För att principen för effektivitet ska tillfredsställas krävs att nominalfrasen som konstrueras inte innehåller mer information än nödvändigt för att uppfylla uppgiften. Detta är inte enbart för att spara tid utan även för att inte riskera att förvirra mottagaren. (Dale, 1992, s. 118) Konstruktionen av refererande nominalfraser enligt ovanstående beskrivning sker i naturligt språk utan att talaren behöver fundera särskilt mycket över vilka attributvärden som ska inkluderas för att korrekt beskriva den avsedda referenten. Dale och Reiter (1995, s. 247) argumenterar för att ett system som har som syfte att generera naturligt språk bör generera uttryck som liknar sådana uttryck konstruerade av mänskliga talare. Detta eftersom den mänskliga mottagaren förväntar sig stöta på uttryck av just denna sort. Samtidigt är de nominalfraser som mänskliga talare konstruerar inte optimala enligt de principer som tidigare nämnts. Många gånger inkluderar de onödiga attributvärden i sina nominalfraser och bryter på så vis mot principen för effektivitet. Detta kan bero på att talaren försöker göra det så enkelt som möjligt för mottagaren att identifiera den avsedda referenten, eller för att talaren påbörjar sitt yttrande innan denne skannat av hela uppsättningen med kontrasterande objekt. I ett sådant fall kan inte talaren som redan yttrat ett attributvärde, som vid närmare observation av kontexten visar sig vara överflödigt, ta tillbaka det, utan kanske snarare lägger till ett mer relevant attributvärde för det refererande syftet. Det är inte osannolikt att en person skulle referera till en svart stol med uttrycket den svarta stolen i en kontext där de enda kontrasterande objektet är en vit pall. Stolen skulle i en sådan situation vara en tillräcklig nominalfras för att identifiera den avsedda referenten, men ett objekts färg kan vara mer omedelbart märkbar än dess typ. Därför kan nominalfrasen den svarta stolen konstrueras antingen för att talaren påbörjar yttrandet med att specificera färgen innan denne särskiljer på stol och pall, eller också väljer talaren att uttrycka sig så i tron att det gör det lättare för mottagaren att identifiera objektet. Detta menar Dale och Reiter (1995, ss ) visar på att mänskliga mottagare i vissa fall inte kommer att göra oönskade tolkningar av onödiga attribut, som färg i 7 detta fall, men påpekar att det ännu saknas tillräckligt med lingvistisk och psykolingvistisk kunskap för att förutsäga när brott mot principerna inte ställer till med problem. (Dale & Reiter, 1995, ss ) När det kommer till att konstruera nominalfraser för att beskriva ett objekt intresserar sig Dale och Reiter (1995, ss ) för frågor som rör val av attribut då fler än ett attribut fungerar som ett tillräckligt beskrivande attribut framför ett huvudord. De hypoteser som de presenterar angående talat språk är följande: 1. Mänskliga talare föredrar att använda adjektiv som beskriver visuellt märkbara egenskaper så som storlek, form och färg. 2. Mänskliga mottagare har ibland svårt att avgöra om ett objekt tillhör en viss klass, till exempel hundras som nämnts i ett tidigare exempel. Om det finns något tvivel om huruvida mottagaren kan skilja på objekt i specialiserade klasser är det bättre att systemet lägger till ett explicit attribut i nominalfrasen. 3. Mänskliga talare verkar föredra att använda relativa adjektiv och mänskliga mottagare verkar ha lättare för att förstå dem. Till exempel den långa skruven istället för femcentimetersskruven. 2.2 Algoritmen Dale och Reiter (1995, s. 253) föreslår en algoritm för att bestämma vilka attribut som ska finnas med i en nominalfras som refererar till ett specifikt objekt i en angiven kontext. Algoritmen kräver av systemets kunskapsbas att varje objekt karaktäriseras utifrån en uppsättning attribut och deras värden. Ett attribut och dess värde representeras som ett par som kan ses som en egenskap hos ett objekt. Varje objekt har en typ som ett av sina attribut. Denna typ av attribut är egenskaper som typiskt sett representeras av ett substantiv, till exempel hund. Kunskapsbasen kan också organisera vissa attribut taxonomiskt så att labrador är en underkategori till hund som i sin tur är en underkategori till djur. (Dale & Reiter, 1995, s. 254) Algoritmen itererar sekventiellt genom en lista med attribut och lägger till ett attribut och dess värde till den beskrivning som ska konstrueras om det utesluter något av de kontrasterande objekten som inte redan uteslutits och avslutar iterationen när en särskiljande beskrivning 8

5 konstruerats. För att algoritmen ska fungera med den kunskapsbas den appliceras på krävs följande gränssnittsfunktioner och variabler (Dale & Reiter, 1995, ss. 247, 254): MoreSpecificValue(object, attribute, value): Funktionen returnerar ett nytt mer specifikt värde för attributet om det finns i taxonomin från systemets perspektiv. BasicLevelValue(object, attribute): Funktionen returnerar det mest grundläggande värdet för ett attribut. UserKnows(object, attribute-value pair): Funktionen returnerar True om mottagaren vet eller enkelt kan avgöra att attribut-värdeparet kan appliceras på objektet; False om mottagaren vet eller enkelt kan avgöra att attribut-värdeparet inte kan appliceras på objektet; Unknown om mottagaren inte har kunskapen att avgöra om det går att applicera på objektet eller inte. PreferredAttributes: En global variabel innehållande de attribut som mottagaren föredrar listade i den ordning de prioriteras. Som input tar algoritmen en symbol r som representerar den avsedda referenten, C som är en lista innehållande de kontrasterande objekten (de objekt som uttrycket inte ska referera till) och P som motsvarar PreferredAttributes. Algoritmen returnerar sedan en lista med attributvärdepar som representerar det semantiska innehållet av den nominalfras som ska genereras. (Dale & Reiter, 1995, ss ) Algoritmen består av tre funktioner: MakeReferringExpression(r, C, P): Algoritmens topfunktion som testar attribut i den ordning som specificerats i P och returnerar en lista med attribut-värdepar som specificerar ett refererande uttryck för den avsedda referenten r. Ett värde för objektets typ inkluderas alltid i denna lista även om det inte har någon särskiljande funktion. FindBestValue(r, attribute, initial-value): Funktionen tar ett attribut och ett initialt värde och returnerar ett värde som utesluter så många kontrasterande objekt som möjligt samtidigt som det är så nära 9 det initiala värdet som möjligt i taxonomin. Detta görs genom att rekursivt titta på mer specifika värden för attributet och stanna när det mest specifika värdet som är känt för mottagaren är nått och väljer det värde som utesluter flest kontrasterande objekt som bästa värde. När två värden av olika specificeringsnivå utesluter lika många element, väljs det minst specifika värdet. RulesOut(attribute, value): Tar in ett attribut-värdepar och returnerar en lista med de objekt av de kvarvarande kontrasterande objekten som utesluts av attribut-värdeparet. 2.3 Implementering En implementering av algoritmen som beskrivs ovan gjordes för detta arbete i Python 2.7. Nedan ges en kort beskrivning av arbetets delar samt algoritmens topfunktion MakeReferringExpression. För fullständig kod se bilaga Kunskapsbasen Kunskapsbasen (kb) är en global variabel som består av ett dictionary där varje nyckel representerar ett objekt vars värde också är ett dictionary över objektets olika attribut. Om ett attribut har mer en ett värde representeras de i ytterligare ett dictionary som är värdet för den nyckel som representerar attributet. Det mest grundläggande värdet är då nyckel för det mer specifika värdet. En stor svart labrador representeras då som i exemplet nedan där obj är en nyckel som representerar objektet i kunskapsbasen: Exempel: 'obj':{'type':{'dog':'labrador'}, 'color':'black', 'size':'big'} Användarmodellen Användarmodellen (uk) är en global variabel som är ett dictionary över de attribut och värden som användaren (eller mottagaren) känner till. Till exempel: uk = {'type':['dog', 'cat', 'chihuahua'], 'color': ['black', 'white'], 'size':['big', 'small']} 10

6 De olika värden som ett attribut kan ha representeras här i en lista även om ett värde är underkategori till ett annat som hund och chihuahua Funktionerna MoreSpecificValue, BasicLevelValue och UserKnows använder sig av kunskapsbasen och användarmodellen för att hitta de värden som ska returneras. MakeReferringExpression, FindBestValue och RulesOut fungerar som beskrivits tidigare och anropar MoreSpecificValue, BasicLevelValue och UserKnows för att få tillgång till information som representeras i kunskapsbasen och användarmodellen. Attributvärdepar representeras som tupler där attributet står först, till exempel ( type, dog ). utesluter, så för varje objekt x i RulesOut(a, V), tas x bort från listan C. Om C är en tom lista (if C == []:), dvs när alla kontrasterande objekt har uteslutits, returneras listan L om ett av attribut-värdeparen avp har attributet typ (avp[0] == type ), annars läggs ett attributvärdepar för attributet typ till i listan L när den returneras Exempelkörning En körning av algoritmen med de globala variablerna kb, uk, r, C, P definierade som i figur 2 ger den output som visas i figur 3: Figur 2: Tilldelning av globala variabler Figur 1: Funktionen MakeReferringExpression Ovan (figur 1) är funktionen MakeReferringExpression som tar in ett objekt (obj) som ska refereras till, C som är en lista med de kontrasterande objekten och P som är listan över den ordning efter vilken attributen prioriteras. För varje attribut a i P tilldelas variabeln V ett värde genom att anropa FindBestValue(obj, a, BasicLevelValue(obj, a)). Om attributet a och värdet V utesluter något av de kontrasterande objekten (if RulesOut(a, V)!= None), läggs attribut-värdeparet (a, V) till i listan L. RulesOut returnerar en lista med alla objekt som (a, V) 11 Figur 3: Output givet de globala variablerna i figur 2 Eftersom obj1 är det enda objekt av typen chihuahua är det ett tillräckligt attributvärde för att referera till objektet när mottagaren känner till hundrasen chihuahua. Om mottagaren inte kan känna igen en chihuahua (se figur 4) kommer algoritmen att returnera en lista med attributvärdepar som i figur 5. 12

7 Figur 4: användarmodell där 'chihuahua' tagits bort från kända attributvärden Figur 5: Output för obj1 när mottagaren inte känner till 'chihuahua' 3. Resultat och analys Algoritmen är effektiv i genereringen av attributvärden för nominalfraser som följer de principer som tagits upp i tidigare avsnitt. Den är snabb då körtiden är linjär med antalet kontrasterande objekt och oberoende av antalet potentiella attribut. Den anpassas bra till mottagarens preferenser och kunskap med listan P över prefererade attribut och funktionen UserKnows som är enkla sätt att se till att algoritmen genererar uttryck som passar den mänskliga mottagaren. (Dale & Reiter, 1995, s. 260) Trots att algoritmen gör det möjligt att anpassa ett system för naturlig språkgenerering efter mottagarens kunskap och preferenser är det en utmaning att modellera just denna kunskap. Eftersom mänskliga talare och mottagare, som tidigare nämnts, ofta föredrar relativa adjektiv före absoluta attributvärden, uppstår problemet om hur dessa ska lagras. Dale och Reiter (1995) föreslår att kunskapsbasen skulle kunna lagra absoluta värden, som till exempel mått för attributet storlek och att algoritmen sedan översätter detta till relativa attributvärden givet den aktuella kontexten. Detta skulle göra det möjligt för algoritmen att avgöra de relativa värdena för objekten i förhållande till varandra, då ett objekt som kan anses stort i en kontext är litet i en annan. Algoritmen är enkel att applicera i olika domäner och ställer inget särskilt krav på att kunskapsbasen ska vara av en viss datatyp då kunskap hämtas från kunskapsbasen via de gränssnittsfunktioner som finns. För detta arbete gjordes valet att lagra kunskap i dictionaries. Detta gjordes för att det gör det enkelt att redigera och för en överblick över kunskapsbasens innehåll när man jobbar med väldigt små datamängder. Algoritmen kan appliceras i ett system där kunskap lagras på ett annat vis endast genom att ändra på de gränssnittsfunktioner via vilka kunskapen hämtas (MoreSpecificValue, BasicLevelValue och UserKnows)

8 4. Avslutande diskussion Avslutningsvis har arbetets syfte som var att förklara och implementera en algoritm för generering av refererande uttryck uppnåtts och en del frågor som rör genereringen av nominalfraser har berörts. Exempel på hur en körning av algoritmen i en enkel domän ser ut har presenterats och utfallen tillfredsställde de principer som beskrevs i avsnitt 2.1. Beroende på vilken domän och vilken typ av system som algoritmen används i kan frågan om hur man modellerar mottagarens kunskap vara svårlöst. Eftersom det krävs en vetskap om mottagarens kunskap för att algoritmen ska generera relevanta uttryck är det viktigt att fundera över vilka mottagarna är och hur deras kunskap bör representeras. En utvecklingsmöjlighet för algoritmen skulle precis som Dale och Reiter (1995) nämner kunna vara att göra så att algoritmen kan ta absoluta attributvärden från en kunskapsbas och översätta dem till relativa värden. Referenser Dale, R. (1992). Generating Referring Expressions: Constructing descriptions in a domain of objects and processes. Cambridge: MIT Press. Dale, R., & Reiter, E. (1995). Computational Interpretations of the Gricean Maxims in the Generation of Referring Expressions. Cognitive Science 18, Reiter, E., Mellish, C., & Levine, J. (1994). Automatic Generation of Technical Documentation

9 Bilaga 17 18

10 19 20

Artificiell Intelligens Lektion 4

Artificiell Intelligens Lektion 4 Frames Filmdomän Artificiell Intelligens Lektion 4 Frames (Lab4) Resolution & unifiering Frames system Lagrar hierarkisk information Attribut lagras i attributvärdesstrukturer Attribut kan ha egenskaper

Läs mer

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad 1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen

Läs mer

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00 1 ( 7) Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00 Tillåtna hjälpmedel: Dator, penna, papper, linjal, suddgummi, godkänd(a) bok/böcker/kompendier (ej anteckningar,

Läs mer

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Introduktion till programmering SMD180. Föreläsning 9: Tupler Introduktion till programmering Föreläsning 9: Tupler 1 1 Sammansatta datatyper Strängar Sekvenser av tecken Icke muterbara Syntax: "abcde" Listor Sekvenser av vad som helst Muterbara Syntax: [1, 2, 3]

Läs mer

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

Läs mer

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:

Läs mer

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo,

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo, 729G74 IT och programmering, grundkurs Tema 3. Föreläsning 2 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Repetition: syntax-quiz Fler for-loopar (över listor och dictionaries) range() Nästlade strukturer

Läs mer

Klasser och objekt, referenser Grundkurs i programmering med Python

Klasser och objekt, referenser Grundkurs i programmering med Python Hösten 2009 Dagens lektion Klasser och objekt Referenser 2 Klasser och objekt 3 KLASSER OCH OBJEKT Relaterat data Information om en fyrkant Bredd Höjd Färg 4 KLASSER OCH OBJEKT Egna datatyper Skapa en

Läs mer

TDDE44 Programmering, grundkurs

TDDE44 Programmering, grundkurs TDDE44 Programmering, grundkurs Föreläsning 5 Jody Foo, jody.foo@liu.se Föreläsning 5 & 6 Laboration 3: En egen pokedex data från webben Ny datatyp: dictionary Mer om dataabstraktion Nästlade datastrukturer

Läs mer

Regression med Genetiska Algoritmer

Regression med Genetiska Algoritmer Regression med Genetiska Algoritmer Projektarbete, Artificiell intelligens, 729G43 Jimmy Eriksson, jimer336 770529-5991 2014 Inledning Hur många kramar finns det i världen givet? Att kunna estimera givet

Läs mer

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim  Agenda (halvdag) Objektorienterad programmering Föreläsning 8 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda (halvdag) Objektorienterad programutveckling Algoritmer Algoritmkonstruktionerna Relationer

Läs mer

Grammatisk teori III Praktisk analys

Grammatisk teori III Praktisk analys Grammatisk teori III Praktisk analys 1. Satser Till skillnad från fraser har satser inga givna strukturella huvuden. Olika teorier gör olika antaganden om vad som utgör satsens huvud. Den lösning som förespråkas

Läs mer

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo 729G75: Programmering och algoritmiskt tänkande Tema 1. Föreläsning 1 Jody Foo Föreläsningsöversikt Kursinfo / Om kursen Algoritmer Objektorienterad programmering i praktiken terminologi använda objekt

Läs mer

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00 1 ( 7) Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00 Tillåtna hjälpmedel: Dator, penna, papper, linjal, suddgummi, godkänd(a) bok/böcker/kompendier

Läs mer

1 Comparator & Comparable

1 Comparator & Comparable 1 Comparator & Comparable 1.1 Implementation av Comparable Att implementera Comparable innebär att man gör objekt av sin klass jämförbara med andra och att det därmed antas existera en naturlig ordning

Läs mer

Sätt att skriva ut binärträd

Sätt att skriva ut binärträd Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer

Läs mer

Programmering = modellering

Programmering = modellering Programmering = modellering Ett datorprogram är en modell av en verklig eller tänkt värld. Ofta är det komplexa system som skall modelleras I objektorienterad programmering består denna värld av ett antal

Läs mer

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller

Läs mer

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo 729G75: Programmering och algoritmiskt tänkande Tema 1, föreläsning 1 Jody Foo Föreläsningsöversikt Kursinfo / Om kursen Algoritmer Objektorienterad programmering i praktiken terminologi använda objekt

Läs mer

Introduktion till programmering D0009E. Föreläsning 9: Tupler och dictionaries

Introduktion till programmering D0009E. Föreläsning 9: Tupler och dictionaries D 0 0 0 9 E Introduktion till programmering D0009E Föreläsning 9: Tupler och dictionaries 1 D 0 0 0 9 E Sammansatta datatyper Strängar Sekvenser av tecken Icke muterbara Syntax: "abcde" Listor Sekvenser

Läs mer

Python. Datatyper. Mer om datatyper. Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam!

Python. Datatyper. Mer om datatyper. Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam! Python Mer om datatyper Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam! Datatyper Dictionaries - {1: camelot,2: shrubbery } Tupler - (1,2,3,) 1 Lite om strängar Strängar innehåller specialtecken

Läs mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,

Läs mer

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv

Läs mer

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python Repetition i Python 3 Exemplen fac Orginalet I Scheme använde vi rekursion för all slags repetition. Efterom Scheme är ett funktionellt språk återsänder alla språkkonstruktioner ett värde men i Python

Läs mer

729G06 Föreläsning 1 Objektorienterad programmering

729G06 Föreläsning 1 Objektorienterad programmering Översikt Formalia Vad är objektorienterad programmering 729G06 Föreläsning 1 Objektorienterad programmering Definieria klasser Skapa och använda objekt Annika Silvervarg Ciltab, IDA, Linköpings universitet

Läs mer

Fuzzy Logic. När oskarpa definitioner blir kristallklara. Åsa Svensson. Linköpings Universitet. Linköping

Fuzzy Logic. När oskarpa definitioner blir kristallklara. Åsa Svensson. Linköpings Universitet. Linköping Fuzzy Logic När oskarpa definitioner blir kristallklara Linköpings Universitet Linköping Sammanfattning I denna fördjupningsuppgift har jag fokuserat på Fuzzy Logic och försökt att beskriva det på ett

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 10 Anton Grensjö grensjo@csc.kth.se 9 november 2017 1 Idag En konstruktionsreduktion Fler bevis av NP-fullständighet 2 Teori Repetition Ett problem tillhör

Läs mer

729G04 Programmering och diskret matematik

729G04 Programmering och diskret matematik Tentamen 729G04, 2013-02-15 1(9) 729G04 Programmering och diskret matematik Tentamen 2013 02 15 kl 14.00 19.00 Tillåtna hjälpmedel: Dator, penna, papper, linjal, suddgummi, godkänd(a) bok/böcker Uppgifter:

Läs mer

Typsystem. Typsystem... Typsystem... Typsystem... 2 *

Typsystem. Typsystem... Typsystem... Typsystem... 2 * Typsystem Typsystem finns i alla programmeringsspråk. Avsikten med typsystem är att kontrollera att uttryck är säkra i den bemärkelsen att innebörden i operanderna är klar och inte är motsägelsefull och

Läs mer

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 1 Jody Foo,

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 1 Jody Foo, 729G74 IT och programmering, grundkurs Tema 3. Föreläsning 1 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Tema 3: Experiment Verktyget Python Vad kan man använda Python till? Python-paket Lite mer om

Läs mer

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09 Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09 1. Introduktion till webbprogrammering Webbprogrammering består av ett antal

Läs mer

Lek$on 3: Kunskapsrepresenta$on. Robin Keskisärkkä

Lek$on 3: Kunskapsrepresenta$on. Robin Keskisärkkä Lek$on 3: Kunskapsrepresenta$on Robin Keskisärkkä Översikt Laborationerna så här långt Genomgång av laboration 3 Uppgift Förberedelser Kunskapsrepresentation Framesteori Uppgi9 Implementera ett frames-system

Läs mer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik II 2018-10-19 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19 Typsystem Typsystem finns i alla programmeringsspråk. Avsikten med typsystem är att kontrollera att uttryck är säkra i den bemärkelsen att innebörden i operanderna är klar och inte är motsägelsefull och

Läs mer

Lek$on 4: Kunskapsrepresenta$on. Robin Keskisärkkä och Jonas Rybing

Lek$on 4: Kunskapsrepresenta$on. Robin Keskisärkkä och Jonas Rybing Lek$on 4: Kunskapsrepresenta$on Robin Keskisärkkä och Jonas Rybing Översikt Laborationerna så här långt Genomgång av Laboration 4 Uppgift Förberedelser Kunskapsrepresentation Framesteori Uppgi= Implementera

Läs mer

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Tentamen ID1004 Objektorienterad programmering October 29, 2013 Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.

Läs mer

Kopiering av objekt i Java

Kopiering av objekt i Java 1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom

Läs mer

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander F6 Objektorienterad design ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se långa ord AKTIVITETER I PROGRAMVARUUTVECKLING Iterativ utveckling Kravspecifikation Design Implementation Testning

Läs mer

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler 21-1-2 1 Dagens föreläsning Hur fungerar ett Lisp system intern struktur av symbolen, tal, listan pekare - delade strukturer - eq minneshantering fri lista - sophämtning/garbage collection stack Diverse

Läs mer

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

Tentamen TEN1 HI1029 2014-05-22

Tentamen TEN1 HI1029 2014-05-22 Tentamen TEN1 HI1029 2014-05-22 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha

Läs mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

Läs mer

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2012-06-04 Skrivtid: 1400-1700 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

TDDB96 Projekt: Object priming med visuell stimuli

TDDB96 Projekt: Object priming med visuell stimuli TDDB96 Projekt: Object priming med visuell stimuli Daniel Johansson danjo133@student.liu.se Rickard Jonsson ricjo400@student.liu.se 1. Sammanfattning Vad vi ville komma fram till i denna studie var huruvida

Läs mer

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18 TDDC74 Programmering: Abstraktion och modellering Datortenta - 017-10-7, kl 14-18 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis

Läs mer

Visual Basic, en snabbgenomgång

Visual Basic, en snabbgenomgång Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika

Läs mer

Föreläsning 9 Innehåll

Föreläsning 9 Innehåll Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon

Läs mer

Övningsuppgifter kapitel 8

Övningsuppgifter kapitel 8 Inst. för Systemteknik Introduktion till programmering (SMD 180), 5 p Övningsuppgifter kapitel 8 1. Listor är en viktig datatyp i Python. Hur definierar kursboken lista? Vad kallas de värden som tillsammans

Läs mer

Föreläsning 13 och 14: Binära träd

Föreläsning 13 och 14: Binära träd Föreläsning 13 och 14: Binära träd o Binärträd och allmänna träd o Rekursiva tankar för binärträd o Binära sökträd Binärträd och allmänna träd Stack och kö är två viktiga datastrukturer man kan bygga av

Läs mer

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner Lektion 4, del 1, kapitel 10 Funktioner i JavaScript Inlärningsmål Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner Introduktion

Läs mer

kl Tentaupplägg

kl Tentaupplägg Tentaupplägg TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer

Läs mer

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 4. Peter Dalenius Institutionen för datavetenskap Uppmärkningsspråk TDP007 Konstruktion av datorspråk Föreläsning 4 Peter Dalenius Institutionen för datavetenskap 2015-02-03 Från förra gången XML-dokument specificeras med t.ex. en DTD Två olika sätt att

Läs mer

Tentamen i Introduktion till programmering

Tentamen i Introduktion till programmering Tentamen i Introduktion till programmering Kurskod: Skrivtid: D0009E 09:00-13:00 (4 timmar) Totalt antal uppgifter: 7 Totalt antal poäng: 38 Tentamensdatum: 2014-05-17 Jourhavande lärare: Tillåtna hjälpmedel:

Läs mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2 Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2 Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok,

Läs mer

ADT Set, Map, Dictionary. Iteratorer TDDD86: DALGP. Tommy Färnqvist, IDA, Linköpings universitet

ADT Set, Map, Dictionary. Iteratorer TDDD86: DALGP. Tommy Färnqvist, IDA, Linköpings universitet Föreläsning 5 ADT Set, Map, Dictionary. Iteratorer TDDD86: DALGP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 11 september 2015 Tommy Färnqvist, IDA, Linköpings

Läs mer

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner Introduktion till programmering D0009E Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner

Läs mer

Problemlösning och funktioner Grundkurs i programmering med Python

Problemlösning och funktioner Grundkurs i programmering med Python Hösten 2009 Dagens lektion Problemlösningsstrategier Repetition av funktioner Mer om funktioner 2 Problemlösningsstrategier 3 PROBLEMLÖSNINGSSTRATEGIER Strategier Det finns ett flertal olika ansatser till

Läs mer

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna! Tentamen Programmeringsteknik II 2014-01-09 Skrivtid: 0800-1300 Hjälpmedel: Java-bok (vilken som helst) Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja

Läs mer

Karlstads Universitet, Datavetenskap 1

Karlstads Universitet, Datavetenskap 1 2003-01-20 DAV B04 - Databasteknik 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 26 Relationsmodellen En formell teori som baserar sig på (främst) mängdlära predikatlogik Föreslogs av E.F Codd 1970 i

Läs mer

TDP002 - Imperativ programmering

TDP002 - Imperativ programmering TDP002 - Imperativ programmering Algoritmer Pontus Haglund Institutionen för datavetenskap Anpassatt från material ursprungligen av: Eric Elfving 1 Datatyper Tal UTF-8 2 Procedurell abstraktion Repetition

Läs mer

729G04 Programmering och diskret matematik. Föreläsning 7

729G04 Programmering och diskret matematik. Föreläsning 7 729G04 Programmering och diskret matematik Föreläsning 7 Föreläsningsöversikt Information Interaktion via text Läsa från fil Skriva till fil Spara och läsa abstrakta datatyper från fil Information Felaktigt

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar

Läs mer

Föreläsning 11. Giriga algoritmer

Föreläsning 11. Giriga algoritmer Föreläsning 11 Giriga algoritmer Föreläsning 11 Giriga algoritmer Användning Växelproblemet Kappsäcksproblemet Schemaläggning Färgläggning Handelsresandeproblemet Uppgifter Giriga algoritmer (Greedy algorithms)

Läs mer

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander F9 - Polymorfism ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Polymorfism - flerformighet Vi vet vad metoden heter (signaturen) Men vi vet inte vid anropet exakt vilken metod som faktiskt

Läs mer

Klasser och objekt. Henrik Johansson. August 20, 2008

Klasser och objekt. Henrik Johansson. August 20, 2008 Föreläsning 5 Klasser och objekt Henrik Johansson August 20, 2008 Ett objekt är en modell av ett fysisikt eller ett tänkt ting. Objektet och det som vi kan göra med det beskrivs av en mall, en klass. Ett

Läs mer

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner Introduktion till programmering Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner med

Läs mer

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036) Tentamen Datastrukturer, DAT037 (DAT036) Datum, tid och plats för tentamen: 2017-08-17, 8:30 12:30, M. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 9:30 och ca 11:00.

Läs mer

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB Arrayer (vektorer) Murach s: kap 8 2013-01-15 1 Elektronikcentrum i Svängsta AB Arrayer Arrayer (vektorer) Ofta i ett program har vi flera variabler av samma datatyp som är relaterade till varandra. Exempel

Läs mer

Identifiering av ordvitsar med Granska

Identifiering av ordvitsar med Granska Identifiering av ordvitsar med Granska jonord@kth.se Inledning För att försöka identifiera ordvitsar med Granska användes ett litet urval av ordvitsar hämtade från olika ställen. Målet med identifiering

Läs mer

Lektion 7. Datateknik A, Java I, 5 poäng

Lektion 7. Datateknik A, Java I, 5 poäng Datateknik A, Syfte: Att kunna skapa och använda fält av både primitiva typer och egendefinierade klasser. Kunna skriva en egen enkel algoritm för sortering samt använda befintliga klasser i Javas API

Läs mer

729G04 Programmering och diskret matematik

729G04 Programmering och diskret matematik Tentamen 729G04, 2013-01-11 1(8) 729G04 Programmering och diskret matematik Tentamen 2013 01 11 kl 08.00 13.00 Tillåtna hjälpmedel: Dator, penna, papper, linjal, suddgummi, godkänd(a) bok/böcker Uppgifter:

Läs mer

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap Dataabstraktion TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12 Peter Dalenius Institutionen för datavetenskap 2013-11-12 Översikt Vad är abstraktion? Vad är en abstrakt datatyp?

Läs mer

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse GRUNDER I VHDL Innehåll Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse KOMPONENTMODELL Modell för att beskriva komponenter Externt interface Intern funktion

Läs mer

Laboration 1: Figurer i hierarki

Laboration 1: Figurer i hierarki Laboration 1: Figurer i hierarki Bakgrund Två grundläggande tekniker i objektorienterad konstruktion är arv och komposition. Mål Laborationen har flera avsikter: 1. Ge kunskaper i hur program kan organiseras

Läs mer

Objektorientering/1.2. 3 Klasser

Objektorientering/1.2. 3 Klasser 3 Klasser 3.1 Att hantera många objekt 3.2 Klasser 3.3 Krav för att bilda en klass 3.4 Får två objekt vara helt identiska? 3.5 Måste vi använda klasser i objektorientering? 3.6 En klassbeskrivning 3.7

Läs mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,

Läs mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,

Läs mer

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python. är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar

Läs mer

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 1 2 - Block, räckvidd Dagens föreläsning Programmering i Lisp - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch

Läs mer

Dataabstraktion. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

Dataabstraktion. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap Dataabstraktion TDDD73 Funktionell och imperativ programmering i Python Föreläsning 12 Peter Dalenius Institutionen för datavetenskap 2014-11-19 Översikt Vad är abstraktion? Vad är en abstrakt datatyp?

Läs mer

Metoder (funktioner) Murach s: kap Winstrand Development

Metoder (funktioner) Murach s: kap Winstrand Development (funktioner) Murach s: kap 6 2013-01-23 1 Winstrand Development Metoder I C# kan vi dela in koden i block en kodsekvens ska köras likadant på flera ställen i applikationen. Detta block kallas för en metod

Läs mer

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen Tentamen för teknisk kemi, 10p, moment 1 29 november 1999 Skrivtid 9-15 Hjälpmedel: av följande böcker. - U. Bilting och J. Skansholm: Vägen till C - A. Kelley & I. Pohl: A Book on C Maxpoäng: Gräns för

Läs mer

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion Introduktion till programmering D0009E Föreläsning 6: Iteration Multipel tilldelning Helt ok att tilldela en variabel flera gånger: bruce = bruce, bruce = 7 bruce Output: 7 Som tillståndsdiagram: bruce

Läs mer

Ekvivalensrelationer

Ekvivalensrelationer Abstrakt datatyp för disjunkta mängder Vi skall presentera en abstrakt datatyp för att representera disjunkta mängder Kan bl.a. användas för att lösa ekvivalensproblemet avgör om två godtyckliga element

Läs mer

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python. är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F2:1 OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion Deklaration och tilldelning OOP F2:2 int x; double d; char ch; boolean

Läs mer

Föreläsning 18 Filer och avbildningar

Föreläsning 18 Filer och avbildningar Föreläsning 18 Filer och avbildningar Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 15.11.2011 Avbildningar Hur skulle du göra en: Ordlista

Läs mer

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd! Pekare (till objekt) Objektvariabler är pekare vad är det? (Viktiga begrepp inte bara inom objektorientering!) Hur används pekare för att sätta samman objekt (composition)? TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad

Läs mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,

Läs mer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik I 2017-10-23 Skrivtid: 0800 1300 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor http://w3.msi.vxu.se/multimedia Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor Rune Körnefors Innehåll Variabler i JavaScript

Läs mer

Programkonstruktion. Tentamen,

Programkonstruktion. Tentamen, Programkonstruktion (Programmeringsmetodik DV1) Tentamen, 2008-03-10 Lars-Henrik Eriksson Institutionen för informationsteknologi Uppsala Universitet Tid: 0900-14:00. Börja med att läsa igenom alla frågorna

Läs mer

Ordlistor, filhantering och ut på webben. Linda Mannila 20.11.2007

Ordlistor, filhantering och ut på webben. Linda Mannila 20.11.2007 Ordlistor, filhantering och ut på webben Linda Mannila 20.11.2007 Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering Funktioner och moduler

Läs mer

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer 729G04 Programmering och diskret matematik Python 2: Villkorssatser, sanningsvärden och logiska operatorer Föreläsningsöversikt Vad händer när vi kör vår pythonkod? Programmerare Villkorssatser Jämförelser

Läs mer

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

Övning 6. Ali Tofigh 24 Oktober, 2006

Övning 6. Ali Tofigh 24 Oktober, 2006 Övning 6 Ali Tofigh 24 Oktober, 2006 1 Sortering Att sortera behöver man göra väldigt ofta i programmering. Python tillhandahåller bland annat en metod i listor för detta ändamål. Det enda metoden behöver

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer