En sammanställning av komplexitetsmått.

Storlek: px
Starta visningen från sidan:

Download "En sammanställning av komplexitetsmått."

Transkript

1 En sammanställning av komplexitetsmått. D08 Lunds Tekniska Högskola Arvid Lindell 28 Februari 2012 Abstrakt Denna artikel diskuterar kodkomplexitetsmått i allmänhet. Några av de vanligaste kodkomplexitetsmåtten förklaras och det tidigare litteratur konstaterat angående dem sammanställs. Några av måtten testkörs mot 10 upplagor av ett studentprojekt gjort av andra årets datateknikstudenter vid LTH och en bedömning av måttens relevans görs.

2 Innehåll 1 Introduktion 3 2 Bakgrund 3 3 Några olika mått McCabes cyklomatiska komplexitet Halsteads Nästlingsdjup CKMetrics Diverse Test mot projektkod Resultat Slutsats Cyklomatisk komplexitet Nestningsdjup Rader kod Måttens korrekthet Studentprojekten Andras undersökningar Slutord 8 2

3 1 Introduktion Det har sedan länge funnits ett intresse av att mäta hur komplext ett givet datorprogram är, och därav har det också utvecklats ett flertal olika mått med detta syfte.[1] Egenskaper hos datorprogram så som komplexitet, förståbarhet, utbyggnadsbarhet är ofta subjektiva och svåra att kvantifiera. Komplexitetsmått är ett försök att göra sådana egenskaper mätbara eller åtminstone hitta mätvärden som korrelerar med dem. Syftet med denna artikel är att sammanfatta funktion och resonemang bakom några vanliga sådana mått. Många andra [2][3][1] har tidigare också gjort jämförelser mått emellan Man har försökt utvärdera deras relevans, med varierande resultat. Denna artikel skrivs som en del av kursen Coaching av programvaruteam vid Lunds tekniska högskola som också innefattar studentprojekt gjorda av yngre studenter. Dessa projekt är vad som använts för att testa olika måtts beteende och likhet. Förhoppningen är också att kunna identifiera vad som leder till dåliga resultat för olika mått. Två av de första mer avancerade och mest välkända måtten är Halsteads[7] komplexitetsmått och McCabes cyklomatiska komplexitet[4]. Dessa och några andra kommer att beskrivas i sektion 3. I sektion 2 ges en bakgrund för komplexitetsmått i allmänhet. I sektion 4 testas olika mått på studentprojektens kod med syfte att bedöma måttens rimlighet. Sektion 5 innehåller viss diskussion angående måttens relevans och rimlighet, delvis baserat på resultat av testandet i sektion 4 och delvis på andras undersökningar. 2 Bakgrund Att mäta ett programs komplexitet vill man göra av flera anledningar. Ett programs komplexitet är avgörande för dess kostnad dels under produktion men framför allt under en efterliggande underhållsfas och vid eventuell påbyggnad vid senare tillfälle. [5] Vidare ger en del av existerande mått redan i under designen av ett system viss hjälp att försöka förutsäga hur svårt systemet sedan kommer vara att implementera.[5] Det första och mest grundläggande måttet på komplexitet är rader kod (lines of code, LOC), ett ganska primitivt och simpelt mått. En uppenbar svaghet med detta mått är att det till stor del beror på programspråk och dessutom säger mer om storlek än komplexitet, även om en viss korrelation däremellan finns. Nuförtiden används mer komplicerade mått som tar mer av kodens struktur i hänsyn, och det finns speciella mått för objekt-orienterad programmering. Så vilka egenskaper bör då ett komplexitetsmått ha? Jo, följande[1]: De bör vara robusta på så sätt att små förändringar i ett program ej drastiskt förändrar mätvärdet. Om ett mätvärde minskar på grund av förändring i ett program bör man också kunna visa att programmet faktiskt blivit bättre och tydligare. Ett bra mått bör kunna identifiera källan till komplexiteten. Om en viss del av ett program är betydligt komplexare än resten ska måttet kunna visa detta så att problemet enklare kan åtgärdas. 3

