Erlang. Programspråk 5DV086. Sebastian Backstad

Storlek: px
Starta visningen från sidan:

Download "Erlang. Programspråk 5DV086. Sebastian Backstad"

Transkript

1 Erlang Programspråk 5DV086 Sebastian Backstad Love Engman Joel Viklund Christer Jakobsson Petter Johansson c11sbd c11len c11jvd dv12cjn oi12pjn \_(ツ)_/ 1

2 Innehållsförteckning Inledning 3 Om Erlang 4 Syntax 5 Features 8 Trådar Hot swap Länkade processer 9 Erlang och Haskell 10 För och nackdelar 10 Fördelar Nackdelar Erlang idag 11 Erlang imorgon 12 2

3 Inledning Programspråket Erlang skapades av Joe Armstrong på Ericssons forskningsavdelning Det skapades med ändamålet att tillhandahålla ett bättre sätt a programmera styrsystemen till telefonväxlar. Namnet Erlang sägs vara en referens till den danska matematikern Agner Krarup Erlang eller en förkortning av Ericsson Language. Erlang implementerades först i Prolog och var influerat av programspråket PLEX som användes i tidiga Ericsson telefonväxlar. Från början var det designat som ett praktiskt verktyg för att få jobbet gjort, nämligen att programmera applikationer till telefonväxlar i laborations miljö. Nya verktyg lades successivt till för att lösa ett specifikt problem dom hade när dom programmerade. När de märkte att de aldrig använde en funktion så togs den bort, detta skedde i en så snabb process att det knappt finns någon dokumentation av vad som ändrades i språket under denna tid. Enligt Joe Armstrong var språket ett rent forskningsprojekt från 1986 till 1997 då det på grund av att ett topphemligt projekt att utveckla andra generationens telefonväxel vid namn AXE N avbröts. Då valdes Erlang som bas för en ny ATM växel med namnet AXD301 vars programsystem var helt baserat på Erlang och sades ha en pålitlighet av nine 9 s. Vilket innebör en drifttid på minst % av ett år, seven nines innebär en nertid på max 3,15 sekunder per år så bannade Ericsson användandet av Erlang vid utveckling av ny programvara, detta gjorde att Joe Armstrong och många andra lämnade företaget och Erlang blev open source vid slutet av året och används nu av flera internationella företag. Joe Armstrong blev återanställd på Ericsson Erlang är ett funktionellt programspråk utan typdeklarationer och med dynamisk typing med en garbage collector, det är designat för parallellt arbete på flera sammankopplade system genom att ha inbyggt stöd för detta i jämförelse med många språk som har stöd för trådar via externa bibliotek, Erlangs trådar har inte delade variabler utan samarbetar med varandra genom att skicka meddelanden mellan varandra. Detta gör det väl lämpat för användning på moderna maskiner med flera kärnor. Uppdateringar till styrsystemen måste kunna appliceras utan att systemet stängs ner för att maximera upptiden på telenätet vilket är väldigt kritiskt för samhället att det fungerar. detta åstadkoms med hjälp av något som kallas Hot Swap. Erlang används idag för att bygga skalbara soft real time system med höga krav på drifttid. Det används tex av Facebook för dess chat tjänst som hanterar mer än 100 miljoner aktiva användare, WhatsApp använder även Erlang för dess meddelande tjänster som kan ha 2 miljoner anslutna användare per server. 3

4 Om Erlang Erlang är ett funktionellt programspråk med så kallad immutable data vilket innebär att data ej går att ändra på. Erlang har vad som kallas för ivrig evaluering vilket är motsatsen till lat evaluering som används i bland annat programspråket Haskell. Ivrig evaluering innebär att ett uttryck evalueras direkt då det binds till en variabel. Erlang har även mönstermatchning. 1 Erlang har dynamisk typning, det betyder att variabler som deklareras kan vara av vilken typ som helst. Man behöver inte ange specifikt att en variabel ska vara till exempel ett heltal. Kontroll av typer (t.ex. vid mönstermatchning) sker under körning och inte under kompilering. 2 Koden som skrivs i Erlang kompileras till bytecode och körs på en virtuell maskin. Den virtuella maskin som vanligen används är BEAM. BEAM är en register baserad virtuell maskin som körs i endast en process på operativsystemet. Processer i Erlang implementeras helt av den virtuella maskinen och har ingen koppling till operativsystemet. BEAM kör vanligtvis en tråd per kärna. Om man har ett Erlangsystem med 1000 processer så är det fortfarande endast en process på operativsystemet. 3 Erlang använder sig av en Garbage Collector (GC). Med det menas att minne allokeras och frigörs automatiskt när det inte längre används. I Erlang jobbar GC på varje process för sig. En process i Erlang har sin egen heap, GC frigör minne på varje heap oberoende av andra processer. När garbage collection utförs på en process stannar processen under tiden detta utförs. GCn har också i uppgift att utöka storleken på en heap då detta behövs or lack thereof factory.com/upload/presentations/708/hitchhikerstourofthebeam.pdf

