Imperativ programmering
|
|
- Kristina Pålsson
- för 8 år sedan
- Visningar:
Transkript
1 Imperativ programmering Vad är det? Ett programmeringsparadigm att jämföras med funktionell programmering och logikprogrammering. Vanlig programmering Programmen skrivs som en sekvens av satser (kommandon) Programmen struktureras med hjälp av procedurer (subrutiner, underprogram, funktioner... ) Kommandon ändrar tillstånd och funktioner kan ha sidoeekter Den äldsta programmeringsmetodiken på grund av dess nära koppling till hårdvaran (von Neuman-modellen) De äldsta språken (Fortran, algol, C,... ) konstruerades för den tekniken ( )
2 Imperativ programmering forts Ett centralt begrepp i all programmering är abstraktion. Med detta menas att man döljer tekniska detaljer, nner gemensamma drag hos problem och hittar generella lösningar. Programmeringsspråken i sig innehåller abstraktioner i form av grundläggande operationer i själva språket (aritmetik på olika datatyper, selektion, iteration), fördenierade funktioner (t ex printf, getchar, sin... ) Funktioner är det äldsta sättet för programmeraren att skapa egna abstraktioner. Andra abstraktionsmekanismer: moduler, klasser, paket ( )
3 Imperativ programmering forts På 60-talet havererade många större programmeringsprojekt och andra drabbades av kraftiga förseningar skenande kostnader, Dessutom: Programmen uppfyllde inte kravspecikationen och koden gick inte att förstå och underhålla Motmedel: Software engineering Nya programmeringstekniker ( )
4 Strukturerad programmering Edsger Dijkstra: Go To Statement Considered Harmful. Böhm och Jacopini: Alla beräkningsbara funktioner kan implementeras med kontrollstrukturerna sekvens, selektion typ if (och/eller switch) och iteration typ while, (och/eller for, do). Handlar således mycket om att programmera utan goto. Dock brukar man acceptera strukturerade goto-satser som break, continue, return och throw. Pascal utvecklades av Niklaus Wirth som var en av profeterna för strukturerad programmering. Pascal resulterar i monolitiska program. ( )
5 Objektorienterad programmering (OOP) Hittills hade programmen strukturerats runt algoritmer. Ole-Johan Dahl och Kristen Nygaard utvecklade Simula 67 där programmen i stället (kunde) struktureras kring de data som skulle behandlas vilket lade grunden för det objektorientering. Språket innehöll väsentliga mekanismer som man förknippar med med OOP: klasser, klasshierarkier, inkapsling, information hiding, objekt, polymor ( )
6 Objektorientering: klasser Klassen är det mest centrala begreppet i OOP. En klass är en abstraktion av något begrepp ett program hanterar. Man kan också säga att en klass är en (ritning till en) modell av något. Exempel: Klassen Car i traksimlueringen. En verklig bil har många egenskaper men vi modellerar endast de egenskaper vi behöver. Klassen Queue är en abstraktion (modell) för en kö oavsett vad som nns i kön Klassen (egentligen interfacet) Map är en abstraktion av en avbildning Klassen Addition är en abstraktion av alla möjliga additioner Klassen SyntaxException är en abstraktion av alla syntaxfel användaren kan göra ( )
7 Klasser forts En klass-beskrivning innehåller en förteckning över attribut (data) operationer (metoder) som ingår. I Java nns denieras alltid metoderna i klassen (undantag: abstrakta klasser) men i t ex C++ ligger ofta denitionerna på annat ställe (.h respektive.c-ler) Klasser kan instansieras till objekt dvs man skapar en modell enligt ritningen. I denna process allokeras minnesutrymme för för attributen och dessa tilldelas attributen konkreta värden. Instansieringen initieras med operatorn new och själva initieringen utförs av koden i en konstruktor. ( )
8 Inkapsling En annan viktig princip är inkapsling eller information hiding vilket innebär att all åtkomst till objektet skall gå via ett väldenierade interface-metoder och att användaren av klassen inte skall behöva känna till detaljer i klassens implementation. Man vinner att problemet blir strukturerat man behöver inte tänka på allt hela tiden att klassen själv kan kontrollera att den används på rätt sätt att det går att ändra i implementationen (för att rätta fel, öka eektivitet mm) utan att användarkoden behöver ändras. ( )
9 Inkapsling forts Inkapsling åstadkommes genom att ge attribut och metoder har olika synlighet: private förhindrar access från alla andra klasser paket förhindra access från andra paket protected förhindra access från andra klasser än subklasser public inga hinder ( )
10 Klasshierarkier och arv De olika klasserna i ett program kan byggas i hierarkier (basklasser subklasser). Klasser högre upp i hierarkien representerar högre abstraktionsnivåer medan klasser lägre ner står för ökad specialisering. Exempel: Fordon > Motorfordon > Lastbil Component > Container > Window > Frame > JFrame ( )
11 Klasshierarkier och arv forts Collection<E> contains(...) add(...) remove(...) iterator()... Set<E>... SortedSet<E>... List<E>... Interface TreeSet<E> HashSet<E> LinkedList<E> ArrayList<E> Vector<E> Klasser Stack<E>... ( )
12 Klasshierarkier och arv forts Map<K,V> containskey(...) containsvalue(...) put(...) get(...)... SortedMap<K,V>... Interface TreeMap<K,V>... HashTable<K,V>... HashMap<K,V>... Klasser Properties<K,V>... ( )
13 Klasshierarkier och arv forts Sexpr abstract String getname() abstract Sexpr eval(map) abstract int priority() Sexpr diff(sexpr) double getvalue() boolean isconstant()... Command abstract Atom abstract Unary abstract Binary abstract String tostring() Sexpr argument String tostring() int priority() Sexpr left Sexpr right String tostring() Vars Sexpr eval(map) Quit Sexpr eval(map) Variable String ident Sexpr eval(map) String getname() Sexpr diff(sexpr) Constant Sin Cos Exp Log Evaluation Addition Subtraction Multiplication Division Assignment double value Quotation Differentiation Sexpr eval(map) String getname() Sexpr diff(sexpr) double getvalue() boolean isconstant() Negation Sexpr eval(map) String getname() Sexpr diff(sexpr) Sexpr eval(map) String getname() Sexpr diff(sexpr) int priority() ( )
14 Polymor Polymor existerar i många former (:-) De aritmetiska operatorerna är polymorfa eftersom de utför olika operationer beroende på operandernas typer (heltal, yttal) I bl a C++ kan man lägga till egna denitioner för olika datatyper (klasser) för alla operatorer (så kallad operatoröverlagring) Samma namn på funktioner (metoder) som har olika signatur Mest väsentligt för OOP: Man kan deniera en metod på era ställen i en klasshierarki och det är den som passar typen (klassen) bäst som som används dynamisk bindning. Exempel: tostring(), isconstant(), getvalue() Mallar (generics) kan ses som ett hjälpmedel för att åstadkomma polymor ( )
15 Andra viktiga begrepp i diskuterat Iteratorer Undantag Parameteröverföringsmetoder: värdeanrop, referensanrop Tekniken att bygga rekursiva strukturer. Exempel: inlägg i mängd organiserad som ett BST (dvs ett TreeSet): TreeNode insert(int key, TreeNode r) { if (r==null) return new TreeNode(key); else if ( key < r.key ) r.left = insert(key, r.left); else if ( key > r.key ) { r.right = insert(key, r.right); return this; ( )
16 Java-detaljer Struktur: en klass per l (huvudsakligen). Paket. Objekthantering: alltid med referenser Minneshantering: automatisk Alltid konstruktorer. super Metoderna tostring() och equals(object o) static Arvshierarkier med extends Abstrakta klasser Interface (interface, implements) Generics: klasser med typparametrar ( )
17 C-programmering Struktur: deklarationer på.h-ler, implementationer på.c-ler. Preprocessor: #include, #define, #ifndef, #endif struct Funktioner: värdeanrop, värderetur, kan returnera struct Pekare och pekararitmetik. Arrayer Minneshantering: explicit med malloc och free. Ingen skräpsamling! ( )
18 Hur programmerar man objektorienterat i C Exempel: Klassen Die Använd struct i stället för klass: typedef struct die { int numberofsides; int value; die, *Die; ( )
19 Die i C Implementera konstruktorer som funktioner som returnerar pekare: Die newdie(int nos) { Die d = (Die) malloc(sizeof(die)); d->numberofsides = nos; roll(d); return d; ( )
20 Die i C Skriv accessfunktioner där en parameter svarar mot this-pekaren. int getvalue(die d) { return d->value; int roll(die d) { return d->value = rand()%(d->numberofsides) + 1; Det går inte att dölja attributen utan man måste vara disciplinerad! ( )
21 Användning av Die int main() { Die t1 = newdie(42); Die t2 = newdie(42); int n = 0; while ( roll(t1)!=roll(t2) ) n++; printf("tärningarna blev lika efter %d slag\n", n); printf("värdet var %d\n", getvalue(t1)); return 0; /* Körresultat: vranx$ gcc -o die die.c vranx$ die Tärningarna blev lika efter 7 slag Värdet var 16 */ ( )
22 Exempel: En map i C /* map.h Avbildning från teckensträngar till VT */ #ifndef map #define map #define VT void * // Definierar värdetyp typedef struct listnode { char *key; VT value; struct listnode *next; listnode, *link; typedef struct mapobj { link first; link current; mapobj, *Map; ( )
23 forts map.h Map newmap(); // Skapa map void deletemap(); // Frigör allt allokerat utrymme VT put(char *key, VT v, Map m); // Lagrar nyckel-värde-par VT get(char *key, Map m); // Söker värde int containskey(char *key, Map m); // Undersöker om värde finns void printmap(map m, void vprint(void *)); #endif // end of map.h ( )
24 Klasshierarkier i C? /* sexpr.h - deklarationsfil för symboliska uttryck */ #include "map.h" typedef enum stype { CONSTANT, VARIABLE, NEGATION, QUOTATION, EVALUATION, EXP, LOG, SIN, COS, ADDITION, SUBTRACTION, MULTIPLICATION, DIVISION, ASSIGNMENT, DIFFERENTIATION stype; typedef struct sexprobj { stype type; char *name; int priority; double value; struct sexprobj *left, *right; sexprobj, *Sexpr; ( )
25 sexpr.h forts // Konstruktorer Sexpr newconstant(double val); Sexpr newvariable(char *id); Sexpr newunary(stype type, char *name, int prio, Sexpr arg); Sexpr newbinary(stype type, char *name, int prio, Sexpr left, Sexpr right); Sexpr newnegation(sexpr arg); Sexpr newquotation(sexpr arg); Sexpr newevaluation(sexpr arg); Sexpr newexp(sexpr arg); Sexpr newlog(sexpr arg); Sexpr newsin(sexpr arg); Sexpr newcos(sexpr arg); Sexpr newaddition(sexpr left, Sexpr right); Sexpr newsubtraction(sexpr left, Sexpr right); Sexpr newmultiplication(sexpr left, Sexpr right); Sexpr newdivision(sexpr left, Sexpr right); Sexpr newassignment(sexpr left, Sexpr right); Sexpr newdifferentiation(sexpr left, Sexpr right); ( )
26 sexpr.h forts // Symbolisk aritmetik (klassen Symbolic) Sexpr negate(sexpr a); Sexpr sine(sexpr a); Sexpr cosine(sexpr a); Sexpr expe(sexpr a); Sexpr loge(sexpr a); Sexpr add(sexpr a, Sexpr b); Sexpr subtract(sexpr a, Sexpr b); Sexpr multiply(sexpr a, Sexpr b); Sexpr divide(sexpr a, Sexpr b); Sexpr diff(sexpr a, Sexpr b); ( )
27 sexpr.h forts // För utskrift (tostring-metoder) void print(sexpr s); // Evaluering (eval-metoderna) Sexpr eval(sexpr e, Map m); // Felhantering void evaluationerror(char *msg, Sexpr e); // end of sexpr.h ( )
28 Sexpr i C forts Axplock ur sexpr.c /* sexpr.c */ #include <setjmp.h> #include "sexpr.h" #include "map.h" extern jmp_buf environment; // Återstartsmiljö efter fel Sexpr newconstant(double value) { // Konstruktor för Constant Sexpr o = (Sexpr) malloc(sizeof(sexprobj)); char *s = (char*) malloc(15*sizeof(char)); o->type = CONSTANT; o->value = value; sprintf(s, "%0.4g", value); o->name = s; o->priority = 10; o->left = o->right = NULL; return o; ( )
29 sexpr.c : konstruktor för Unary Sexpr newunary(stype type, char *name, int priority, Sexpr arg) { Sexpr o = (Sexpr) malloc(sizeof(sexprobj)); o->type = type; o->left = NULL; o->right = arg; o->value = 0; o->name = strdup(name); o->priority = priority; return o; ( )
30 sexpr.c : konstruktor för Binary Sexpr newbinary(stype type, char *name, int priority, Sexpr left, Sexpr rig Sexpr o = (Sexpr) malloc(sizeof(sexprobj)); o->type = type; o->left = left; o->right = right; o->value = 0; o->name = strdup(name); o->priority = priority; return o; ( )
31 sexpr.c : några konstruktorer Sexpr newnegation(sexpr arg) { return newunary(negation, "-", 9, arg); // super Sexpr newquotation(sexpr arg) { return newunary(quotation, "\"", 9, arg); // super Sexpr newevaluation(sexpr arg) { return newunary(evaluation, "&", 9, arg); // super Sexpr newaddition(sexpr left, Sexpr right) { return newbinary(addition, "+", 3, left, right); // super ( )
32 sexpr.c : print void print(sexpr s) { if (s->left!= NULL) { if (s->left->priority < s->priority) putchar('('); print(s->left); if (s->left->priority < s->priority) putchar(')'); printf("%s ", s->name); if (s->right!= NULL) { if (s->priority >= s->right->priority) putchar('('); print(s->right); if (s->priority >= s->right->priority) putchar(')'); // På Sexpr-nivån! ( )
33 sexpr.c : eval Sexpr eval(sexpr e, Map m) { Sexpr result= newvariable("*error*"); switch (e->type) { case CONSTANT: result = e; break; case VARIABLE: if (containskey(e->name, m)) result = (Sexpr) get(e->name, m); else result = e; break; case NEGATION: result = negate(eval(e->right, m)); break; case QUOTATION: result = e->right; break; case EVALUATION: result = eval( eval(e->right, m), m); break; case SIN: result = sine( eval(e->right, m) ); break; ( )
34 sexpr.c : eval forts case ADDITION: result = add(eval(e->left, m), eval(e->right, m)); break; case SUBTRACTION: result = subtract(eval(e->left, m), eval(e->right, m)); break; case MULTIPLICATION: result = multiply(eval(e->left, m), eval(e->right, m)); break; case DIVISION: result = divide(eval(e->left, m), eval(e->right, m)); break; case ASSIGNMENT: result = eval(e->left, m); put(e->right->name, (void *)result, m); break; case DIFFERENTIATION: result = diff(eval(e->left, m), e->right); break; default: evaluationerror("eval not yet defined", e); return result; ( )
35 sexpr.c : add Symbolisk aritmetik: Sexpr add(sexpr a, Sexpr b) { if (a->type==constant && b->type==constant) return newconstant(a->value + b->value); else if (iszero(a)) return b; else if (iszero(b)) return a; else return newaddition(a,b); ( )
36 sexpr.c : di Sexpr diff(sexpr y, Sexpr x) { switch (y->type) { case CONSTANT: return newconstant(0.); case VARIABLE: if (strcmp(y->name,x->name)==0) return newconstant(1.); else return newconstant(0.); case NEGATION: return negate(diff(y->right,x)); case ADDITION: return add(diff(y->left,x), diff(y->right,x)); case SUBTRACTION: return subtract(diff(y->left,x), diff(y->right,x));... default: evaluationerror("kan inte derivera", y); return NULL; ( )
37 sexpr.c : evaluationerror void evaluationerror(char *msg, Sexpr e) { printf("*** Evalueringsfel: %s \n", msg); printf(" Vid operationen %s\n", e->name); longjmp(environment, 99); // Till återstartpunkten ( )
38 parser.h /* parser.h */ #include "tokenizer.h" #include "map.h" #include "sexpr.h" void statement(tokenizer t); Sexpr assignment(tokenizer t); Sexpr expression(tokenizer t); Sexpr term(tokenizer t); Sexpr factor(tokenizer t); Sexpr primary(tokenizer t); void syntaxerror(char *msg, Tokenizer t); ( )
39 parser.c : main /* parser.c */ #include <stdio.h> #include <setjmp.h> #include <string.h> #include "parser.h" #include "tokenizer.h" #include "map.h" #include "sexpr.h" jmp_buf environment; const int MAX_LINE_LENGTH=1000; int main() { char line[max_line_length]; Tokenizer tn = newtokenizer(line); Map map = newmap(); while (1) { ( )
40 parser.c : main forts setjmp(environment); // Återstart efter fel do { printf("? "); fgets(line, MAX_LINE_LENGTH, stdin); while (strlen(line)<=1); // Så länge tomma rader resettokenizer(tn); nexttoken(tn); if (strcmp(tn->sval,"quit")==0) break; else if (strcmp(tn->sval, "vars")==0 ) { printmap( map, print ); else { Sexpr e = assignment(tn); if ( tn->ttype!=tt_eos ) syntaxerror("förväntade radslut", tn); nexttoken(tn); print(e); printf("\n"); e = eval(e, map); print(e); printf("\n"); ( )
41 parser.c : statement void statement(tokenizer t) { Sexpr result; result = assignment(t); printf(" = "); print(result); printf("\n"); if ( t->ttype!=tt_eos ) syntaxerror("förväntade radslut", t); nexttoken(t); ( )
42 parser.c : assignment Sexpr assignment(tokenizer t) { Sexpr result = expression(t); while(t->ttype=='=') { nexttoken(t); if ( t->ttype!=tt_word ) syntaxerror("expected identifier after '='", t); else result = newassignment(result, newvariable(t->sval)); nexttoken(t); return result; ( )
43 parser.c : expression Sexpr expression(tokenizer t) { Sexpr sum = term(t); char c; while ( ((c=t->ttype)=='+') (c=='-') ) { nexttoken(t); if (c=='+') { sum = newaddition(sum, term(t)); else { sum = newsubtraction(sum, term(t)); return sum; ( )
44 parser.c : primary Sexpr primary(tokenizer t) { char *sval; Sexpr result = NULL; switch (t->ttype) { case '(': nexttoken(t); result = assignment(t); if ( t->ttype!=')' ) syntaxerror("förväntade ')'", t); nexttoken(t); break; case '-': nexttoken(t); result = newnegation(primary(t)); break; case '"': nexttoken(t); result = newquotation(primary(t)); break; ( )
45 parser.c : primary forts case '&': nexttoken(t); result = newevaluation(primary(t)); break; case TT_NUMBER: result = newconstant(t->nval); nexttoken(t); break; case TT_WORD: sval = strdup(t->sval); nexttoken(t); if ( strcmp(sval, "exp") == 0 ) result = newexp(primary(t)); else if ( strcmp(sval, "log") == 0 ) result = newlog(primary(t)); else if ( strcmp(sval, "sin") == 0 ) result = newsin(primary(t)); else if ( strcmp(sval, "cos") == 0 ) result = newcos(primary(t)); else result = newvariable(sval); break; default: syntaxerror("oväntat token", t); ( )
46 parser.c : syntaxerror void syntaxerror(char *msg, Tokenizer t) { printf("*** Syntaxfel: %s\n", msg); printf(" vid tokentyp %d '%s'\n", t->ttype, t->sval); longjmp(environment, 99); // Till återstarpunkten return; ( )
47 Annat för objektorientering Funktion med olika signatur? Nja. Man kan ha variabelt antal och variabla typer till funktioner. Se stdarg.h med funktionerna va_start, va_arg och va_end Måste själv hålla reda på antal och typer. Jfr t ex printf. Dynamisk bindning? Tja, man kan lagra funktionspekare i poster ( )
48 Funktionspekare: exempel typedef struct sexpr { int (*eval)(); sexpr, *Sexpr; Sexpr newsexpr(int (*eval)()) { Sexpr e = (Sexpr) malloc(sizeof(sexpr)); e->eval = eval; return e; int foo() {return 17; int fie() {return 42; int main() { Sexpr e = newsexpr(foo); Sexpr f = newsexpr(fie); printf("%d %d\n", e->eval(), f->eval()); /* Output: */ ( )
Avslutning. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 17 december 2010
Avslutning Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 17 december 2010 Tentan Två delar: en C-del (20p) och en Java-del (20p) Normalt krävs 18p för att få godkänt, minst 7p på varje del Skillnad
Obligatorisk uppgift 5
(5 oktober 2018 Symbolisk kalkylator 1 ) Obligatorisk uppgift 5 En kalkylator som hanterar uttryck symboliskt dvs värden är uttryck inte bara tal. Uppgiften exemplifierar: objektorientering återanvändning
public boolean containskey(string key) { return search(key, head)!= null; }
Tentamen Programmeringsteknik II 2009-05-26 med lösningar Skrivtid: 0900-1200 Uppgifter 1. Programbilagan ListMap.java innehåller en klass som implementerar en avbildning mellan mängden strängar och mängden
Observera. Tentamen Programmeringsteknik II Skrivtid:
Tentamen Programmeringsteknik II 2016-10-19 Skrivtid: 0800 1300 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper. Fyll i försättssidan
Obligatorisk uppgift 5: Symbolisk kalkylator
Informationsteknologi Tobias Wrigstad IOOP HT10 Obligatorisk uppgift 5: Symbolisk kalkylator Moment: Objektorientering med klasshierarkier, arv och dynamisk bindning samt dynamiska strukturer, undantag,
Symboliska konstanter const
(5 oktober 2010 T11.1 ) Symboliska konstanter const Tre sätt som en preprocessormacro med const-deklaration med enum-deklaration (endast heltalskonstanter) Exempel: #define SIZE 100 const int ANSWER =
Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.
Tentamen Programmeringsteknik II 2016-10-19 Skrivtid: 0800 1300 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper. Fyll i försättssidan
Konstruktion av klasser med klasser
Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut
List.java. List.java. Printed by Tom Smedsaas
Dec 17, 08 8:35 Page 1/2 /** class List * Representerar en länkad lista av godtyckliga objekt public class List { /** class ListNode * Noder i listor protected static class ListNode { protected Object
Klasshierarkier - repetition
Klasshierarkier - repetition Klasser kan byggas på redan denierade klasser, egna och/eller färdigskrivna, genom: I att klassobjekt används som attribut (instansvariabler): har-relation. Exempel: traksystemet
List.java. List.java. Printed by Tom Smedsaas
Mar 03, 08 17:48 Page 1/3 class List * Representerar en länkad lista av godtyckliga objekt public class List { ListNode * Noder i listor protected static class ListNode { protected Object data; protected
Obligatorisk uppgift 5: Symbolisk kalkylator
Informationsteknologi Tom Smedsaas IOOP ht09 Obligatorisk uppgift 5: Symbolisk kalkylator Moment: Objektorientering med klasshierarkier, arv och dynamisk bindning samt dynamiska strukturer, undantag, samlingar
Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en
Tentamen Programmeringsteknik II 2017-10-23 Skrivtid: 14:00 19:00 Inledning Skrivningen innehåller ett antal bilagor: Bilagan listsandtrees innehåller fyra klasser: Klassen List med några grundläggande
Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.
Tentamen Programmeringsteknik II 2017-05-29 Skrivtid: 0800 1300 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper. Fyll i försättssidan
Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck
Betrakta följande uttryck a +(b + c) d + e (f + g h) Parsing med Recursive Descent, Avbildningsklasser Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 22 november 2010 Beräkning med regler: multiplikation
Obligatorisk uppgift: Symbolisk kalkylator
Informationsteknologi Programmeringsteknik II 22 augusti 2018 Obligatorisk uppgift: Symbolisk kalkylator Moment: Dynamiska strukturer (särskilt trädstrukturer), klasshierarkier, arv, dynamisk bindning,
Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.
Tentamen Programmeringsteknik II 2017-10-23 Skrivtid: 14:00 19:00 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper. Fyll i försättssidan
2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning
2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten
Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper.
Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10 Skrivtid: 0800-1300 Inga hjälpmedel. Tänk på följande Maximal poäng är 40. För betygen 3 krävs 18 poäng. För betygen 4, 5 kommer något
Klasshierarkier. Klasser kan byggas på redan definierade klasser
Klasshierarkier Klasser kan byggas på redan definierade klasser på två sätt: Klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: klassen partikel består av ett antal attribut av typen
Exempel ( )
Exempel Antag att vi vill ha en generell stack. En stack är en mekanism som man kan lagra i och hämta från enligt principen sist in, först ut (eng LIFO). Man skall alltså kunna Skapa en stack Lägga värden
Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.
Tentamen Programmeringsteknik II för STS 2007-03-09 Skrivtid: 1500-2000 Inga hjälpmedel. Tänk på följande OBS: För betygen 4, 5 och VG kommer något högre gränser än normalt användas. Skriv läsligt! Använd
Rekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254
Rekursion Rekursion är en grundläggande programmeringsteknik M h a rekursion kan vissa problem lösas på ett mycket elegant sätt Avsnitt 11 i kursboken: Att tänka rekursivt Att programmera rekursivt i Java
Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren att du har förstått dessa även om detaljer kan vara felaktiga.
Tentamen Programmeringsteknik II 2013-06-05 Skrivtid: 1400-1700 Hjälpmedel: Java-bok (vilken som helst) Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja
Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?
Algoritmer och datastrukturer Allmänt om kursen Kort javagrund repetition - Klasser, metoder, objekt och referensvariabler, - Hierarkiska klass strukturer - Arrayer och arrayer av objekt - Collection ramverket
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
F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander
F12 - Collections ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Collections (samlingar) En collection är ett objekt som fungerar som en samling av andra objekt En collection erbjuder
TENTAMEN OOP
TENTAMEN OOP 2014-01-19 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!
Tentamen Programmeringsteknik II 2013-10-22 Skrivtid: 0800-1300 Hjälpmedel: Java-bok (vilken som helst) Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja
Tentamen Programmeringsteknik 2 och MN Skrivtid: Inga hjälpmedel.
Tentamen Programmeringsteknik 2 och MN2 2006-03-10 Skrivtid: 0900-1400 Inga hjälpmedel. Tänk på följande OBS: För betygen 4, 5 och VG kommer något högre gränser än normalt användas. Skriv läsligt! Använd
F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander
F4 Klasser och Metoder ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Klasser och objekt Klasser definierar (utgör idén) Objekt instantierar (utgör förekomsten) En klassdefinition Många
Tommy Färnqvist, IDA, Linköpings universitet
Föreläsning 9 Pekare, länkade noder, länkade listor TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 25 september 2015 Tommy Färnqvist, IDA, Linköpings
Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.
-Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och
Tentamen Programmeringsteknik II Inledning. Anmälningskod:
Tentamen Programmeringsteknik II 2016-01-11 Inledning I bilagan finns ett antal mer eller mindre ofullständiga klasser. Några ingår i en hierarki: List, SortedList, SplayList och ListSet enligt vidstående
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
Länkade strukturer. (del 2)
Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion
OOP Objekt-orienterad programmering
OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public
public och private Obs: private inte skyddar mot access från andra objekt i samma klass.
public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private
Generiska datatyper. Parametrisk Polymorfism: Generics. Generisk lista. Utvikning: Typer
Generiska datatyper Parametrisk Polymorfism: Generics Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 9 december 2010 Hittills har vi sett att klasser och interface definierar nya typer som kan användas
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
Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!
Tentamen Programmeringsteknik II 2014-01-09 Skrivtid: 0800-1300 Hjälpmedel: Java-bok (vilken som helst) Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja
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
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
Grafik, grafiska användargränssnitt och rörliga bilder
(22 maj 2015 F14.1 ) Grafik, grafiska användargränssnitt och rörliga bilder Viktigt: Grafiska komponenter: Fönster, etiketter, knappar, textfält,... Tekniken med att med genom arv definiera t ex sitt eget
OOP Objekt-orienterad programmering
OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym
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 (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning XII: Interfaces, Enums, Generics, Collections Links for: interfaces, enums, generics, collections Ahmed Rezine IDA, Linköpings Universitet Hösttermin
Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine
Objektorienterad Programmering (TDDC77) Föreläsning XII: Interfaces, Enums,, Collections Links for: interfaces, enums, generics, collections Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Abstrakta
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
Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private
Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall
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: Mer om Interface Generiska klasser Undantag Nästlade klasser 1
Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!
Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering! Samlingar Vi kommer att behöva hantera samlingar av objekt - Har oftast använd Array (fält) - Bra om
Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser
Föreläsning 8 Arv och abstrakta klasser Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen (extends) Den nya klassen behåller alla egenskaper som den gamla
Tentamen ID1004 Objektorienterad programmering May 29, 2012
Omtentamen för ID1004 Objektorienterad programmering HT11, 29 maj 2012, 09-13 Denna tentamen examinerar 3 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av 12 frågor. Varje fråga
UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.
Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language
DAT043 - föreläsning 8
DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns
Tentamen Imperativ och objektorienterad programmering
Tentamen Imperativ och objektorienterad programmering 2009-12-10 Skrivtid: 0800-1300 Inga hjälpmedel. Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja
Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.
Tentamen Programmeringsteknik II 2016-05-30 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Börja alltid ny uppgift på nytt papper. Lägg
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
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:
TENTAMEN OOP
TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp
Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina
F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander
F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > = ==!= Resultatets datatyp är boolean
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
Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2012-03-14 Skrivtid: 0800-1100 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till
Introduktion till arv
Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering
Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.
Tentamen Programmeringsteknik II 2017-05-29 Skrivtid: 0800 1300 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper. Fyll i försättssidan
TDIU01 Programmering i C++
TDIU01 Programmering i C++ Föreläsning 6 - Klasser Eric Elfving, eric.elfving@liu.se Institutionen för datavetenskap (IDA) Avdelningen för Programvara och system (SaS) Klasser När vi skapade vår lista
OOP Tenta
Stockholms universitet sid 1 OOP OOP Tenta 2012-01-14 10.00 15.00 Avser kurserna DSK1:OOP och GES:OOP Anvisningar Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt
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,
F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander
F8 - Arv ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Arv och subklasser Klasser innehåller attribut och beteenden En subklass ärver dessa från föräldern Detta ger: Återanvänd kod
Länkade strukturer, parametriserade typer och undantag
Länkade strukturer, parametriserade typer och undantag Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Parametriserade typer Listor och länkade strukturer Komplexitet i länkade strukturer
TENTAMEN OOP
TENTAMEN OOP 2014-03-15 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else
Förkunskaper från tidigare föreläsningar: Objektorienterad Programmering (TDDC77) Föreläsning IX: Klasser och Objekt, Instantiering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 I STONE I Variabler,
Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)
Objektorienterad Programmering DAT043 Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Metoden clone() Skapa kopior av existerande objekt. Interface Cloneable Deep vs.
Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.
Outline Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Undantag Design Hösttermin 2017 En frukt har ett namn Man kan lägga en frukt i
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Hashing Undantag Design Outline Hashing Undantag Design En frukt
Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {
Innehåll EDAF30 Programmering i C++ Arv. Polymorfism. Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Kort om dynamisk polymorfism Virtuella funktioner 2 Arv i C++ Konstruktorer och destruktorer Tillgänglighet
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
Övning från förra gången: readword
(9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver
Arv. Objektorienterad och komponentbaserad programmering
Arv Objektorienterad och komponentbaserad programmering Arv Regel nr 1: Ett objektorienterat språk ska tillåta inkapsling av data Regel nr 2: Ett objektorienterat språk ska tillåta arv Regel nr 3: Ett
Föreläsning 4 Innehåll
Föreläsning 4 Innehåll Abstrakta datatypen lista Datastrukturen enkellänkad lista Nästlade klasser statiskt nästlade klasser inre klasser Listklasser i Java Implementera abstrakta datatyperna stack och
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.
Repetition C-programmering
Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition
Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010
Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010 interface, motivation och bakgrund Antag att vi gör en generell listklass: public class List { protected static class ListNode { public
Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.
Seminarium 3 Introduktion till Java Collections Framework Innehåll Generik Bakgrund Java Collections Framework interface och klasser för samlingar av element interfacen Iterator och Iterable och foreach-sats
Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine
Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Klassen calculator Signatur Calculator
Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2
Övning vecka 6. TDA550 - Objektorienterad programvaruutveckling IT, fk Denna vecka ska vi titta på undantag, testning, generiska enheter, samlingar och designmönstret Iterator. Uppgift 1 Exceptions a)
Tentamen, EDAA01 Programmeringsteknik fördjupningskurs
LUNDS TEKNISKA HÖGSKOLA 1(3) Institutionen för datavetenskap Tentamen, EDAA01 Programmeringsteknik fördjupningskurs 2017 08 14, 8.00 13.00 Anvisningar: Denna tentamen består av 5 uppgifter. Preliminärt
Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004
Lösningsförslag Programmeringsmetodik, KV: Java och OOP 17 januari 2004 Examinator: Johan Karlsson Skrivtid: 9-15 Hjälpmedel: En av följande böcker: Barnes & Kölling: Objects First With Java a practical
Tentamen *:58/ID100V Programmering i C Exempel 3
DSV Tentamen *:58/ID100V Sid 1(5) Tentamen *:58/ID100V Programmering i C Exempel 3 Denna tentamen består av fyra uppgifter som tillsammans kan de ge maximalt 22 poäng. För godkänt resultat krävs minst
Föreläsning 2 Datastrukturer (DAT037)
Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad
F5: Debriefing OU2, repetition av listor, träd och hashtabeller Carl Nettelblad 2017-04-24 Frågor Kommer nog inte att täcka 2 timmar Har ni frågor på OU3, något annat vi har tagit hittills på kursen, listor
Introduktion C-programmering
Introduktion C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. 2 C Standarder
OOP Objekt-orienterad programmering
OOP F10:1 OOP Objekt-orienterad programmering Föreläsning 10 Mer om arv och klasshierarkier Interface Hierarkier - många nivåer OOP F10:2 Djur Rovdjur Hovdjur Fåglar Fiskar Björn Kattdjur Ko Lamm Hjort
Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder
Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i
Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.
Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Signatur public static int parseint (