4 Någon slags standardvärde bör finnas, som talar om vilka intervall som är rimliga och vilka som är för mycket. Utan detta kan ett program ej bedömas utan att jämföra det med andra. I [6] definierar Weyuker några mer generella egenskaper som mått bör ha. Hon presenterar dem i en slags stigande ordning av viktighet. De första egenskaperna är nödvändiga för att ett mått alls skall vara meningsfull och de senare är mer detaljerade. Exempelvis är den första egenskap hon presenterar: ( P )( Q)( P Q ) (1) P och Q är här program, eller stycken programkod. Egenskapen säger att det bör finnas program P och Q som ej har samma mätvärde. Uppenbarligen är ett mått som ger samma värde till alla program inte meningsfull. Weyuker fortsätter med att konstatera att ett mått bör bero på implementationen och inte på problemet som löses. Två program som beräknar samma sak har alltså ej nödvändigtvis samma mätvärde. Hon anser också att en sammanslagning av två kodstycken bör ha ett högre mätvärde är de enskilda kodstyckenas värden, enligt följande egenskap: ( P )( Q)( P P ; Q ) & ( Q P ; Q ) (2) Hon noterar att Halsteads ansträngnings-mått E ej har denna egenskap (Se 3.2). I sin slutsats konstaterar Weyuker att det i huvudsak finns två olika sätt att konstruera ett mått. Antingen ser man komplexiteten hos ett stort program som summan av komplexiteten för delarna, eller så undersöker man hur de olika delarna interagerar med varandra. 3 Några olika mått 3.1 McCabes cyklomatiska komplexitet McCabes cyklomatiska komplexitet utgår från ett programs kontrollflödesgraf och mäter hur många olika vägval exekveringen kan göra. En kontrollflödesgraf är en riktad graf och består av noder motsvarande olika sammanhängande stycken kod, och kanter motsvarande exekveringsvägar emellan dessa. Exempelvis kan programkoden i figur 1 översättas till grafen i figur 2. do { if (y) { A; } else { B; } } while (x); Figur 1: Simpelt kodexempel 4

5 Figur 2: Kontrollflödesgrafen för koden i figur 1 Den cyklomatiska komplexiteten V i en sådan graf G med n noder och e kanter definieras sedan som: V (G) = e n + 2 (3) Koden i figur 1 har då alltså komplexiteten 3. Ju lägre värde desto enklare kod, McCabe själv gör bedömningen att 10 är en lämplig övre gräns.[4] Värdet kan också räknas ut genom att helt enkelt räkna antalet if- loop- och liknande uttryck som finns i koden och addera 1. Helt rak kod ger följaktligen värdet 1 En modifikation av originaldefinitionen som många väljer att använda är att se switch-caseliknande strukturer som ett enda val. 3.2 Halsteads Halsteads mått är i själva verket ett par stycken olika; volym, svårighet och ansträngning.[7][1] Beräkningarna använder följande parametrar: n 1 antalet unika operatorer. n 2 antalet unika operander. N 1 det totala antalet operatorer. N 2 det totala antalet operander. Med hjälp av dessa definieras sedan ett programs volym V som: och svårighet D som: V = (N 1 + N 2 ) log 2 (n 1 + n 2 ) (4) D = (n 1 N 2 ) (2 n 2 ) Ansträngningen E för att implementera ett sådant program uppskattas sedan till: (5) E = D V (6) 5

6 Som nämdes i sektion 2 har måttet en svaghet i att en utökning av ett program teoretiskt kan minska mätvärdet E. Om man tänker sig en utökning som ökar antalet unika operander mycket men som bara använder dem en gång var så kan värdet på n 2 tänkas dubblas, medan N 2 endast ökar marginellt jämfört med dess gamla värde. På så sätt minskar värdet D vilket i vissa fall också leder till att hela E minskar. 3.3 Nästlingsdjup Piwowarski föreslår i [8] att komplexitetsmått även bör ta hänsyn till hur djupt nästlade uttryck i programmet är. En loop inuti en annan anses mer komplext än två loopar som följer efter varandra. McCabes cyklomatiska komplexitet tar ej hänsyn till detta utan dessa båda fall får samma värde. Piwowarski föreslår därför en utökning av måttet så att även tar hänsyn till hur denna struktur ser ut. N = V (G) + i P (i) (7) Där V (G) är den cyklomatiska komplexitet med switch-casesatser räknade som ett val, och där P (i) är nästlingsdjupet för ett uttryck i i programmet. 3.4 CKMetrics Chidamber och Kemerer beskriver i [9] en uppsättning mått specifikt utvecklade för objektorienterad programmering, som diskuterats vidare av andra [10][3]. De mått de kom fram till behövdes var följande: Metoder per klass. Arvsträds-djup. Exempelvis i javas fall hur många arvs-steg från Object. Antal barn, alltså klasser som ärver från en viss klass. Sammankoppling mellan klasser. C & K definierar sammankoppling som att en klass använder objekt av, eller kallar metoder på, en annan klass. En klass svar, vilket är mängden av alla metoder som kan tänkas kallas vidare när någon metod på klassen i sig kallas. 3.5 Diverse Några andra vanliga enklare mått: Antal parametrar till funktioner. Rader kod. Antal metoder per klass. Rader kod per metod / funktion. Dessa är ganska självklara och lätta att mäta och för alla gäller att ett mindre värde representerar ett mindre komplext program. 6