5 Syntax Eftersom Erlang är ett funktionellt språk och ganska likt Haskell så är även syntaxet likt Haskell. En viktig del i Erlangs syntax är att alltid avsluta uttryck med punkt. Se figur 1 för ett exempel på ett uttryck som avslutas med punkt. Figur 1. Addition utförd direkt i Erlang shell. Man behöver inte skriva ett uttryck på en rad. Erlang tolkar ett uttryck fram till nästa punkt. Det går till exempel bra att göra som i figur 2 där uttrycket är uppdelat på flera rader och sedan avslutat med punkt. Figur 2. Addition och subtraktion utförd i Erlang shell. Det är enkelt att deklarera en variabel i Erlang men vissa krav måste uppfyllas. Namnet på variabeln måste börja med stor bokstav. Variabler i Erlang går inte att ändra på, när ett värde är satt på en variabel kommer den ha det värdet konstant. Som vi kan se i figur 3 så går det bra att deklarera variabler som heltal och strängar så länge dom börjar med stor bokstav. När vi försöker skapa en variabel som börjar med liten bokstav så får vi ett felmeddelande. Figur 3. Olika variabler skapas i Erlang Shell, fel när variabel börjar med liten bokstav. 5

6 Varför kan man inte en variabel börja med en liten bokstav? Jo för att då deklarerar man en atom. En atom i Erlang kan ses som en konstant som har sitt eget namn som värde. Skriver man katt i Erlang har man deklarerat en atom som heter katt och har värdet katt. Atomer används oftast ihop med annan data för att beskriva datan. Till exempel i figur 4 har vi gjort en tupel med en atom och ett heltal. Figur 4. En tupel med en atom och ett heltal. Syntax för jämförelser är ganska speciellt i Erlang. Vid lika med jämförelse används == och vid inte lika med används /=, dessutom finns det exakt lika med som skrivs =:= och exakt inte lika med som skrivs =/=. Den vanliga notationen == kan användas när man till exempel jämför en integer och en double. Se Figur 5 för ett exempel där vi jämför en double och en integer med atomen false (som är reserverad i Erlang). Figur 5. Jämförelseoperatorer i Erlang. Att göra en modul med ett antal funktioner i Erlang är enkelt. Man skriver module(namn) högst upp i filen och därefter väljer man vilka funktioner som ska exporteras genom att skriva export([funktionsnamn1/x, funktionsnamn2/y]). där det inom hakparenteserna är en lista. Snedsträck följt av x och y betyder att funktionen tar x eller y antal parametrar. Skulle man till exempel exportera en funktion som heter test som tar två parametrar skulle man skriva export([test/2]).. Detta innebär att man kan ha funktioner med samma namn som tar olika många parametrar och exportera dom. Se figur 6 för ett exempel på detta. Figur 6. En modul som exporterar två funktioner med samma namn men olika antal parametrar. Från figur 6 ser vi hur man definierar funktioner i Erlang. Man skriver funktionsnamnet följt av parenteser och eventuella parametrar därefter gör man en pil och skriver vad funktionen ska 6

7 göra. Man kan skriva flera uttryck efter varandra i en funktion, utan att använda punkt. För att göra detta skiljer man varje uttryck med ett komma. Efter det sista uttrycket skriver man punkt som vanligt. Endast det sista uttrycket blir det som returneras från funktionsanropet. Se figur 7 för ett exempel där vi skapar en modul med en funktion och sedan laddar vi modulen och anropar funktionen ifrån Erlang shell. Figur 7. En modul med en funktion som sedan laddas in i Erlang Shell och anropas. 7

