Polymorfi (många skepnader) är egentligen en mängd olika abstraktionsmekanismer och en indelning skulle kunna se ut så här: polymorfi
|
|
- Karolina Eklund
- för 5 år sedan
- Visningar:
Transkript
1 Polymorfi Polymorfi (många skepnader) är egentligen en mängd olika abstraktionsmekanismer och en indelning skulle kunna se ut så här: polymorfi universell ad hoc parametrisk inclusion coersion overloading DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
2 Parametrisk polymorfi Parametrisk polymorfi är svår att skilja från generik, men det finns en skillnad. Parametrisk polymorfi betyder att en funktion (procedurer) accepterar ett antal olika typer av parametrar, medan en generisk funktion/procedur/datastruktur vid instansiering ger en ny funktion/procedur/datastruktur som är specialanpassad till den aktuella typen. Parametrisk polymorfi har vi i fördefinierade funktioner i många språk, där den aktuella typen ger val av funktion som till slut hanterar problemet. Write/WriteLn i Pascal accepterar godtyckliga utskrivbara värden, vilka konverteras till text och skrivs på fil/skärm. En hel mängd med olika procedurer finns i bakgrunden för att konvertering skall ske på rätt se. Parametrisk polymorfi finns i ML, som accepterar godtyckliga typer som argument till funktioner om ingen bearbetning av värden sker. DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
3 Parametrisk polymorfi... Exempel: fun id x = x; fun first (x,y) = x; fun first (x::y) = x; fun second (x,y) = y; fun second (x::y) = y; DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
4 Generik Generiska funktioner och procedurer och även typer finns i många språk, t.ex. Java och ADA. Enklast är ett exempel med en tänkt utbyggnad av Pascal. FUNCTION id <T>(i: T): T; VAR t1 : T; BEGIN id := i END; FUNCTION f<t>(i:t; PROCEDURE todo(var j:t)): T; BEGIN todo(i); f := i END; DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
5 Generik... FUNCTION intid := id <Integer>; FUNCTION RealF := f <Real>; DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
6 Monomorfi Parametrisk polymorfi innebär abstraktioner där information om parametertypen inte är uttömmande. Motsatsen till polymorfi är monomorfi. Monomorfi föreligger i statiskt typade språk som Pascal, C. Undantag är fördefinierade procedurer och funktioner som abs, eof, eoln (Pascal). Övriga statiskt typade språk har i huvudsak monomorfi, men många har mekaismer för parametrisk polymorfi. Tex har Simula viss, begränsad parametrisk polymorfi, ML kräver inte att en typ skall bestämmas om inte typberoende operationer ingår i algoritmen till en funktion, Scheme har parametrisk polymorfi (define (f x) (cond ((atom? x)...) ((number? x)...) (...))) DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
7 Overloading (överladdning) samma namn för många olika funktioner. Systemet avgör vilken funktion som skall anropas baserat på indatatypen. T. ex. fungerar +, och på alla typer av tal (i de flesta av språken) och mängder (Pascal). I vissa varianter av Standard ML finns overloading (NJSML) och det finns även i ADA, C++ och Java. Exempel: (Pascal) heltalsnegering (int int) flyttalsnegering (real real) heltalssubtraktion (int int int) flyttalssubtraktion (real real real) mängddifferens (set set set) DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
8 Omgivningsoberoende överladdning Inparametrarnas typ avgör vilken funktion som anropas vid varje enskilt anrop. Tillämpas i t.ex. Pascal och ML, exempel: Abs(i) (int int) Abs(r) (real real) Omgivningsberoende överladdning: I ADA gäller normalt för / att (int int int) eller (real real real) beroende på inparametertyperna men man kan i någon omgivning deklarera / t ex som (int int real) varvid denna lokala överladdning av funktionen anropas istället för (int int int)-varianten i den aktuella omgivningen. DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
9 Parametriserade typer Parametriserade typer är typer som accepterar typer som argument och genererar en ny typ. Parametriserade typer är abstraktioner av abstraktioner, vars instanser är abstraktioner där en familj av typer ersatts av en typ. Det som ligger närmast till hands för exempel är Pascals filer: FILE OF Integer, File of Char, TEXT, o.s.v. eller de generiska listorna i ML: type intlist = int list; där intlist är en instans av den inbyggda generiska listtypen a list. I Java finns det inbyggt i språket att alla datatyper "ärver" typen Object. Allt är m a o subtyper (i någon mening) till denna typ. Fullt polymorfa lagringsstrukturer tillhandahålls för listor, träd, stackar, köer,... DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
10 Typinferens Monomorf typinferens: fun even n = n mod 2 = 0; fun plus m n = m + n; int bool even n? = plus mod 0 int m? n + n 2 int m n DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
11 Typinferens... fun incr m = m + 1; incr m + m 1 Polymorf typinferens = operationen OK trots att entydig info om inparametertyper inte finns, men det finns en entydig relation mellan in- och utdata. Exempel: fun id x = x; fun fst x y = x; id fst x x x y x DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
12 Typkonvertering måste ske (om möjligt) då en operation kräver en viss typ av argument men erhåller ett värde av en annan typ. Pascal har automatisk konvertering från integer till real i ett antal fall. Exempel: VAR r: Real; i: Integer; i := 12; r := i / 5; Här konverteras i s värde till 12.0 och 5 till 5.0 eftersom flyttalsdivision kräver att operanderna är flyttal. Resultatet läggs i variabeln som r refererar till. i := r / 5 blir fel eftersom 5 konverteras till 5.0 och r / 5.0 ger ett flyttal, men någon automatisk konvertering till heltal finns inte i Pascal. DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
13 Typkonvertering... I Simula hade det gått bra eftersom resultatet trunkeras till ett heltal. I ML går ingendera varianten eftersom typkonvertering sker explicit: real int genom floor som trunkerar och int real genom funktionen real. I ADA finns en mängd funktioner med samma namn som typen för konvertering till en viss typ, men ingen implicit konvertering. DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
14 Subtyper Subtyper finns i en mängd olika skepnader. Den enklaste är den som finns i Pascal. TYPE weekday = (mon, tue, wed, thu, fri, sat, sun); workday = mon.. fri; weekendday = sat.. sun; natural = 0.. MaxInt; smallint = ; smallletter = a.. z ; Man kan i Pascal definiera subtyper till alla diskreta typer. Alla sådana blir då delintervall av den ursprungliga domänen. Alla operationer som finns i den ursprungliga typen finns även tillgängliga för subtypen. Man säger att subtypen ärvt alla operationer. I vissa språk kan man lägga till attribut (egenskaper) och modifiera operationsmängden (Simula, Smalltalk, C++, Borland Pascal, Eiffel, m fl). DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
15 Hopp och avbrott Hittills har vi studerat programkonstruktioner vars semantik inte är svårförståelig. "Utför a och b och c och...", "utför a eller b beroende på c", "utför a tills b", "utför a så länge b gäller", "utför a b ggr"... Det är enkelt att följa skeendet, sematiken är klar, men man kan inte skapa avbrott som hoppar över/eller ut ur en programmodul vid plötsliga felsituationer. Därför finns i de flesta programspråk kommandon för att avbryta ett program eller en del av ett program eller för att hoppa till en annan plats i programmet. DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
16 Hopp och avbrott... Normalt programflöde beskrivs av begreppen sekvens, val och upprepning. Alla tre är väldefinierade. Alla tre förutsätter att programflödet fortsätter utan hinder. Ett hopp är ett direkt kommando till programmet att fortsätta exekvera någon annanstans. Vanligast: goto label där label är en identifierare, ett radnummer, eller en speciellt deklarerad etikett. I Scheme finns inte hopp av detta slag. I Pascal finns hopp, men det finns restriktioner avseende användningen. DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
17 Hopp och avbrott... Ex: PROGRAM jumptest(input, Output); LABEL 999; <övriga deklarationer> BEGIN... goto 999; : END; Etiketter eller lägen av detta slag måste vara numeriska och måste deklareras. Man får inte hoppa in i ett block eller en slinga. Man får hoppa ut ur block och slingor. Man kan hoppa vart som helst så länge man inte bryter mot ovanstående. DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
18 Hopp och avbrott... Följande är alltså förbjudet: PROGRAM a; LABEL 3; VAR q, r: Char; BEGIN q := a ; r := x ; GOTO 3; WHILE q < r DO BEGIN q := succ(q); 3: WriteLn( hej hopp ) END END. DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
19 Hopp och avbrott... Men detta är tillåtet: PROGRAM a; LABEL 3, 4, 5; VAR q, r: Char; BEGIN q := a ; r := x ; GOTO 3; 4: IF q >= r THEN GOTO 5; q := Succ(q); 3: WriteLn(q, : hej hopp ); GOTO 4; 5: END. DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
20 Hopp och avbrott... Med hopp framåt och bakåt i koden försvåras förståelsen av programmet och semantiken blir mycket komplicerad. Det är tungt för systemet att avveckla ett eller flera block p g a ett hopp, men det kan bli nödvändigt. Normalt undviker man hopp bakåt i koden eftersom det enkelt går att göra slingor som eliminerar behovet. De enda hopp framåt som man brukar tillåta är uthopp för att åtgärda fel eller avbryta programmet om ett fatalt fel uppstått. Exempel: PROGRAM feluthopp(input, Output); LABEL 998,999;... PROCEDURE fatalerror(msg: errormsg); BEGIN WriteLn(msg); GOTO 999; END; DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
21 Hopp och avbrott... PROCEDURE nonfatalerror(msg: errormsg); BEGIN WriteLn(msg); GOTO 998; END; BEGIN {Huvudprogram} WHILE status <> quit DO BEGIN... IF <villkor1> THEN fatalerror(... );... IF <villkor2> THEN nonfatalerror(... ); :... END {WHILE}; 999:... END. DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
22 Hopp och avbrott... Ex: (fult och onödigt)... 1: IF <villkor> THEN GOTO 1 ELSE GOTO 2; 2:... Med sådana program blir livet inte lätt (men de finns!). Ex: FORTRAN: IF v 65, 1, DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
23 Hopp och avbrott... I Simula behöver man inte deklarera lägen men kan göra det. Och värre - de kan sändas som parametrar: PROCEDURE recx(exit, i); NAME exit; LABEL exit; INTEGER i; BEGIN exit: IF i > 10 THEN GOTO exit ELSE recx(exit, i+1); END; Vilket av alla lägen exit skall man hoppa till vid anropet recx(quit,10)? Skall man hoppa till något globalt läge som heter quit? Ibland ser man maskerade goto, som kallas escape, exit, continue, cycle,... Dessa är naturligtvis goto med speciell semantik. FOR i := 1 TO 25 DO BEGIN exit WHEN v1; continue WHEN v2; sats; END; DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
24 Hopp och avbrott... Efter en berömd artikel av Donald Knuth kallad: Goto considered harmful? började försök att hitta mer strukturerade sätt att hantera problemet med att extraordinära åtgärder ibland är ofrånkomliga. Knuth pekade bland annat på att struktureringsmekanismer och grafiska hjälpmedel uppmuntrade spagettiprogrammering. Flödesplaner, som används flitigt, ansågs vara ett bra sätt att erhålla spagettiprogram. Pseudokod är bättre, men bäst är att inte använda goto, utan se sig om efter effektivare verktyg. DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
25 Hopp och avbrott... EXCEPTIONS Införande av hantering av exceptionella situationer har i vissa språk helt eliminerat behovet av goto. Ex: (ADA) PROCEDURE divide (x,y: Integer): Integer; DivideException: EXCEPTION; BEGIN IF y = 0 THEN RAISE DivideException ELSE divide := x DIV y; EXCEPTION WHEN DivideException => PUT_LINE ("försök att dividera med 0"); raise; -- låt systemet avsluta programmet END; {divide} DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
26 Hopp och avbrott... Man kan låta bli det sista raise-kommandot. Då anses felet hanterat på tillfredsställande sätt. Det sista raise-kommandot säger till systemet att sända vidare DivideException tills en till hanterare påträffas. I det här fallet finns ingen eftersom avbrottet deklarerats lokalt och programmet avslutas då. DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
27 Hopp och avbrott... I Java: try { try { this; this; that; that; } } catch (Exception e) { catch (IOException e) { cleanup; fixproblem(e) ; } } finally { always; } DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
28 SLUT! DA2001 (Föreläsning 27) Datalogi 1 Hösten / 28
Lagring... DA2001 (Föreläsning 23) Datalogi 1 Hösten / 68
Lagring... Variabler är dataobjekt som används för lagring av värden. Dessa värden kan uppdateras och avläsas. I imperativ programmering används variabler för att lagra tillståndet hos den värld man avbildar
Sista delen av kursen
Sista delen av kursen handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk (vad betyder det) beskrivning
Programspråkslingvistik. Sista delen av kursen. Ett programspråk
Sista delen av kursen Programspråkslingvistik handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk
Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt
Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken
Pascal... Pascal. Pascal... Pascal...
... Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken
Sista delen av kursen
Sista delen av kursen handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk (vad betyder det) beskrivning
Några saker till och lite om snabbare sortering
Några saker till och lite om snabbare sortering GOTO hemskt eller ett måste? CASE enkla val över diskreta värdemängder Snabb sortering principer Snabb sortering i Scheme och Pascal QuickSort (dela städat
Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.
Omgivningar Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem. (define (sqrroot c) (define (fixpoint guess c eps) (define
GOTO och lägen. Några saker till och lite om snabbare sortering. GOTO och lägen (3) GOTO och lägen (2)
Några saker till och lite om snabbare sortering GOTO och lägen GOTO hemskt eller ett måste? CASE enkla val över diskreta värdemängder Snabb sortering principer Snabb sortering i Scheme och Pascal QuickSort
Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19
Typsystem Typsystem finns i alla programmeringsspråk. Avsikten med typsystem är att kontrollera att uttryck är säkra i den bemärkelsen att innebörden i operanderna är klar och inte är motsägelsefull och
Typsystem. Typsystem... Typsystem... Typsystem... 2 *
Typsystem Typsystem finns i alla programmeringsspråk. Avsikten med typsystem är att kontrollera att uttryck är säkra i den bemärkelsen att innebörden i operanderna är klar och inte är motsägelsefull och
Deklarationer/definitioner/specifikationer
Deklarationer/definitioner/specifikationer Konstantdefinitioner innebär att ett namn binds och sätts att referera till ett värde som beräknas vid kompileringen/interpreteringen och som under programmets
Abstraktion. procedurabstraktion. DA2001 (Föreläsning 26) Datalogi 1 Hösten / 27
Abstraktion Inom programmeringstekniken används två former av abstraktion dataabstraktion och programabstraktion. Dataabstraktion handlar om aggregat för att gruppera samhörande data. Programabstraktion
Abstraktion. Abstraktion... Abstraktion... Abstraktion...
Abstraktion Inom programmeringstekniken används två former av abstraktion dataabstraktion och programabstraktion. Dataabstraktion handlar om aggregat för att gruppera samhörande data. Programabstraktion
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.
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker
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
Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning
1 Dagens föreläsning Programmering i Lisp - Block, räckvidd - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
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
Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel
Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av
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
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
GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse
GRUNDER I VHDL Innehåll Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse KOMPONENTMODELL Modell för att beskriva komponenter Externt interface Intern funktion
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
Föreläsning 6: Introduktion av listor
Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.
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
Standardfilerna Input och Output
Standardfilerna Input och Output Standardfilerna Input och Output är textfiler av typen TEXT (som bara finns för filer). Innehållet är av typen Char och filerna är strukturerade i form av rader. En sådan
Standardfilerna Input och Output. Filer... Filer... vanlig utbyggnad för ökad dynamik. Filer... filtyper
Standardfilerna Input och Output... Standardfilerna Input och Output är textfiler av typen TEXT (som bara finns för filer). Innehållet är av typen Char och filerna är strukturerade i form av rader. En
Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program
Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i
Introduktion till Jasmine 1.2 ODQL
Introduktion till Jasmine 1.2 ODQL I detta avsnitt beskrivs ett antal praktiska handgrepp som behövs för att köra Jasmine ODQL. 1 ODQL miljön Man kan enklast köra ODQL mot Jasmine från ett vanligt Command
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
Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016
Objektorienterad Programkonstruktion Föreläsning 4 8 nov 2016 Nästade klasser I Java går det att deklarera en klass inuti en annan klass. Vi kallar detta för att en yttre klass innehåller en inre klass.
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
Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.
är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar
Datalogi, grundkurs 1. Lösningsförslag till tentamen
Datalogi, grundkurs 1 Lösningsförslag till tentamen 6 maj 2000 1. För att proceduren sortera ska fungera som tänkt kan den se ut på följande sätt: const min = 1; max = 3; type tal = integer; index = min..max;
Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk
Föreläsning 2 steknik och C DD1316 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program
Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.
är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar
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
Språket Python - Del 1 Grundkurs i programmering med Python
Hösten 2009 Dagens lektion Ett programmeringsspråks byggstenar Några inbyggda datatyper Styra instruktionsflödet Modulen sys 2 Ett programmeringsspråks byggstenar 3 ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR
Tentamen Grundläggande programmering
Akademin för Innovation Design och Teknik Tentamen Grundläggande programmering Kurskod: DVA103 Datum 2012-06-11 Tid 14.10 16.30 Examinator: Lars Asplund Maxpoäng: 48 Betygsgränser: Betyg 3: 20 Betyg 4:
Föreläsning 15: Parallella subrutiner. Parallellitet. Varför parallella underprogram?
Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden Parallellitet Ofta är det nödvändigt eller önskvärt att programdelar exekveras
Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1
Skolan för Datavetenskap och kommunikation DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 1 Kursinfo Diagnostiskt prov Python-intro: print variabler reserverade ord input kommentarer beräkningar
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
F4. programmeringsteknik och Matlab
Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner
Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34
Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger
Kontinuerliga listor. Fält (listor) Kontinuerliga listor... Kontinuerliga listor...
Fält (listor) Kontinuerliga listor En lista av värden 2 3 4 5 6 7 8 9... kan naturligtvis representeras av tal1, tal2, tal3,... men det finns då ingen möjlighet att välja element utan att explicit ange
Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs
Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera först talet 37 med 2. Använd heltalsdivision. Det ger kvoten
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
DD1314 Programmeringsteknik
Skolan för Datavetenskap och kommunikation DD1314 Programmeringsteknik Föreläsning 1 o print o variabler o reserverade ord o input o kommentarer o beräkningar o datatyper o if-satser Kursinformation Programmering:
Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser
Introduktion till programmering Föreläsning 2: Variabler, uttryck och satser 1 1 Värden De grundläggande saker som en dator manipulerar resultaten av beräkningar kallas värden Värden vi stött på: 2 och
Föreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?
Föreläsning 10 Datalogi 1 DA2001 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer på skärmen print( Hej ) print( Hur är det?
Grundkurs Programmering
HI124 Grundkurs Programmering F7b: Funktioner på djupet! A. Cajander, STH 6 1 5 42 3.14f a float char short circuit order of subexp eval. Dagens fokus = + - * / % ++ -- + - * / % & ^ > ==!= > < >=
Datalogi, grundkurs 1. Lösningsförslag till tentamen
Datalogi, grundkurs 1 Lösningsförslag till tentamen 10 december 2008 1. a. Man testar med typiska värden, gränsvärden och värden utanför specificerad indatavärdemängd. Helst med alla permutationer av
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
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
Imperativ programmering. Föreläsning 3
Imperativ programmering 1DL126 3p Föreläsning 3 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering
Klassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1
Skolan för Datavetenskap och kommunikation DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 1 Kursinfo Python-intro: print variabler reserverade ord input kommentarer beräkningar datatyper if-satser
Några saker till och lite om snabbare sortering
Några saker till och lite om snabbare sortering Generellt om avbrott Generera avbrott Snabb sortering principer Snabb sortering i Scheme och Python QuickSort (dela städat slå ihop) Mergesort (dela slå
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
Objektorienterad programmering
Objektorienterad programmering Föreläsning 14 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Agenda Exceptionella händelser Vanliga Programfel Exception-klasser Automatiskt genererade
Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program
Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik för ingenjörer, VT06 2 Repetition Repetition -
Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:
(22 januari 2016 F2.1 ) Föreläsning 2 Täcker material från lektion 1, 2, 3 och 4: Datatyper Aritmetik Tecken och strängar Klasser, Objekt Metoder Villkor, villkorssatser och iterationer main-metoden Kodstandard
Funktioner, Procedurer och Parametrar. Funktioner, Procedurer och Parametrar... Funktioner, Procedurer och Parametrar procedurspecifikation
Funktioner, Procedurer och Parametrar I delar vi upp underprogram i två grupper : Funktioner: lämnar alltid ett värde som resultat Funktionsnamnet får ett värde i funktionen genom: funktionsnamn := expr;
Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk
Föreläsning 2 steknik DD1310 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer funktioner betyder att instruera en dator Ett program
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
Repetition i Pascal. Exemplen fac. Exemplen fac i Pascal. Exemplen fac motivering. Orginalet
Repetition Introduktion Repetition i Exemplen fac Orginalet I Scheme använde vi rekursion för all slags repetition. Efterom Scheme är ett funktionellt språk återsänder alla språkkonstruktioner ett värde
Variabler, värden och typer
Variabler, värden och typer Viktigt att förstå på djupet: För programmering i många språk, t.ex. Java För kommande objektorientering! jonas.kvarnstrom@liu.se 2017 Fråga kommentera avbryt! Intro till variabler
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
Enkla datatyper minne
Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in
Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.
Analog Digitalitet Kontinuerlig Direkt proportionerlig mot källan Ex. sprittermometer Elektrisk signal som representerar ljud Diskret Digital Representation som siffror/symboler Ex. CD-skiva Varje siffra
Programmering A. Johan Eliasson johane@cs.umu.se
Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer
Typkonvertering. Java versus C
Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då
Programmeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 6: Filhantering Henrik Björklund Umeå universitet 13 oktober 2009 Björklund (UmU) Programmeringsteknik 13 oktober 2009 1 / 22 Textfiler Filer är sekvenser
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning Generiska klasser Undantag Interface Nästlade klasser 1 Problem:
Grundläggande datalogi - Övning 1
Grundläggande datalogi - Övning 1 Björn Terelius October 30, 2008 Python är ett tolkat språk som kan köras interaktivt. tcs-ray:~/grudat08>python >>> 11+3*4 23 >>> a = 15 >>> b=a >>> print "a =", a, "b
2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik
2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det riktiga provet tar 45 minuter (en lektionstimme) och det
Hjälpmedel för kompilatorkonstruktion, DVB004
Hjälpmedel för kompilatorkonstruktion, DVB004 Version 4.2 021104 Göran Fries 031104 GF Kompilatorn kan lämpligen konstrueras i tre ganska fristående pass (p1,p2,p3). Första passet gör en lexikalisk analys,
Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk
Föreläsning 2 steknik DD1310 Python introduktion Variabler Datatyper Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program är
TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18
TDDC74 Programmering: Abstraktion och modellering Datortenta - 2018-06-07, kl 14-18 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis
732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner
732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (
Testning av program. Verklig modell för programutveckling
Fel i program När man skriver program uppkommer alltid fel. Felen kan indelas i följande kategorier: Under kompileringen upptäcker kompilatorn fel som handlar om att man använt konstruktionerna i programspråket
Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Ingenjörsfirman Stéen 2001-12-13 Java Sida 1 av 1
Java Sida 1 av 1 Java Mål och Syfte Målet med denna kurs i Java är att du direkt efteråt ska kunna börja utveckla dina första Javaapplikationer. Kursen ger dig många konkreta exempel på hur detta effektiva
Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel
Föreläsning 3 Innehåll Generiska klasser Implementera generiska klasser Exceptions Dokumentationekommentarer javadoc Enhetstestning - junit Man kan deklarera en eller flera typparametrar när man definierar
Variabler, värden och typer
Variabler, värden och typer Viktigt att förstå på djupet: För programmering i många språk, t.ex. Java För kommande objektorientering! TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Fråga kommentera
732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val
732G11 Linköpings universitet 2011-01-26 1 2 3 4 Program recept 1 spaghetti = 100; 2 salt = 1; 3 olja = 5; 4 köttbullar = 8; 5 ketchup = 0,5; 6 koka(salt, spaghetti); 7 micra(köttbullar); 8 Om(micron ==
Sökning och sortering
Sökning och sortering Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man mycket data och många sökningar måste
TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av
1 Comparator & Comparable
1 Comparator & Comparable 1.1 Implementation av Comparable Att implementera Comparable innebär att man gör objekt av sin klass jämförbara med andra och att det därmed antas existera en naturlig ordning
Twincat: PLC Control
Dokument Förklaring Dat. Revision KI-221-003-003 Kom igång med trukturerad Text 080402 1.0 Twincat: PLC Control Kom igång med Strukturerad Text (ST) programmering 1. Kod exempel. a. Exemplen som demonstreras
Ö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,
Generics och polymorfism. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Generics och polymorfism Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Live code Pair public class Pair { private A a; private B b; public A getfirst() { return a; public
Laboration 1: Figurer i hierarki
Laboration 1: Figurer i hierarki Bakgrund Två grundläggande tekniker i objektorienterad konstruktion är arv och komposition. Mål Laborationen har flera avsikter: 1. Ge kunskaper i hur program kan organiseras
Introduktion till formella metoder Programmeringsmetodik 1. Inledning
Introduktion till formella metoder Programmeringsmetodik 1. Inledning Fokus på imperativa program (ex. C, Java) program betyder härefter ett imperativt program Program bestäms i en abstrakt mening av hur
Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen
Föreläsning 2 Programmeringsteknik och Matlab DD1312 Introduktion till python Variabler, datatyper, omvandling av typer sfunktioner Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande
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