7 4 Test mot projektkod 4.1 Resultat För enkelhetens skull har vi valt ut ett fåtal mått att beräkna på de studentprojekt som finns att tillgå, specifikt nestningsdjup, cyklomatisk komplexitet per metod, och rader kod. Det finns 10 stycken olika projekt som ska ha ungefär samma funktionalitet och bör vara rimligt jämförbara. Måtten är framtagna med hjälp av en plugin till utvecklingsmiljön Eclipse som heter just Metrics. 1 TeamNr Nestningsdjup Cyklomatisk kompl. Rader kod 1 1,34 (max: 5) 1,57 (max: 10) ,59 (max: 5) 1,91 (max: 16) ,34 (max: 6) 1,61 (max: 9) ,44 (max: 5) 1,59 (max: 11) ,33(max: 4) 1,63(max: 10) ,21(max: 5) 1,41(max: 13) ,51(max: 4) 2,00(max: 14) ,49(max: 7) 1,68(max: 14) ,36(max: 4) 1,68(max: 14) ,36(max: 5) 1,62(max: 9) 1577 Figur 3: Mätvärden från studentprojekten Cyklomatisk komplexitet har som tidigare nämnt ett rekomenderat maxvärde på 10. Värt att nämna är att alla projekten har en sak gemensamt angående deras cyklomatiska komplexitet. De har alla en enda eller maximalt två olika metoder som har drastiskt mycket högre komplexitet än alla andra i programmet. Projekt 2 exempelvis har sitt maxvärde 16, men alla andra metoder utom denna har 7 eller mindre. Övriga projekt har liknande situationer. Ytterligare något att nämna är att i 6 av 10 projekt var den metod med högst cyklomatisk komplexitet också den metod med flest rader kod. 4.2 Slutsats Cyklomatisk komplexitet Efter att ha undersökt koden närmre handlar nästan alla fall av förhöjd komplexitet om någon typ av stränghantering. Projektet handlar om att samla in tid-data i textformat om förare i ett motorcykel-race och sammanställa denna som ett resultat, även detta i textformat. Det får därför anses förståeligt om än ej optimalt att det ser ut som det gör. En potentiell lösning hade varit att refaktorisera koden och införa några stycken mindre hjälpmetoder som då ansvarar för olika mindre moment av parsningen. Detta visar också att det viktigaste att titta på när det gäller måttet cyklomatisk komplexitet är maxvärdena och till mindre grad medelvärdena. Medelvärdena varierar från 1,41 till 2,00 medan maxvärdena spänner över intervallet 9 till 16. Tio små studentprojekt är förvisso inget stort sampel men det är vad som här fanns att tillgå och visar måttens möjligheter. 1 Finns att hämta på 7

8 4.2.2 Nestningsdjup Måttet nestningsdjup är inte fullt så spännande i detta resultat, dels varierar det mindre och dels är det färre ställen där det rekomenderade maxvärdet 5 överstigs. En majoritet av projekten har ej sin djupaste nestning i samma metod som deras högsta cyklomatisak komplexitet uppmätts så man kan konstatera att de två ej nödvändigtvis följs åt Rader kod Måttet rader kod togs med i hopp om att se ett samband mellan programmens storlek och deras övriga komplexitetsmått. Någon sådan går ej att finna i denna undersöknings data. Däremot, som nämnt i 4.1 så finns ett samband på metodnivå. 5 Måttens korrekthet 5.1 Studentprojekten För att undersöka hur bra komplexitetsmåtten fungerar ombads alla studenter involverade i projekten att identifiera de tre metoder i sitt eget projekt som de tyckte var minst överskådliga och rörigast. Tanken är att se hur bra måttens bedömning stämmer överens med den verkliga svårighetsgraden av att förstå koden. Tyvärr, på grund av bristfällig svarsfrekvens bland de tillfrågade så finns det inte så mycket data. Baserat på de svar som inkommit och viss diskution med enskilda studenter så anser vi dock att måtten fungerar dugligt. De metoder som komplexitetsmåtten identifierar som onödigt komplexa bedömes också vara det av människor. Det finns dock fler metoder som de tillfrågade anser komplexa som måtten ej lyckas identifiera. 5.2 Andras undersökningar Gordon utför i [11] en uppsättning experiment med Halsteads mått E av ansträngning. Han underesöker hur måttet påverkas av att ett program följer erkända best-practices såsom att undvika goto, ej ha för djupa loop-nästningar etc. Hans resultat visar att i majoriteten av fall så blir måttet bättre samtidigt som programkoden också blir lättare att förstå. Han hittar ett fåtal undantag men överlag fungerar måttet väl. 6 Slutord Behovet att objektivt mäta kod-kvalitet och komplexitet är en effekt av att programmering är komplicerat i sig. Med de mått som presenterats här kan man åtminstone någorlunda bedöma komplexitet, och framför allt identifiera källorna till denna. Måtten är på inga sätt felfria och det finns situationer där man bör ta dem med en nypa salt. Även om låga komplexitetsmått inte är en garanti för ett välorganiserat program så är höga värden ett tecken på att man bör undersöka källan till dessa närmre. Det är framför allt i att identifiera brister som måtten kommer till sin rätt. Baserat på den undersökning som gjorts 8

9 här ser man att måtten ej hittar alla brister i ett program, men de saker som identifieras som brister är i allmänhet det. Olika mått har olika strategier och fokus, och för en komplett bild bör man kombinera flera olika varianter. Acknowledgements Tack till Johan Wennersten för genomläsning och hjälp med formatering. 9