8 Features Erlang är byggt med ett specifikt syfte i åtanke; att vara det bästa programspråket på att hantera 5 stora system som både har många anslutna användare och måste ha hög tillgänglighet. Istället för att skapa ett språk som skall lösa alla världens problem så skapades ett språk som skall lösa ett specifikt problem väldigt bra. För att göra detta krävs en del unika funktioner. Trådar 6 Trådar i Erlang kallas processer eftersom de inte delar något data. I denna rapport kallas de trådar eftersom de, för det mesta, liknar trådar. Erlang implementerar trådar på ett lite annat sätt än det traditionella C sättet. Erlangs Virtual machine tar hand om skapande och context switching av Erlangs trådar. Detta gör att den inte behöver använda operativsystemets inbyggda trådar och processer vilka är mycket långsammare än Erlangs. En av de bra egenskaperna hos Erlangs trådar är att de har ett väldigt litet overhead, ca. 300 ord, så att skapa (spawn) en tråd går väldigt fort. Att skapa en ny tråd i Erlang tar bara ett par µs och är oberoende av antalet redan körande trådar, Java kan ta många gånger så lång tid och är beroende på hur många trådar som är i gång. 7 Ett test som utfördes 2005 av Ericsson visade att man på en vanlig dator (1.5 GHz, 16 GB RAM) kan ha över 20 miljoner trådar igång samtidigt. Tiden det tog att starta en ny tråd var ca. 6.3 µs och att skicka eller ta emot meddelanden tog ca. 5.3 µs. Dessa siffror är säkert lägre idag, 9 år senare. Som tidigare nämnts tar det ganska lång tid att skicka meddelanden mellan trådar i Erlang. Nästan lika lång tid som att starta en ny tråd. Detta är på grund av att trådar i Erlang inte har något delat minne, vilket betyder att trådarna måste skicka och ta emot meddelanden för att kommunicera. Hot swap Erlang är skapat och optimerat för att användas i stora system med många användare anslutna hela tiden. Detta gör att man inte gärna startar om hela systemet så fort man vill uppdatera mjukvaran då detta skulle neka många användare tjänsten under tiden systemet uppdateras. Av denna anledning har Erlang en funktion som kallas hot swap där man kan ladda in en ny version av programmet samtidigt som det körs. Detta görs genom att systemet kan ha flera versioner av samma program laddade (i minnet). När ett program har flera versioner så kör alla nya anslutningar (trådar) med den nya versionen medans de gamla (vars sessioner startade innan uppdateringen aktiverades) fortsätter köra med det gamla programmet tills deras session (tråd) avslutas https://groups.google.com/forum/#!original/comp.lang.functional/5kldn1qj73c/t3py yqmtzmj 8

9 Länkade processer I Erlang kan man skapa länkar mellan processer genom att kalla på link(other_pid). I detta fall skapas en länk mellan processen som gjorde anropet och processen med namnet Other_Pid. När en process avslutas så skickas en signal till alla processer som den var länkad till. Signalen innehåller information om den process som har skickat signalen och anledningen till att processen avslutades. Om en process avslutas normalt så ignorerar andra processer signalen som skickats ut. Om en process har avslutats på ett onormalt sätt och skickat ut en felsignal så termineras de länkade processerna och felsignalen vidarebefordras till deras länkar. Detta byter att man kan länka ihop alla processer så att om en avslutas på ett onormalt sätt så avslutas alla processer 8 Det är även möjligt att fånga signaler i en process så att de inte skickas vidare till nästa länk. Detta uppnås genom att man låter processen tro att signalen är ett vanligt meddelande. Man kan då försöka att hantera problemet istället för att avsluta ytterligare processer. 9 P2 fångar exit signalen från P1, signalen skickas inte vidare till P

10 Erlang och Haskell Vad som skiljer Erlang från exempelvis Java går knappt att svara på. Listan blir (nästan) längre än koden för en quick sort i C ;) Desto meningsfullare blir det att jämföra Erlang med ett annat funktionellt programspråk. En utmärkt kandidat för denna jämförelse är programspråket Haskell. Som nämndes tidigare har Haskell en lat evaluering, till skillnad från Erlangs ivriga motsvarighet. Den allmänna uppfattningen verkar vara att den lata evalueringen är att föredra, men att det går att simulera lat evaluering i Erlang med hjälp av macros. 10 En annan skillnad är att Haskell har statisk typkontroll medan Erlang använder dynamiska typer. En fördel med statisk typkontroll är att fel i koden upptäcks snabbare. Däremot går det lättare att skriva generell kod i programspråk med dynamisk typning. (I Erlang kan man till och med göra evaluera uttrycket asdasd > true!). Haskell är dessutom helt utan sidoeffekter medan Erlang inte är det. I Erlang skickar processer meddelanden till varandra vilket resulterar i sidoeffekter. Andra exempel på sidoeffekter är interaktionen med filer, sockets och databaser. Sidoeffekterna i Erlang öppnar alltså upp en del möjligheter, men ställer samtidigt högre krav på programmeraren. För- och nackdelar Fördelar Erlang utvecklades för att bygga massiva skalbara realtidssystem med höga krav på tillgänglighet. Och det är just inom detta område som språket har sina styrkor. Som tidigare nämnt designades språket med parallitet och trådhantering. Det faktum att trådar inte delar minnesutrymmen (och försiktighet med sido effekter) löser en rad olika trådsäkerhetsproblem. Erlang programmeraren slipper tjafsa med lås hit och synkronisering dit. Något man inte kan säga om programmering i Java och C. "How can you program like that? It's impossible to program!" undrade Joe Armstrong, en av skaparna av Erlang, efter att testat Javas icke trådsäkra Swing bibliotek. 11 Processerna som skapas kräver dessutom inte så mycket minne. Detta innebär att väldigt många processer kan skapas utan att sega ner datorn, något som lämpar sig väl i 10 Haskell John Hughes ( ) 11 peyton jones erlang haskell ( ) 10