10 Referenser [1] J. P. Kearney, R. L. Sedlmeyer, W. B. Thompson, M. A. Gray, and M. A. Adler, Software complexity measurement, Commun. ACM, vol. 29, pp , November [2] S. Henry, D. Kafura, and K. Harris, On the relationships among three software metrics, SIGMETRICS Perform. Eval. Rev., vol. 10, pp , January [3] R. Subramanyam and M. Krishnan, Empirical analysis of ck metrics for object-oriented design complexity: implications for software defects, IEEE Transactions on Software Engineering, vol. 29, pp , april [4] T. McCabe, A complexity measure, IEEE Transactions on Software Engineering, vol. SE-2, pp , dec [5] M. Rafighi and N. Modiri, Framework of software complexity methodology, in Networked Computing and Advanced Information Management (NCM), th International Conference on, pp , june [6] E. Weyuker, Evaluating software complexity measures, IEEE Transactions on Software Engineering, vol. 14, pp , sep [7] M. H. Halstead, Elements of Software Science (Operating and programming systems series). New York, NY, USA: Elsevier Science Inc., [8] P. Piwowarski, A nesting level complexity measure, SIGPLAN Not., vol. 17, pp , September [9] S. Chidamber and C. Kemerer, A metrics suite for object oriented design, IEEE Transactions on Software Engineering, vol. 20, pp , jun [10] V. Basili, L. Briand, and W. Melo, A validation of object-oriented design metrics as quality indicators, IEEE Transactions on Software Engineering, vol. 22, pp , oct [11] R. Gordon, Measuring improvements in program clarity, IEEE Transactions on Software Engineering, vol. SE-5, pp , march

Kodkomplexitet i agil utveckling. Axel Nilsson Svegard, Patrick Fogwall EDA270 - Djupstudie 2 mars 2010

Kodkomplexitet i agil utveckling. Axel Nilsson Svegard, Patrick Fogwall EDA270 - Djupstudie 2 mars 2010 Kodkomplexitet i agil utveckling Axel Nilsson Svegard, Patrick Fogwall EDA270 - Djupstudie 2 mars 2010 Sammanfattning Denna studie avser att undersöka hur uppmätning av kodkomplexitet kan användas för

Läs mer

UTMANINGSBASERAT LÄRANDE I FÖRSTA PROGRAMMERINGSKURSEN

UTMANINGSBASERAT LÄRANDE I FÖRSTA PROGRAMMERINGSKURSEN Fokus: Studenters lärande 2015, 26-27 nov, Malmö UTMANINGSBASERAT LÄRANDE I FÖRSTA PROGRAMMERINGSKURSEN Jeanette Eriksson, Olle Lindeberg BAKGRUND Programmering är en nyckelkompetens inom datavetenskap.

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, allmänt

Objektorienterad programmering, allmänt Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 juni 2005 1 Vilka egenskaper vill vi att program ska ha? Förslag (en partiell lista): De ska... gå snabbt att skriva vara

Läs mer

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha? Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 mars 2005 1. Korrekthet 2. Robusthet 3. Utökbarhet 4. Återanvändbarhet 5. Kompatibilitet

Läs mer

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Designmönster Adapter, Factory, Iterator,

Läs mer

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15 OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 170331 kl. 08:15-13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilagarna. *** OBS ***

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

Objektorienterad analys och design

Objektorienterad analys och design Objektorienterad analys och design Objektorienterad analys och design 1 Dagens föreläsning Första delen, innan rasten: Motivation och bakgrund Analys Funktioner Andra delen, efter rasten: Objektorienterade

Läs mer

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

PROGRAMMERING. Ämnets syfte. Kurser i ämnet PROGRAMMERING Ämnet programmering behandlar hur mjukvaror skapas, anpassas och utvecklas samt programmeringens roll i informationstekniska sammanhang som datorsimulering och praktisk datoriserad problemlösning.

Läs mer

Spekulativ exekvering i CPU pipelining

Spekulativ exekvering i CPU pipelining Spekulativ exekvering i CPU pipelining Max Faxälv Datum: 2018-12-05 1 Abstrakt Speculative execution is an optimisation technique used by modern-day CPU's to guess which path a computer code will take,

Läs mer

Mälardalens högskola

Mälardalens högskola Teknisk rapportskrivning - en kortfattad handledning (Version 1.2) Mälardalens högskola Institutionen för datateknik (IDt) Thomas Larsson 10 september 1998 Västerås Sammanfattning En mycket viktig del

Läs mer

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1 Institutionen för Data- och informationsteknik JSk TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Övningstentamen 1 OBS! Det kan finnas kurser med samma eller liknande namn på olika utbildningslinjer.

Läs mer

Tentamen på kursen DA7351, Programmering 1. 051102, kl 08.15-12.15. Malmö högskola Teknik och samhälle. DA7351, Programmering 1 1 051102

Tentamen på kursen DA7351, Programmering 1. 051102, kl 08.15-12.15. Malmö högskola Teknik och samhälle. DA7351, Programmering 1 1 051102 Tentamen på kursen DA7351, Programmering 1 051102, kl 08.15-12.15 Tillåtna hjälpmedel: Valfri bok om Java. Vid bedömning av lösningarna tas hänsyn till om dessa uppfyller de krav på programkvalitet (strukturering,

Läs mer

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts. Datakompression fö 3 p.3 Datakompression fö 3 p.4 Optimala koder Övre gräns för optimala koder En prefixkod kallas optimal om det inte existerar någon annan kod (för samma alfabet och sannolikhetsfördelning)

Läs mer

Tillämpad Programmering (ID1218) :00-13:00

Tillämpad Programmering (ID1218) :00-13:00 ID1218 Johan Montelius Tillämpad Programmering (ID1218) 2014-03-13 09:00-13:00 Förnamn: Efternamn: Regler Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.

Läs mer

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or. Datakompression fö 3 p.1 Optimala koder En prefixkod kallas optimal om det inte existerar någon annan kod (för samma alfabet och sannolikhetsfördelning) som har lägre kodordsmedellängd. Det existerar förstås

Läs mer

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018 Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design (DIT95) Niklas Broberg, 2018 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon

Läs mer

Introduktion till programmering med hjälp av Lego Mindstorm

Introduktion till programmering med hjälp av Lego Mindstorm Kungliga Tekniska Högskolan Introduktion till programmering med hjälp av Lego Mindstorm Laborationsrapport gällande programmering inom NXC Simon Jansson 31 08 2014 simonjan@kth.se Introduktionskurs i datateknik

Läs mer

Föreläsningsanteckningar F6

Föreläsningsanteckningar F6 Föreläsningsanteckningar F6 Martin Andersson & Patrik Falkman Kortaste vägen mellan en nod och alla andra noder Detta problem innebär att givet en graf G = (E,V) hitta den kortaste vägen över E från en

Läs mer

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur Objekt-orienterad utveckling Saker man vill uppnå: Objektorienterad analys och design Sven-Olof Nyström Uppsala Universitet 16 mars 2005 en systematisk metod för att gå från problembeskrivning till färdigt

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

Kodkomplexitet - Hur mäts det? Sara Nilsson D05, Lunds Tekniska Högskola 1 mars 2011

Kodkomplexitet - Hur mäts det? Sara Nilsson D05, Lunds Tekniska Högskola 1 mars 2011 Kodkomplexitet - Hur mäts det? Sara Nilsson D05, Lunds Tekniska Högskola dt05sn2@student.lth.se 1 mars 2011 Sammanfattning Den här rapporten är tänkt för studenter med programmeringsvana och åtminstone

Läs mer

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design Helsingborg Lunds Tekniska Högskola Datavetenskap Emelie Engström Tentamen EDAF25 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Helsingborg Tentamen består av en teoridel om totalt 5 poäng

Läs mer

Föreläsning 5: Dynamisk programmering

Föreläsning 5: Dynamisk programmering Föreläsning 5: Dynamisk programmering Vi betraktar en typ av problem vi tidigare sett: Indata: En uppsättning intervall [s i,f i ] med vikt w i. Mål: Att hitta en uppsättning icke överlappande intervall

Läs mer

Statistik över heltal

Statistik över heltal Övningsuppgift Statistik över heltal Steg 2 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande

Läs mer

Kursplanering Objektorienterad programmering

Kursplanering Objektorienterad programmering Kursplanering Objektorienterad programmering Fakta Ämne Programmering Poäng 40 Yh-poäng Kurskod YSYS-OOP Klass Systemutvecklare.NET 2 Syfte och koppling till yrkesrollen Syftet är att få en stabil grund

Läs mer

Beräkning med ord. -hur en dator hanterar perception. Linköpings universitet Artificiell intelligens 2 2010-10-03 Erik Claesson 880816-1692

Beräkning med ord. -hur en dator hanterar perception. Linköpings universitet Artificiell intelligens 2 2010-10-03 Erik Claesson 880816-1692 Beräkning med ord -hur en dator hanterar perception 2010-10-03 Erik Claesson 880816-1692 Innehåll Inledning... 3 Syfte... 3 Kan datorer hantera perception?... 4 Naturligt språk... 4 Fuzzy Granulation...

Läs mer

Inledande programmering med C# (1DV402) Introduktion till C#

Inledande programmering med C# (1DV402) Introduktion till C# Introduktion till C# Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i

Läs mer

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > = ==!= Resultatets datatyp är boolean

Läs mer

Kodanalys med mjukvarumetriker

Kodanalys med mjukvarumetriker AKADEMIN FÖR TEKNIK OCH MILJÖ Avdelningen för industriell utveckling, IT och samhällsbyggnad Kodanalys med mjukvarumetriker En fältstudie hos Monitor ERP System AB Pontus Sund 2017 Examensarbete, Grundnivå

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer Föreläsning 5: Giriga algoritmer Kruskals och Prims algoritmer Spännande träd: Om G är en sammanhängande graf så är ett spännande träd ett träd som innehåller alla noder i V (G). Viantarattviharkantvikterw(e)

Läs mer

SKOLFS. beslutade den XXX 2017.

SKOLFS. beslutade den XXX 2017. 1 (11) Föreskrifter om ändring i Skolverkets föreskrifter (SKOLFS 2010:247) om ämnesplan för ämnet programmering i gymnasieskolan, inom kommunal vuxenutbildning på gymnasial nivå och inom vidareutbildning

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

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037) Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-02 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Tidskomplexitet