11 server mjukvara. Servrar som man vill ha körandes utan avbrott kan dessutom vid uppdatering dra nytta av det i Erlang integrerade hot swapping. En egenskap som inte stöds av så många andra programspråk. 12 En annan fördel med Erlang är att det är ett väl beprövat språk ute i industrin. Erlang har använts i skarpt läge i många år vilket innebär att språket har kunnat finslipas en hel del. 13 Ur detta har OTP (the Open Telecom Platform) fötts. OPT är en samling av beprövade bibliotek, redo att användas av just dig. Att språket är designat av industrin, för industrin, märks även på att det ska gå snabbt att lära sig språket och kunna börja skriva nyttiga applikationer. Industrin har mer nytta av du kan skriva programvaran för en distribuerad server än ett Hello, World i terminalrutan. Ett avsnitt om Erlangs fördelar vore inte komplett utan att nämna felhanteringen. Erlang är designat för att hantera fel såväl i mjukvara och hårdvara. Ett fel ska aldrig kunna resultera i att hela systemet brakar ihop. Språket har många verktyg för att hantera fel, både inbyggt i själva språket, samt som extra tillägg i OTP. Nackdelar Det är viktigt att komma ihåg att Erlang är designat för att lösa en viss sorts av problem. Det finns andra områden där programspråket inte är lika kraftfullt. Exempelvis är Erlang inte lämpat för heavy number crunching, dvs. bearbeta en massa data. Där är imperativa programspråk såsom C och C++ snabbare. En annan nackdel med Erlang är att den inte har något naturligt stöd för strängar. Bearbetning och manipulation av strängar gör sig lämpligare i andra programspråk. 14 Ytterligare en nackdel är att Erlangs virtuella maskin är något långsammare än JVM. Och det faktum att processerna inte delar minnesutrymme innebär också en något långsammare exekvering. Erlang idag Erlang är numera släppt som öppen källkod. Ett tag var programspråket bannlyst från Ericsson men har sedan 2004 börjat användas igen. Av Ericsson används språket bland annat inom 3G teknologin. Även andra stora telekombolag, som till exempel Motorola och T Mobile, använder Erlang i sina projekt. Språket har även fått genomslag inom andra 12 ( ) 13 ( ) 14 out for real ( ) 11