Läs mer

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016 Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design Alex Gerdes, 2016 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon tripoly =

Läs mer

public static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } }

public static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } } Rekursion 25 7 Rekursion Tema: Rekursiva algoritmer. Litteratur: Avsnitt 5.1 5.5 (7.1 7.5 i gamla upplagan) samt i bilderna från föreläsning 6. U 59. Man kan definiera potensfunktionen x n (n heltal 0)

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Institutionen för Data- och informationsteknik TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING OBS! Det kan finnas kurser med samma eller liknande namn på olika utbildningslinjer. Denna tentamen gäller

Läs mer

Beräkningsvetenskap introduktion. Beräkningsvetenskap I

Beräkningsvetenskap introduktion. Beräkningsvetenskap I Beräkningsvetenskap introduktion Beräkningsvetenskap I Kursens mål För godkänt betyg ska studenten kunna redogöra för de nyckelbegreppen som ingår i kursen* utföra enklare analys av beräkningsproblem och

Läs mer

IT OCH PROGRAMMERING I SKOLAN. Jan Erik Moström Peter Vinnervik

IT OCH PROGRAMMERING I SKOLAN. Jan Erik Moström Peter Vinnervik IT OCH PROGRAMMERING I SKOLAN Jan Erik Moström Peter Vinnervik VILKA ÄR VI OCH VAD KOMMER VI ATT PRATA OM? Jan Erik Moström - undervisar på institutionen för datavetenskap Peter Vinnervik - doktorand vid

Läs mer

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling

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

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14. Tentamen 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.00, sal D31 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo Objektorienterade språk Historik Simula 67 Smalltalk 80 Procedurorienterad programmering Subprogram Programbibliotek Dataorienterad programmering Abstrakta datatyper Objektbaserade språk, föregångare till

Läs mer

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada Mer källkod Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne Erik Forslin efo@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 1 Styrstrukturer i Java En styrstruktur är något som påverkar

Läs mer

Laboration: Grunderna i MATLAB

Laboration: Grunderna i MATLAB Laboration: Grunderna i MATLAB 25 augusti 2005 Grunderna i MATLAB Vad är MATLAB? MATLAB är ett interaktivt program för vetenskapliga beräkningar. Som användare ger du enkla kommandon och MATLAB levererar

Läs mer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer Föreläsning 5: Giriga algoritmer Kruskals och Prims algoritmer Spännande träd: Om G är en sammanhängande graf så är ett spännande träd ett träd som innehåller alla noder i V (G). Viantarattviharkantvikterw(e)

Läs mer

Säkerhetslagrets andel av beställningspunkten som funktion av ledtid

Säkerhetslagrets andel av beställningspunkten som funktion av ledtid Säkerhetslagrets andel av beställningspunkten som funktion av ledtid Stig-Arne Mattsson Sammanfattning I den här studien har en analys gjorts av säkerhetslagrets andel av beställningspunkten som funktion

Läs mer

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4 Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa

Läs mer

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1. Objektorienterad programmering E Telefonboken, än en gång Föreläsning 5 Wrapper classes Exempel, histogram. Inldening om undantag. Mer om klassen Påminnelse Vår senaste version bestod av två klasser, bägge

Läs mer

Beräkningsvetenskap introduktion. Beräkningsvetenskap I

Beräkningsvetenskap introduktion. Beräkningsvetenskap I Beräkningsvetenskap introduktion Beräkningsvetenskap I Kursens mål För godkänt betyg ska studenten kunna redogöra för de grundläggande begreppen algoritm, numerisk metod, diskretisering maskinepsilon,

Läs mer

Föreläsning 1: Intro till kursen och programmering

Föreläsning 1: Intro till kursen och programmering Föreläsning 1: Intro till kursen och programmering Kursens hemsida http:www.it.uu.se/edu/course/homepage/prog1/vt11 Studentportalen http://www.studentportalen.uu.se Lärare: Tom Smedsaas, Tom.Smedsaas@it.uu.se

Läs mer

Dagens föreläsning (F15)

Dagens föreläsning (F15) Dagens föreläsning (F15) Problemlösning med datorer Carl-Mikael Zetterling bellman@kth.se KP2+EKM http://www.ict.kth.se/courses/2b1116/ 1 Innehåll Programmering i Matlab kap 5 EKM Mer om labben bla Deluppgift

Läs mer

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

Läs mer

Skapa en generell informationsmodell?

Skapa en generell informationsmodell? Sven-Håkan Olsson Konsult, arkitekt och utvecklare Oberoende konsult och teknikentreprenör Skapa en generell informationsmodell? Sven-Håkan Olsson måndag 11 aug 14 TEKNIK En generell, kanonisk informationsmodell

Läs mer

Objektorienterad programmering Föreläsning 2

Objektorienterad programmering Föreläsning 2 Objektorienterad programmering Föreläsning 2 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Inläsning av data via dialogrutor Repetitioner (While-satsen och For-satsen) Nästlade

Läs mer

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15 TENTAMEN I PROGRAMSPRÅK -- DVG C01 140605 kl. 08:15-13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd

Läs mer

TDDD92 Artificiell intelligens -- projekt

TDDD92 Artificiell intelligens -- projekt jonas.kvarnstrom@liu.se 2018 TDDD92 Artificiell intelligens -- projekt Individuella uppgifter UPG2: Individuell skriftlig rapport 2 Vad? Läsa och förstå vetenskaplig litteratur Varför? Framtiden: Inte

Läs mer

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? TDDD78, TDDE30, jonas.kvarnstrom@liu.se 729A85 jonas.kvarnstrom@liu.se

Läs mer

Imperativ programmering. Föreläsning 2

Imperativ programmering. Föreläsning 2 Imperativ programmering 1DL126 3p Föreläsning 2 Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner.

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

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt 2004. Kursprogram

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt 2004. Kursprogram Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt 2004 Kursprogram Kursens mål är att ge dig kunskaper om begreppen och principerna inom objektorienterad programmering och design

Läs mer

DAT043 Objektorienterad Programmering

DAT043 Objektorienterad Programmering DAT043 Objektorienterad Programmering Detta är en exempeltenta som innehåller gamla tentauppgifter av ungefär liknande slag som ni kan förvänta er se på ordinarie tenta i Del 1 respektive Del 2. Dock är

Läs mer

Anujan Balasingam IDA14 NAND flashminnen

Anujan Balasingam IDA14 NAND flashminnen Anujan Balasingam IDA14 NAND flashminnen Hur kan prestandan och kapaciteten förbättras? Kursansvarig: Erik Larsson Datorarkitektur med operativsystem 7,5 hp 04-12-2015 Innehållsförteckning 1. Inledning...

Läs mer

Personal. Objektorienterad programmeringsmetodik 5DV133. Kursmål. Kursens uppläggning. Lärare. Handledare och gruppövningar.

Personal. Objektorienterad programmeringsmetodik 5DV133. Kursmål. Kursens uppläggning. Lärare. Handledare och gruppövningar. Personal Objektorienterad programmeringsmetodik 5DV133 Java VT-16 1 Lärare Anders Broberg, anders.broberg@cs.umu.se Handledare och gruppövningar Niklas Fries Adam Dalhgren Jonathan Westin Erik Moström

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

Inlämning 3 IKOT 2011. Gruppmedlemmar. Marcus Anemo Simon Hall Kristoffer Johnsen Abedin Karalic Lian Hong Zheng. Handledare.

Inlämning 3 IKOT 2011. Gruppmedlemmar. Marcus Anemo Simon Hall Kristoffer Johnsen Abedin Karalic Lian Hong Zheng. Handledare. IKOT 2011 Gruppmedlemmar Marcus Anemo Simon Hall Kristoffer Johnsen Abedin Karalic Lian Hong Zheng Handledare Göran Brännare 2 Innehållsförteckning 1 Voice of the Customer... 3 1.1 Bakgrund... 3 1.2 Resultat

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

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering... Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering... 4 Bussen (projektförslag)... 5 Bakgrund... 5 Klassen Buss

Läs mer

Objektorienterad analys och design

Objektorienterad analys och design Objektorienterad analys och design Sven-Olof Nyström Uppsala Universitet 16 mars 2005 1 Objekt-orienterad analys och design: Litteratur Skansholm: Kapitel 4 Se även 1. http://www.uml.org/ 2. http://www-306.ibm.com/software/rational/uml/

Läs mer

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Föreläsning 4: Giriga algoritmer. Giriga algoritmer Föreläsning 4: Giriga algoritmer Giriga algoritmer Denna typ av algoritmer arbetar efter följande princip: Gör i varje situation det som är lokalt optimalt, d.v.s. bäst för stunden. Några exempel vi redan

Läs mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Det här är inte originaltesen. Uppgift 6 var felaktigt formulerad, och har rättats till. Datum och tid för tentamen: 2011-12-16, 8:30 12:30. Ansvarig: Nils Anders Danielsson.

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg niklas.broberg@chalmers.

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg niklas.broberg@chalmers. Programmering Seminarier i datavetenskap, datorteknik och informationsteknik Niklas Broberg niklas.broberg@chalmers.se 2015-09-24 Hur många från Datavetenskap? Datateknik? Informationsteknik? Översikt