12 användningsområden. Ett exempel är appen WhatsApp där Erlang möjliggör att en chatt server kan hantera två miljoner klienter samtidigt. Ytterligare exempel på projekt där Erlang används är: 15 SimpleDB en distribuerad databas skapad av Amazon.com GitHub webbhotell för projekt som använder Git Call of Duty första persons skjutare för dagisbarn Smarkets betting sajt för sport En gemensam faktor för ovan nämnda projekt är krav på skalbarhet, feltolerans och höga drifttider de tre grundpelarna som utgör programspråket Erlang Erlang imorgon Vi tror att Erlang kommer fortsätta att vara populärt. Språket har visat sig vara konkurrenskraftigt inom sitt område. Smidiga sätt att implementera parallella system kommer säkert bli viktigare allt eftersom kärnorna i datormaskinerna ökar. Författarna bakom språket har även förhoppningar om att språket ska inspirera och influera andra språk. Till exempel att den kraftfulla felhanteringen sprider sig till andra språk. 15 ( ) 12

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017 Lambdas (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017 Funktioner En funktion (i programmeringstermer) är en operation som tar ett eller flera argument,

Läs mer

Introduktion till programmering. Programspråk och paradigmer

Introduktion till programmering. Programspråk och paradigmer Introduktion till programmering Programspråk och paradigmer Vad är ett programspråk? Aprogramming languageis a formal constructedlanguagedesigned to communicate instructions to a machine, particularly

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

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

Introduktion till programmering och Python Grundkurs i programmering med Python

Introduktion till programmering och Python Grundkurs i programmering med Python Introduktion till programmering och Python Hösten 2009 Dagens lektion Vad är programmering? Vad är en dator? Filer Att tala med datorer En första titt på Python 2 Vad är programmering? 3 VAD ÄR PROGRAMMERING?

Läs mer

Föreläsning 2. Operativsystem och programmering

Föreläsning 2. Operativsystem och programmering Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data

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

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner

Läs mer

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg Introduktion till programmering D0009E Föreläsning 1: Programmets väg 1 Vad är en dator? En maskin vars beteende styrs av de innehållet (bitmönster) som finns lagrade i datorns minne (inte helt olikt förra

Läs mer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

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

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

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

Universe Engine Rapport

Universe Engine Rapport 1 Universe Engine Rapport Alexander Mennborg 2017-05-08 2 Inledning I denna rapport diskuteras utvecklingsprocessen till projektet Universe Engine. Denna diskussion omfattar hela utveckling från starten

Läs mer

Snabbguide Visma Compact API Copyright 2006-2010 Visma Spcs AB

Snabbguide Visma Compact API Copyright 2006-2010 Visma Spcs AB Snabbguide Visma Compact API Copyright 2006-2010 Visma Spcs AB Komma igång med Compact API Hur APIet fungerar Visma Compacts API läser och skriver direkt till databasen via ett antal färdiga metoder som

Läs mer

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är

Läs mer

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

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

Grundkurs i programmering - intro

Grundkurs i programmering - intro Grundkurs i programmering - intro Linda Mannila 4.9.2007 Dagens föreläsning Allmän kursinformation: mål, syfte, upplägg, examination, litteratur, etc. Hur arbetar en dator? Hur vi får datorn att förstå

Läs mer

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

Läs mer

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn. Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E Föreläsning 4: Villkor och rekursion Konverterar mellan de grundläggande typerna: >>> int("") >>> int(.999) >>> float().0

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

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

Läs mer

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar Dynamiskt minne Agenda Vad är dynamiskt minne Motivering Hur gör man i C Övningar Minne Datorns primärminne används till olika ändamål De flesta system partitionerar minnet efter användningen: Programkoden

Läs mer

Språket Python - Del 2 Grundkurs i programmering med Python

Språket Python - Del 2 Grundkurs i programmering med Python Hösten 2009 Dagens lektion Funktioner Filhantering Felhantering 2 Funktioner 3 FUNKTIONER Att dela upp program Att dela upp program i mindre delar, funktioner är ett viktigt koncept i programmering. Viktigt

Läs mer

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22 Översikt 732G11 PROGRAMMERING 1 Institutionen för datavetenskap Om kursen Vad är programmering (bra för)? Programmeringsspråket Java Utvecklingsmiljön Eclipse Genomgång av några programexempel Programmering

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

Föreläsning 5: Introduktion av pekare

Föreläsning 5: Introduktion av pekare Föreläsning 5: Introduktion av pekare Det bör påpekas att det som tas upp i introduktionen inte är reella exempel på kod. Man anväder inte pekare till att peka på enstaka heltal som i exemplen nedan, men

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

TDP013 Node.js, JSCoverage, Mocha. Marcus Bendtsen Institutionen för Datavetenskap

TDP013 Node.js, JSCoverage, Mocha. Marcus Bendtsen Institutionen för Datavetenskap TDP013 Node.js, JSCoverage, Mocha Marcus Bendtsen Institutionen för Datavetenskap Återblick - Progressive Enhancement HTML, CSS, JavaScript - Klienten Den statiska webben... Vi känner till HTML, CSS och

Läs mer

LABORATIONSRAPPORT Operativsystem 1 Laboration 1, Ghost, pingpong och Windows 2003 installation

LABORATIONSRAPPORT Operativsystem 1 Laboration 1, Ghost, pingpong och Windows 2003 installation LABORATIONSRAPPORT Operativsystem 1 Laboration 1, Ghost, pingpong och Windows 2003 Laborant/er: Klass: Laborationsansvarig: Sebastian Svensson, Linn Friberg DD11 Peter Josefsson Utskriftsdatum: 2011-09-05

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

Vad är molnet?... 2. Vad är NAV i molnet?... 3. Vem passar NAV i molnet för?... 4. Fördelar med NAV i molnet... 5. Kom igång snabbt...

Vad är molnet?... 2. Vad är NAV i molnet?... 3. Vem passar NAV i molnet för?... 4. Fördelar med NAV i molnet... 5. Kom igång snabbt... Produktblad för NAV i molnet Innehåll Vad är molnet?... 2 Vad är NAV i molnet?... 3 Vem passar NAV i molnet för?... 4 Fördelar med NAV i molnet... 5 Kom igång snabbt... 5 Bli kostnadseffektiv... 5 Enkelt

Läs mer

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner

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

Programmering i C++ Kompilering från kommandoraden

Programmering i C++ Kompilering från kommandoraden Programmering i C++ Kompilering från kommandoraden Sven Gestegård Robertz Datavetenskap, LTH 9 november 2015 Sammanfattning Ibland vill man, av olika anledningar, inte använda en stor integrerad utvecklingsmiljö

Läs mer

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition): Översikt Motivering Syntax och semantik Imperativa språkets byggstenar och Python Datatyper Tilldelning och uttryck Kontrollstrukturer (på satsnivå) Subprogram Relaterade avsnitt: PL 3.1-3.2, 5.1-5.3,

Läs mer

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... } En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class

Läs mer

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna. Använd olika lager. Döp lagren! Organisera era bibliotek! Design av interaktiv multimedia Ge era symboler instansnamn för att hitta dem med AS. Nytt för denna kurs: Ingen ActionScript-kod i.fla-filen!

Läs mer

TUTORIAL: SAMLING & KONSOLL

TUTORIAL: SAMLING & KONSOLL TUTORIAL: SAMLING & KONSOLL Denna tutorial är en fortsättning på den tutorial där vi skapade klassen Car och sedan objekt av denna klass. Vi skall nu lära oss att lagra dessa objekt i en samling och även

Läs mer

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan. Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen

Läs mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och... Allt du behöver veta om MATLAB: Industristandard för numeriska beräkningar och simulationer. Används som ett steg i utvecklingen (rapid prototyping) Har ett syntax Ett teleskopord för «matrix laboratory»

Läs mer

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket? Jonas Kvarnström jonkv@ida.liu.se 2013 Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket? Rena OO-språk (allt är objekt) Scala, Smalltalk, Eiffel, Ruby,

Läs mer

Åtkomst och användarhandledning

Åtkomst och användarhandledning Innehållsförteckning Problemspecifikation...1 Åtkomst och användarhandledning...2 Systembeskrivning...3 Lösningens begränsningar...5 Problem och reflektioner...6 Testkörning...7 Bilagor......Källkod...

Läs mer

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: Föreläsning 1 OH: Övergripande information Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: * maskinspråk = ettor och nollor, kan bara en maskin förstå. * programmeringsspråk

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

Användar- och systemdokumentation

Användar- och systemdokumentation Användar- och systemdokumentation Linköpings universitet Examinator:, IDA marme647@student.liu.se Utskriftsdatum: Innehållsförteckning Inledning... 3 Användarhandledning... 4 Systemkrav och installation...4

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

Imperativ programmering. Föreläsning 4

Imperativ programmering. Föreläsning 4 Imperativ programmering 1DL126 3p Föreläsning 4 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering

Läs mer

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1. Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, sk Online-tjänster. Dessa erbjuder inte bara hämtning

Läs mer

Innehålls förteckning

Innehålls förteckning Programmering Uppsats i skrivteknik Axxell Företagsekonomi i informationsteknik 19.3.2015 Respondent: Tomas Björklöf Opponent: Theo Wahlström Handledare: Katarina Wikström Innehålls förteckning 1. Inledning...3

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

Utvecklingen av ett tidregistrerings- och faktureringssystem

Utvecklingen av ett tidregistrerings- och faktureringssystem Datavetenskap Opponenter: Anders Heimer & Jonas Seffel Respondenter: Daniel Jansson & Mikael Jansson Utvecklingen av ett tidregistrerings- och faktureringssystem Oppositionsrapport, C-nivå 2006:10 1 Sammanfattat

Läs mer

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada. Sockets: server with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.Text_IO; with TJa.Sockets; use TJa.Sockets; procedure Server is -- Servern

Läs mer

Programmering för språkteknologer I, VT2012. Rum