Läs mer

MMA132: Laboration 2 Matriser i MATLAB

MMA132: Laboration 2 Matriser i MATLAB MMA132: Laboration 2 Matriser i MATLAB Introduktion I den här labben skall vi lära oss hur man använder matriser och vektorer i MATLAB. Det är rekommerad att du ser till att ha laborationshandledningen

Läs mer

Introduktion. Byggstenar TDBA63 2005-11-22

Introduktion. Byggstenar TDBA63 2005-11-22 Introduktion UML står för Unified Modeling Language. Det är tänkt att fungera som hjälpmedel vid modellering av alla tänkbara typer av utvecklingsarbeten, inte bara inom dataomdrådet. Det största värdet

Läs mer

Inledande programmering med C# (1DV402) Introduktion till programmering

Inledande programmering med C# (1DV402) Introduktion till programmering Introduktion till programmering Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt

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

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

TENTAMEN I DATAVETENSKAP

TENTAMEN I DATAVETENSKAP Umeå Universitet Datavetenskap Marie Nordström Thomas Johansson Jürgen Börstler 030124 TENTAMEN I DATAVETENSKAP PROGRAMMERINGSMETODIK OCH PROGRAMMERING I JAVA, 5P. (TDBA63) Datum : 030124 Tid : 9-15 Hjälpmedel

Läs mer

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik UML 1(5) Introduktion till Unified Modeling Language 1 Bakgrund och historik UML är ett objektorienterat modellspråk för att specificera och visualisera system. Det är framtaget i första hand för IT-orienterade

Läs mer

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor Abstrakta datatyper 1 Primitiva vektorer Vektorer kan skapas av primitiva datatyper, objektreferenser eller andra vektorer. Vektorer indexeras liksom i C från 0. För att referera en vektor används hakparenteser.

Läs mer

Precis som var fallet med förra artikeln, Geogebra för de yngre i Nämnaren

Precis som var fallet med förra artikeln, Geogebra för de yngre i Nämnaren Publicerad med tillstånd av Nämnaren Thomas Lingefjärd Geogebra i gymnasieskolan En tilltalande egenskap med Geogebra är att programmet kan användas tvärs över stora delar av utbildningssystemets matematikkurser.

Läs mer

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

TDDI16 Datastrukturer och algoritmer. Algoritmanalys TDDI16 Datastrukturer och algoritmer Algoritmanalys 2017-08-28 2 Översikt Skäl för att analysera algoritmer Olika fall att tänka på Medelfall Bästa Värsta Metoder för analys 2017-08-28 3 Skäl till att

Läs mer

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14) Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter.

Läs mer

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Tentamen, EDA501/EDAA20 Programmering M MD W BK L LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen, EDA501/EDAA20 Programmering M MD W BK L 2017 05 31, 8.00 13.00 Anvisningar: Preliminärt ger uppgifterna 9 + 12 + 10 + 9 = 40 poäng.

Läs mer

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

Föreläsning 1: Intro till kursen och programmering

Föreläsning 1: Intro till kursen och programmering Föreläsning 1: Intro till kursen och programmering λ Kursens hemsida http:www.it.uu.se/edu/course/homepage/prog1/mafykht11/ λ Studentportalen http://www.studentportalen.uu.se UNIX-konton (systemansvariga

Läs mer

Ingenjörsinriktad yrkesträning

Ingenjörsinriktad yrkesträning Ingenjörsinriktad yrkesträning Olivia Eldh V07 2010-08-27 Lunds Tekniska Högskola Väg och vattenbyggnad Sweco Structures Sweco är ett internationellt konsultföretag med samlad kunskap inom teknik, miljö

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

Antennförstärkare för UHF-bandet

Antennförstärkare för UHF-bandet Antennförstärkare för UHF-bandet Radioprojekt 2004 Elektrovetenskap, LTH Mats Rosborn Henrik Kinzel 27 Februari Referat Den här rapporten beskriver arbetet med konstruktion och utvärdering av en fungerande

Läs mer

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg Programmering Seminarier i datavetenskap, datorteknik och informationsteknik Niklas Broberg niklas.broberg@chalmers.se 2017-09-21 Hur många från Datavetenskap? Datateknik? Informationsteknik? Översikt

Läs mer

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

Läs mer

Distribuerade affärssystem

Distribuerade affärssystem Distribuerade affärssystem Kursens mål Bygga upp, strukturera och programmera distribuerade system med en flerskiktsarkitektur Beskriva och förklara teorier och uttryck som används inom affärskritiska

Läs mer

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion Introduktion till programmering Föreläsning 4: Villkor och rekursion 1 1 Några inbyggda funktioner (med resultat!) Konverterar mellan de grundläggande typerna: >>> int("32") 32 >>> int(3.999) 3 >>> float(32)

Läs mer

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN) Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN) Dagens agenda Admin Tentatid och plats Tillåtet på tentan EDAF10 Föreläsning inför XL-projektet

Läs mer