Programmering för språkteknologer I, VT2012. Rum Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska

Läs mer

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2. Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2. Hur vi jobbar med ett program. 1. Vad vi skriver (med hjälp av redigeringsprogrammet Emacs) på datorn: // Fig. 2.1: Welcome1.java // A first program in

Läs mer

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning Generell säkerhet Här finns det inga direkta rätt eller fel. Snarare saker man bör tänka på när man implementerar ett program. Kort sagt: Efter att du kommit på hur du tänkt göra, sov på saken och tänk

Läs mer

Föreläsning 3. Programmering, C och programmeringsmiljö

Föreläsning 3. Programmering, C och programmeringsmiljö Föreläsning 3 Programmering, C och programmeringsmiljö Vad är programmering? Ett väldigt kraftfullt, effektivt och roligt sätt att kommunicera med en dator Att skapa program / applikationer till en dator

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

Läs mer

Simon Boström Introduktionskurs i Datateknik

Simon Boström Introduktionskurs i Datateknik KTH KISTA Linefollower Med parprogrammering i NXC Simon Boström 2014-09-04 simbos@kth.se Introduktionskurs i Datateknik Sammanfattning Laborationstillfället var till för att man som ny på KTH skulle lära

Läs mer

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det). LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, Tomas Johansson, 491000 Resultatet anslås senast 08-05-16 i A-huset. Tillåtna

Läs mer

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1 Grundläggande programmering DVG A08 & ISG A04 Allmän information Grupp C och D slås ihop Schemat är ändrat Kurs i programmering utan förkunskaper Hjälp oss med detta Lita inte på era klasskamrater De ställer

Läs mer

Operativsystem. Hierarkin för hårdvara läses nerifrån

Operativsystem. Hierarkin för hårdvara läses nerifrån Operativsystem DOS DiskOperatingSystem - ett jobb i taget. Dagens Operativsystem - prioriterar olika jobb. Om ett jobb pausas körs ett annat. Operativsystems viktigaste funktion är att bilda gränssnitt

Läs mer

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Att förstå variabler Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Vad är en variabel? En variabel är en plats att lagra information. Precis

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (

Läs mer

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000

Läs mer

Programsystemkonstruktion med C++: Övning 2. Karl Palmskog september 2010

Programsystemkonstruktion med C++: Övning 2. Karl Palmskog september 2010 Programsystemkonstruktion med C++: Övning 2 Karl Palmskog palmskog@kth.se september 2010 Specalfunktioner i klasser Konstruktorer i konstruktorerna för en klass initieras klassens medlemmar initialvärden

Läs mer

Introduktion till hårdvara, mjukvara och operativsystem

Introduktion till hårdvara, mjukvara och operativsystem Introduktion till hårdvara, mjukvara och operativsystem Grundläggande operativsystem 1DV415 1 1 Lärare Marcus Wilhelmsson Universitetsadjunkt i datavetenskap Linux, UNIX (Solaris, OpenSolaris, Mac OS X),

Läs mer

Webservice & ERP-Integration Rapport

Webservice & ERP-Integration Rapport Webservice & ERP-Integration Rapport Hardwood AB Mustafa Lazem 930916-9713 Jonas Ahrne 920325-0379 Hasan Nerjovaj 940130-7195 Stefan Liden 920628-0639 2014-05-18 Innehåll Bakgrund... 2 Syfte... 2 Projektbeskrivning...

Läs mer

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot KUNGLIGA TEKNISKA HÖGSKOLAN Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot Josef Karlsson Malik 2015-09- 02 jkmalik@kth.se Introduktionskurs i datateknik (II0310) Sammanfattning

Läs mer

TMP Consulting - tjänster för företag

TMP Consulting - tjänster för företag TMP Consulting - tjänster för företag Adress: http://tmpc.se Kontakta: info@tmpc.se TMP Consulting är ett bolag som utvecklar tekniska lösningar och arbetar med effektivisering och problemslösning i organisationer.

Läs mer

Imperativ programmering

Imperativ programmering Imperativ programmering 1DL126 3p Imperativ programmering Jesper Wilhelmsson ICQ: 20328079 Yahoo: amigajoppe MSN / epost: jesperw@it.uu.se Rum: 1335 Tel: 471 1046 Imperativ programmering Vilka programmeringsspråk

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? jonas.kvarnstrom@liu.se 2014 2017 jonas.kvarnstrom@liu.se

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP Objekt-orienterad programmering OOP F1:1 Delkursansvarig Epost Kursens webbsidor sm@fc.dsv.su.se http://people.dsv.su.se/~sm/oop/ Föreläsning 1 Introduktion till kursen OOP Vad är Java? Ett första

Läs mer

PARALLELLISERING AV ALGORITMER PROCESSORER FÖR FLERKÄRNIGA

PARALLELLISERING AV ALGORITMER PROCESSORER FÖR FLERKÄRNIGA PARALLELLISERING AV ALGORITMER FÖR FLERKÄRNIGA PROCESSORER 870928 3017 Johan Gustafsson 870303 4952 Gustaf David Hallberg 880525 8210 Per Hallgren 801117 0597 Wuilbert Lopez 1/7 Innehållsförteckning Table

Läs mer

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin) Lektion Java Grunder Javas historia Ursprungligen utvecklades Java (1991) för att användas i olika typer av konsumentelektronik (mikrovågsugnar, videoapparater) av programmerare på Sun. Språket kallades

Läs mer

Talsystem Teori. Vad är talsystem? Av Johan Johansson

Talsystem Teori. Vad är talsystem? Av Johan Johansson Talsystem Teori Av Johan Johansson Vad är talsystem? Talsystem är det sätt som vi använder oss av när vi läser, räknar och skriver ner tal. Exempelvis hade romarna ett talsystem som var baserat på de romerska

Läs mer

Grunderna i stegkodsprogrammering

Grunderna i stegkodsprogrammering Kapitel 1 Grunderna i stegkodsprogrammering Följande bilaga innehåller grunderna i stegkodsprogrammering i den form som används under kursen. Vi kommer att kort diskutera olika datatyper, villkor, operationer

Läs mer

Att skriva till och läsa från terminalfönstret

Att skriva till och läsa från terminalfönstret Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen

Läs mer

TUTORIAL: KLASSER & OBJEKT

TUTORIAL: KLASSER & OBJEKT TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan

Läs mer

TDP002 Imperativ programmering

TDP002 Imperativ programmering TDP002 Imperativ programmering Introduktion till kursen och python Eric Elfving Institutionen för datavetenskap (IDA) Översikt Programmering En introduktion Python Köra och skriva program Python grunderna

Läs mer

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Introduktion till integrering av Schenkers e-tjänster. Version 2.0 Introduktion till integrering av Schenkers e- Version 2.0 Datum: 2008-06-18 Sida 2 av 8 Revisionshistorik Lägg senaste ändringen först! Datum Version Revision 2008-06-18 2.0 Stora delar av introduktionen

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

Läs mer

KUNG. TEKNISKA HÖGSKOLAN. Laboration. Programmering av LEGO-robot

KUNG. TEKNISKA HÖGSKOLAN. Laboration. Programmering av LEGO-robot KUNG. TEKNISKA HÖGSKOLAN Laboration Programmering av LEGO-robot 2012-09-01 E-post: Maxwin@KTH.se Introduktionskurs i datateknik (II1310) Medlaborant: Andreas Bergstrand Sammanfattning I den här rapporten

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

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

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

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio Ditt första C#-program med Visual Studio 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å

Läs mer

Förra föreläsningen: Olika nivåer av meddelanden. Från oblockad sändning till. RPC: Parameterpassning, registrering, felhantering, säkerhet, kompilering ONC RPC: XDR, portmapper Brandväggar, dynamisk brandväggskonfigurering,

Läs mer

Föreläsning 5 5DV086 - Programspråk

Föreläsning 5 5DV086 - Programspråk Föreläsning 5 5DV086 - Programspråk Petter Ericson (pettter@cs.umu.se) Umeå University 6 februari, 2015 Haskell-frågor? Haskell-tips do-syntax State-monaden Dagens plan Programspråksteori Varför? Vad?

Läs mer

Programmering. Hur, var, när och varför. 22 November. Lars Ohlén Tieto lars.ohlen@tieto.com

Programmering. Hur, var, när och varför. 22 November. Lars Ohlén Tieto lars.ohlen@tieto.com Programmering Hur, var, när och varför 22 November Lars Ohlén Tieto lars.ohlen@tieto.com Agenda Om mig Programmering Vad är? Varför kunna? Hur använda kunskapen? Framtiden Sammanfattning Q+A 2 Om mig Arbetat

Läs mer

Emacs. Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016

Emacs. Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016 Emacs Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016 Historia 2/21 Utvecklas konstant, från 70-talet Är en generellt texteditor (INTE ordbehandlare) som fokuserar på texten, inte utseendet

Läs mer