Högnivåspråk - en första introduktion
|
|
- Ingeborg Öberg
- för 8 år sedan
- Visningar:
Transkript
1 Högnivåspråk - en första introduktion Assemblerspråk kontra högnivåspråk - en jämförelse: Assembler (symbolisk maskinkod): Programmeraren måste själv hantera eventuella flyttningar av data från en cell till en annan. Programmeraren måste ha en mikroskopisk syn på uppgiften, arbeta med händelser i enskilda celler. Programmen är maskinberoende, dvs. beroende av instruktionsrepertoaren i den aktuella processorn. Instruktionerna är långt ifrån engelska (eller andra naturliga språk). Programkoden måste assembleras av en assemblator innan de kan köras. Högnivåspråk: Programmeraren behöver inte bekymra sig om detaljerade flyttningsinstruktioner eller minnesadresser. Programmeraren kan ha en makroskopisk syn på uppgiften, arbeta med större operationer. Programmen är portabla (de kan flyttas mellan olika maskintyper), dvs. de är inte maskinberoende. De måste dock antingen kompileras (härvid skapar man en version på objektkod) eller tolkas (ingen objektkod skapas, programmet tolkas och utförs instruktion per instruktion) för att kunna exekveras. Instruktionerna är ofta en blandning av engelska och matematisk standardnotation.
2 Programvarupaket: Kategori Antal programmerare Hur länge varar projektet? Antalet kodrader i slutprodukten Exempel triviala 1 person 1-2 veckor < 500 kursuppgifter små 1-3 personer några veckor eller månader medelstora 2-5 personer Några månader till ett år stora 5-25 personer mycket stora personer extremt stora över 100 personer 1-3 år år miljon studentprojektarbeten, avancerade kursuppgifter forskningsprojekt, enkla mjukvaruprodukter: assemblatorer, editorer, undervisningssofta de flesta vanliga tillämpningarna: textbehandling, kalkylprogram, operativsystem för smådatorer, kompilatorer stora realtidsoperativsystem, bokningssystem för flygbolag, lagerbokföring för multinationella företag,... över 5 år över 1 miljon avancerade militära tillämpningar, internationella telekommunikationsnätverk,...
3 Software engineering och programvarans livscykel: Programmering är mycket mer än kodning med hjälp av trial and error (eller trial and horror). Vi talar om software engineering, mjukvaruteknik. Mjukvaruteknik innebär ett disciplinerat tillvägagångssätt där man använder sig av alla konstens regler, all den samlade yrkeskunskapen, inklusive matematisk och logisk dito, kända och välprövade algoritmer, formell programverifiering - och allt blir klart inom de givna tids- och budgetramarna. Målsättningarna för kvalitetsmjukvaran: Den fungerar (korrekt). Den kan läsas och förstås (även av andra än upphovsmannen själv...) Den kan modifieras (utan förkrossande möda). Den blir färdig inom de givna tids- och budgetramarna.
4 Första steget: att förstå problemets krav och åstadkomma en programspecifikation. Andra steget: att lösa problemet val av eller utvecklandet av algoritmer top down-design informationsgömning (information hiding) datadesign. Tredje steget: att implementera lösningen: Extern dokumentation (allt utöver själva koden: användarmanual, testplan inklusive testkörningar, de valda algoritmerna, flödesplaner, systembeskrivningar, databeskrivningar, kontaktinformation,...) Intern dokumentation (allt som ingår i själva koden för att göra den möjligast klar: effektiv användning av kommentarer i koden, självdokumenterande/självförklarande kod, prettyprinting (klar och behagfull formattering), användning av konstanter där sådana är välmotiverade,...) Fjärde steget: programunderhåll. Verifiering och testning pågår samtidigt med alla dessa steg - redan den första designen borde verifieras.
5 Testplanen skall planeras innan man alls börjar koda. Testplan: Exempel: att testa inläsningen av en lottorad i ett lottoprogram Test nr. 1: Syftet: testa att man korrekt läser in 7 tal Indata: 1,2,4,5,7,18,19 Förväntat resultat: raden ok Programmets resultat: Verifiering/kommentar: Test nr. 2: Syftet: testa att man inte accepterar tal utanför intervallet Indata: 0,2,4,5,7,18,38 Förväntat resultat: raden godkänns ej, felmeddelande för 0 och 38 Programmets resultat: Verifiering/kommentar:
6 Test nr. 3: Syftet: testa att man inte accepterar duplikat Indata: 1,2,4,5,7,1,19 Förväntat resultat: raden godkänns ej pga 1 som förekommer två gånger Programmets resultat: Verifiering/kommentar: Test nr. 4: Syftet: testa att man enbart accepterar heltal Indata: 1,2,4,5,7,18,19.5 Förväntat resultat: 19.5 godkänns ej. Programmets resultat: Verifiering/kommentar:
7 Test nr. 5: Syftet: testa att man enbart accepterar tal Indata: 1,2,4,5,A,18,* Förväntat resultat: raden godkänns ej pga A och * Programmets resultat: Verifiering/kommentar: På detta sätt planerar man tester för alla eventualiteter man någonsin kan tänka sig - innan man alls börjar koda. Därefter är risken stor att man blir blind för sin egen kod och mindre benägen att hitta fel och brister i den.
8 Formell verifiering Förvillkor (prekonditioner) Eftervillkor (postkonditioner) Loopinvarianter Klassinvarianter Formella metoder kommer att tas upp på senare kurser. Det kan dock vara bra att redan nu bekanta sig med några hjälpmedel som används därtill. Dessa är för- och eftervillkor samt loop- och klassinvarianter. Förvillkor säger vilka villkor som skall vara sanna innan vi får utföra en operation. Om dessa villkor uppfylls före operationen, garanterar eftervillkoret resultatet. Om man bryter mot förvillkoren, är eftervillkoret inte garanterat. Förvillkoren fungerar alltså som en varudeklaration, product disclaimer : förvillkor antal > 0 operation medelvärde summa/antal eftervillkor medelvärdet är medelvärdet av summa/antal. Loopinvarianter berättar om vad som sker inne i en loop. Den måste vara sann före varje inträde i loopen, och efter varje varv, också efter sista varvet. Ex. en loopinvariant för en loop som summerar heltalen i en lista tills man träffar talet 0: 1 <= Index <= MaxList + 1 AND 0 finns ej i List[1].. List[Index-1] AND Sum = summan av List[1].. List[Index-1] En klassinvariant kan ex. kräva att antalet instanser till en klass Kursdeltagare måste vara >= 0.
9 Olika programmeringsparadigmer Olika typer av programmeringsspråk har utvecklats för olika slags tillämpningar. Det finns knappast ett enda språk som skulle vara optimalt för alla tillämpningar. Försök att skapa dylika (ex. Ada) har lett till massivt stora språk, dokumenterade på långa hyllrader, som ingen människa behärskar i sin helhet. Nedan presenteras fem olika programmeringsparadigmer, dvs. fem olika programmeringsfilosofier som alla reflekterar en bestämd syn på hur man borde tänka när man programmerar, hur man borde analysera själva problemet som skall lösas - i vissa fall (ex. funktionell programmering) ger redan problembeskrivningen lösningen. 1) Imperativa programmeringsspråk Som namnet avslöjar, är det frågan om att ge kommandon. Algoritmen reflekterar de kommandon som vi ger åt en von Neumann-maskin. De flesta traditionella programmeringsspråken (ex. Pascal, Modula-2, men även C) tillhör denna kategori. Även objektorienterade språk som Java har en klart imperativ del där de grundläggande kommandona och styrstrukturerna ingår. 2) Funktionell programmering Här möter vi ett radikalt annorlunda sätt att tänka om problem och program som skall lösa dessa problem. Beskrivningen av problemet ger redan lösningen. Vi ser världen som bestående av funktioner; ett eller flera argument från en källmängd skall avspeglas av ett bestämt värde i en målmängd. Funktionen själv skall beskriva detta förhållande:
10 källmängd målmängd f(x) = x 2 I funktionella språk beskriver vi dylika samband som funktioner. Allt som skall kodas, skall beskrivas som något slags funktion. När det gäller en sökrutin, ställer vi oss frågan vad det innebär att ett sökt nyckelvärde finns i listan; antingen finns värdet inte där, och då returnerar vår funktion värdet false, eller så finns värdet i listan - antingen i dess första plats eller någonstans i resten av listan, och vi returnerar värdet true. När det gäller sorteringsrutiner ställer vi oss frågan vad som är förhållandet mellan en given lista och dess sorterade permutation, och beskriver sedan detta förhållande. En lista är den grundläggande datastrukturen, och den analyseras som ett första element följt av resten av listan. Grundmekanismen är rekursion. Det finns ingen tilldelningssats, och det finns inga loopstrukturer - dessa ersätts av rekursionen. (Vad gör vi med första elementet? Vad gör vi med resten av listan?) För att en rekursiv lösning skulle vara korrekt, måste den uppfylla tre villkor:
11 Det måste finnas minst ett icke-rekursivt basfall (och lösningen måste vara korrekt för detta basfall) - annars har vi en oändlig rekursion ( a rose is a rose is a rose... ) Det allmänna, rekursiva fallet måste konvergera mot (närma sig) detta basfall - annars hotar oändlig rekursion. Givet att rekursionsmekanismen fungerar, måste även resten av lösningen vara korrekt. Ex. fakultet(n) = 1, om n = 0 fakultet(n) = n * fakultet(n-1), om n > 0 (Odefinierat, om n < 0 - en prekondition, förvillkor, i uppgiftsbeskrivningen kunde ta hand om detta.) I beskrivningen ovan av vad vi menar med fakultet har vi redan lösningen. Det första fallet är det icke-rekursiva basfallet. Det andra fallet, det rekursiva allmänna fallet, konvergerar mot basfallet i och med att argumentet minskar med 1 för varje anrop. Även helheten är korrekt; vi har *, inte ex Typiska funktionella programmeringsspråk är Lisp, Scheme och SML. Typiska tillämpningsområden finner man inom artificiell intelligens (språkanalys, robotstyrning). Logikprogrammering När vi talar om logikprogrammering rör vi oss återigen inom AI. Det typiska tillämpningsområdet är så kallade expertsystem. Dessa är AI-system som skall imitera en mänsklig experts
12 kunskap och hjälpa vid beslutsfattandet (det är absolut inte meningen att ersätta en mänsklig expert med dessa system!!!). Tillämpningsområdena för expertsystem varierar vitt från avancerade schackprogram till medicinska diagnossystem, från krigsföring i rymden (det ökända Star Wars-projektet) till diagnosticering av fel i motorcyklar. Det dominerande språket är Prolog. Det som vi förutsätter är att tillämpningsområdet kan beskrivas som en (ofta massiv) samling av fakta, och ett regelsystem angående dessa fakta. Logiken grundar sig i första gradens predikatkalkyl, och den dominerande regeln är modus ponens: Alla människor är dödliga. Sokrates är en människa. Sokrates är dödlig.... eller aningen mera formellt: A -> B (A implicerar B) A ( A är sant) B (... alltså måste B vara sant) Fakta och reglerna ingår i en kunskapsdatabas som man kan ställa frågor till (antingen ja/nej-frågor, eller allmänna frågor): Fakta regler fråga Inferensmaskin (modus ponens) svar
13 Parallell programmering Aktuellt vid särskilt beräkningstunga tillämpningar, ex. långtidsväderprognoser, vindtunnelturbulensanalyser, neurala nätverk, genetiska analyser,... I stället för en processor har vi här flera processorer som arbetar parallellt med en och samma uppgift. Utmaningen för programmeraren blir att dela arbetet på ett meningsfullt och effektivt sätt på dessa processorer. Utmaningen för den som designar arkitekturen blir bl. a. minnesaccess - hur får alla dessa processorer accessera minnet - och kommunikationen processorerna emellan (ska alla processorer kunna kommunicera med alla andra, eller ska vi ex. ha en processor som är ägnad åt att sköta kommunikationen?): Ex. YOURLIST = LIST[ ] : private NAME : public... PARALLEL[1..100] SEQSEARCH(YOURLIST, NAME, FOUND, INTERRUPT) IF FOUND, SEND INTERRUPT END PARALLEL
14 Objektorienterad programmering (OOP) Det centrala begreppet är objektet - algoritmerna blir något sekundärt. Enligt denna programmeringsfilosofi är det traditionella, imperativa programmeringssättet något onaturligt för människan, och därför ofta så svårt att lära sig. Förespråkarna för OOP säger att människan inte strukturerar sin värld i form av processer, utan i form av objekt. När vi ex. går in i ett bibliotek så ser vi först människor, bokhyllor och böcker, inte processer som utlåning, returnering, reservation etc. OOP försöker modellera detta sätt att se på saker och ting. Objektet blir härvid det primära, processerna något sekundärt, metoder som ett objekt (eller en instans av ett objekt) kan genomföra - eller låta bli att genomföra. Ex. på traditionell, imperativ design: Ex. anta att vi skall designa ett nytt datasystem för ett bibliotek. Det första vi frågar oss är vilka processer som äger rum i biblioteket, dvs. vilka processer som skall ingå i det nya systemet. Vi kommer kanske fram till följande lista: att låna ett exemplar av en bok att returnera ett exemplar att reservera en bok (obs! inte ett exemplar - varför?) att skicka kravbrev på ett exemplar att registrera en ny kund att söka information om en bok Alla dessa punkter är processer - att låna, att returnera, att reservera. Inom denna världsbild består den aktiva världen, det som vårt nya datasystem
15 skall reflektera, av processer. De som påverkas av processerna, kunderna, exemplaren, kravbreven, böckerna, ses som objekt, data som påverkas av processerna. Processerna är det primära, data något sekundärt. Detta har varit det traditionella sättet att systemera och programmera, och de traditionella imperativa programmeringsspråken har understött det. Inom OOP gör vi precis tvärtom: Objekten - de gamla data - är de primära, processer som hanterar dessa objekt blir nu metoder som (instanser av) dessa objekt kan välja att utföra. Vår analys av biblioteket kommer nu att reflektera detta synsätt: Ex. objektet Bibliotekskund kan ha följande attribut (egenskaper): - kundnummer - namn - adress (så vi vet vart skicka kravbreven) - en lista över innestående lån * att reservera en bok * att låna ett exemplar * att returnera ett exemplar * att lista de innestående lånen * att betala böten * att utföra en sökning Jag har markerat med ' -'de egenskaper som beskriver objektet i fråga, och med ' *'de egenskaper som är processer som objektet kan utföra. I Java skulle vi tala om variabler respektive metoder. Båda dessa kan räknas som attribut; de beskriver objektet i fråga. Terminologin inom OOP är inte enhetlig. Jag skall i fortsättningen kalla dessa för attribut respektive processer i allmänhet, variabler respektive metoder i Java i synnerhet.
16 Objektet Bok skulle kunna ha följande attribut och processer: - ISBN-numret - namnet - författarens namn - förlaget - tryckort - tryckår - antalet exemplar - reservationslista (en FIFO-kö) * att skriva ut första människan på reservationslistan * att sätta till en ny reservation i slutet av kön Ett exemplar av en bok skulle ärva vissa av egenskaperna hos en bok: - ISBN-numret - namnet - författarens namn - förlaget - förlagsortet - tryckåret Därutöver skulle varje exemplar tillhörande en bok ha vissa egna attribut: - exemplarnummer * kan utlånas - till vem? * kan förstöras/försvinna * kan returneras Vi skall diskutera begreppet arv (nedärvning) senare; exemplet ovan skall exemplifiera OOP helt allmänt. Att börja koda ett dylikt bibliotekssystem skulle kräva rätt så avancerade kunskaper i Java och databashantering, så vi skall designa enklare exempel först. Efter att du har tagit kursen i Databaser torde du kunna koda exemplet ovan utan större problem.
17 EGENSKAPER HOS OOP - ALLMÄN PRESENTATION De egenskaper som vi skall diskutera nedan gäller allmänt för objektorienterad design. Vissa av dessa principer kan vi försöka tillämpa även när vi jobbar med traditionella, imperativa programmeringsspråk som Pascal, Modula-2 eller C. De språk som gör anspråk på att vara speciellt objektorienterade, ex. Beta, Eiffel, C++ eller Java, har implementerat (konkretiserat, förverkligat) dessa egenskaper på olika sätt. Här är det alltså frågan om allmänna principer som du kan vänta dig att hitta implementerade på olika sätt i olika objektorienterade språk. OOP Java C++ Beta Eiffel... Den objektorienterade världssynen som vi beskrev ovan är gemensam för alla dessa språk: det centrala är objektet medan processerna är egenskaper hos enskilda objekt, något som dessa kan utföra. Härtill kommer det tre centrala principer: DATAINKAPSLING (data incapsulation) ARV/NEDÄRVNING (inheritance) FLERFORMIGHET (polymorphism) Dessa tre skall förklaras nedan. (Egentligen exemplifierar figuren ovan redan dessa principer: de olika programmeringsmetoderna är inkapslade i dessa olika språk; alla ärver de vissa principer från OOP, men de implementerar dessa på olika sätt.)
18 DATAINKAPSLING: Datainkapsling innebär att man "kapslar in" data och metoder som hör ihop (tänk på hur de olika ingredienserna är inkapslade i medicinkapsyler!). Idén är att sammanhörande data skall kunna hanteras som en enhet, och att utomstående programdelar inte kommer åt dessa delar separat om vi inte uttryckligen önskar det. Många OOP-språk - inklusive Java - har ytterst sofistikerade hierarkier på dylika "kapslar", och ytterst mångskiftande regler på hur och varifrån deras olika delar kan accesseras - eller inte accesseras. I Java har vi ex. paket, klasser, objekt, instanser, metoder osv. som alla fungerar som helheter bestående av separata delar. Ofta är det helheten vi vill arbeta med, i vissa situationer delarna. I våra Java-exempel brukar vi ex. importera paketet javagently för att komma åt den extremt nyttiga Text-klassen, som i sin tur består av flera användbara metoder för att läsa in och skriva ut olika sorters värden, eller hjälpa oss med filhantering. Vi behöver bara känna till namnet på metoden och hur vi skall anropa den, och så utförs metoden för oss. Det som vi däremot inte behöver känna till är hur metoden är implementerad, vilka kommandon den utför. Det ena enda som intresserar oss är resultatet. Det är detta som förstås med inkapsling. javagently Text Text.readInt Text.readDouble Text.readChar Text.readString Text.writeDouble... Om vi tänker på biblioteksexemplet ovan, så skulle både kunden, boken och exemplaret vara inkapslade som objekt: inne i detta objekt finns alla de olika attributerna, både de "vanliga" och processerna, som tillhör just detta objekt. I Java skulle vi kalla ett dylikt objekt för en klass (ex. kund) och de olika verkliga kunderna för instanser av denna klass.
19 ARV/NEDÄRVNING (INHERITANCE) Typiskt för OOP är att de olika objekten (eller klasserna, om vi vill använda Javas terminologi) utgör en hierarki. Ex. Människa Personalmedlem Studerande Lektor Professor DI IB Vi ser av figuren ovan att vi har två sorters människor i vårt system - personalmedlemmar och studerande. Personalmedlemmarna delar sig vidare i lektorer och professorer, och de studerande i DI (blivande diplomingengörer) och IB (blivande filosofie magistrar). I denna ytterst förenklade värld kan vi dock studera begreppet arv riktigt bra: de egenskaper som är gemensamma för alla människorna definieras hos objektet Människa. Både personalmedlemmar och studerande är människor (även om det inte alltid känns så...) och de ärver alla de egenskaper som är gemensamma för alla människorna, dvs. alla de egenskaper, attribut och processer, som är deklarerade för objektet Människa. Men: det finns egenskaper hos personalmedlemmar, ex. titel, undervisningsskyldighet och löneklass, som ingalunda gäller för alla människor. Dessa deklareras separat för klassen Personalmedlem. På motsvarande sätt, det finns egenskaper som är specifika för de studerande, som ex. matrikelnummer och en lista över avklarade kurser. Dessa deklareras separat för klassen Studerande. Vidare indelas klassen Personalmedlem i lektorer och professorer. Dessa ärver alla de egenskaper som gäller för personalmedlemmar (och därvia människor), men kan deklarera sina egna attribut; för professorsklassen kommer det ex. massor av administrativa
20 skyldigheter och ledning av forskningsprojekt, medan lektorerna kanske utför olika sorters institutionsarbeten. När det gäller de studerande så är kraven på DI-studerande och IB-linjen olika, och dessa skall deklareras separat för dessa objekt: Ex. Människa - namn - personnummer - adress Personalmedlem Studerande - institution - matrikelnummer - löneklass - STURE-rapport - undervisningsskyldighet Lektor Professor DI IB - institutionsarbeten - forskningsprojekt - krav - krav på på DI Fil. Mag. Om vi nu skapar en instans av objektet (klassen) DI, så ska denna blivande DI ha följande egenskaper: - namn (ärvs från Människa) - personnummer (ärvs från Människa) - adress (ärvs från Människa) - matrikelnummer (ärvs från Studerande) - STURE-rapport (ärvs från Studerande) - krav på DI (ärvs från DI) I början är dessa attribut tomma. Efter att vi har skapat instansen i fråga kan vi börja fylla i namn etc:
21 - namn (ärvs från Människa) Axel - personnummer (ärvs från Människa) J - adress (ärvs från Människa) Tavasthem 13 - matrikelnummer (ärvs från Studerande) STURE-rapport (ärvs från Studerande) en lång lista - krav på DI (ärvs från DI) en ännu längre lista För att Axel inte behöver studera ensam kan vi skapa en ny instans av samma klass, Stina: - namn (ärvs från Människa) Stina - personnummer (ärvs från Människa) Y - adress (ärvs från Människa) Tavasthem 15 - matrikelnummer (ärvs från Studerande) STURE-rapport (ärvs från Studerande) en lång lista - krav på DI (ärvs från DI) en ännu längre lista I allmänt språkbruk skulle vi kunna kalla både Axel och Stina för objekt, eller instanser av objekt. Vill vi lära oss Javas språkbruk kommer vi att kalla både Axel och Stina för instanser av klassen DI. Klassen DI utvidgar klassen Studerande, som i sin tur utvidgar klassen Människa. Klassen DI är en subklass av klassen Studerande som är en subklass av klassen Människa. Klassen Människa är en superklass av klassen Studerande som är en superklass av klassen DI. Du kan också använda termerna delklass och överklass i stället för subklass rspektive superklass. Så användbart som det ofta skulle vara att låta ett objekt ärva egenskaper från två eller flera olika klasser så tillåter Java inte detta! Ex. vi kan inte definiera en klass Lärarstudent som skulle ärva från både Personalmedlem och Studerande.
22 FLERFORMIGHET (POLYMORPHISM) (Franzén talar om ungefär samma sak under termerna skuggning och överskuggning.) När det gäller olika subklasser till en bestämd superklass, så är det ofta så att alla dessa subklasser har en viss gemensam metod, som ändå tar sig lite olika former beroende på vilken delklass det är frågan om. Ex. både klassen Lektor och klassen Professor kunde ha en metod årsrapport. Denna metod skulle planera årsrapporten för den ifrågavarande personalmedlemmen. Eftersom det dyker upp lite olika sysslor för lektorer och professorer så är det bäst att de båda delklasserna var för sig definierar vad som skall komma med i årsrapporten. För en lektor skulle årsrapporten ta med exempelvis följande punkter: - Vilka kurser lektorn har undervisat - Hur många studieveckor per år lektorn har producerat - Vilka förtroendeuppgifter lektorn har haft - Vilka kurser lektorn själv har gått på - Undervisningsmaterial lektorn har producerat I professorns motsvarande rapport skulle det kunna stå ex. följande: - Vilka forskarkurser professorn har undervisat - Hur många doktorsavhandlingar hon har handlett - Hur många licensiatavhandlingar hon har handlett - Hur många pro gradu/di-avhandlingar hon har handlett - Hur mycket extern finansiering hon har skaffat - Hur många artiklar hon har publicerat - Hur många konferenser hon har hållit föredrag på Uppgiften av metoden skrivarapport skulle vara densamma: att skriva ut denna årsrapport när den behövs. Därför väljer vi att kalla denna metod för skrivarapport, både för klassen Lektor och för klassen Professor. Strukturen hos dessa rapporter varierar dock beroende på tjänstekategori. Det är detta som kallas flerformighet.
23 Man kan också tänka sig att det fanns en metod med namnet skrivarapport definierad för klassen Personalmedlem. Eftersom det säkert finns många olika delklasser till denna överklass utöver våra lektorer och professorer, så kommer det att finnas bara mycket allmänna saker att skriva ut i denna metod. Vi säger då att metoden skrivarapport väljer sin form beroende av vilket objekt det är som skriver ut sin rapport: om instansen som ska skriva ut sin rapport hör direkt till klassen Personalmedlem, så skrivs det ut bara dessa allmänna saker. Om instansen hör till klassen Lektor, skrivs det ut en lektorsrapport. Om instansen hör till klassen Professor, skrivs det ut en professorsrapport. I dessa två senare fall säger vi att instanserna i klasserna Lektor och Professor överskuggar metoden skrivarapport i klassen Personalmedlem: Ex. Människa - namn - personnummer - adress Personalmedlem Studerande - institution - matrikelnummer - löneklass - STURE-rapport - undervisningsskyldighet * skrivarapport (bara namn etc.) Lektor Professor DI IB - institutionsarbeten - forskningsprojekt - krav - krav * skrivarapport * skrivarapport
24 Vi kan tänka oss två lektorer, Ragnar och Annamari, och två professorer, Kaj och Karin. Deras rapporter skulle kunna ha följande utseende: instans: Ragnar klass: Lektor - Vilka kurser lektorn har undervisat: 2 * Java I, 2 * Java II, labb I - Hur många studieveckor per år lektorn har producerat: 600? - Vilka förtroendeuppgifter lektorn har haft: (Olika institutionsarbeten, forskningsprojekt) - Vilka kurser lektorn själv har gått på: Avancerad AI, schack för experter (gissar...) - Undervisningsmaterial lektorn har producerat: Utmanade Java-program för lite längre hunna, Superutmanande Java-program för genier instans: Annamari - Vilka kurser lektorn har undervisat: Intro till DT, intro till DT/KTF, DST/KTF, Java- EXFORT, filosofiska utopier, dataetik - Hur många studieveckor per år lektorn har producerat 500? - Vilka förtroendeuppgifter lektorn har haft: sitter på institutionsrådet, ÅA-samarbete - Vilka kurser lektorn själv har gått på Immateriaalioikeudet verkossa, latin IV, Universitetspedagogi - Undervisningsmaterial lektorn har producerat: Enkla Java-program för nybörjare
25 Våra två professorer, däremot, kunde ha följande rapporter: instans: Kaj instans: Karin klass: Professorer - Vilka forskarkurser professorn har undervisat Advanced verification algorithms Multimedia - Hur många doktorsavhandlingar han har handlett 4 - Hur många licensiatavhandlingar han har handlett 6 - Hur många magisters/di-avhandlingar han har handlett 17 - Hur mycket extern finansiering han har skaffat Hur många artiklar han har publicerat 15 - Hur många konferenser han har hållit föredrag på 4 - Vilka forskarkurser professorn har undervisat Highly advanced verification algorithms Embedded systems - Hur många doktorsavhandlingar hon har handlett 2 - Hur många licensiatavhandlingar hon har handlett 2 - Hur många magisters/di-avhandlingar hon har handlett 14 - Hur mycket extern finansiering hon har skaffat Hur många artiklar hon har publicerat 25 - Hur många konferenser hon har hållit föredrag på 15
26 Som vi ser av exemplen ovan beror rapportens struktur, dess utformning, på vilken klass instansen som skriver ut sin rapport tillhör: Ragnar och Annamari skriver ut lektorsrapporter medan Kaj och Karin skriver ut professorsrapporter. Rapporternas innehåll varierar naturligtvis beroende på vilken instans det är som skriver ut sin rapport: även om Ragnar och Annamari får liknande tomma blanketter att fylla i, kommer de att skriva olika saker i sina rapporter, för de har hållit och gått på olika kurser. Det som ärvs är strukturen, inte innehållet. Varje instans av en klass ärver variablerna och metoderna av sin klass om vi inte anger annat. Det som varierar med flerformighet är strukturen (det måste anses vara självklart att innehållet varierar). Vi kan ha flera olika metoder med namnet skrivrapport, men de skriver ut olika saker beroende på vilken sorts instans som anropar dem.
OOP - OBJEKTORIENTERAD PROGRAMMERING
OOP - OBJEKTORIENTERAD PROGRAMMERING Det som skiljer objektorienterad programmering, OOP, från den traditionella, imperativa programmeringsstilen, är världssynen. Inom den imperativa traditionen - och
Läs merObjektorienterad programmering
Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad
Läs merFö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 merProgram & programmering
Program & programmering Vad är program? Satser och instruktioner, toggla igenom exempel Program på olika nivåer, för olika maskiner, för olika saker Tolka program; kompilator, intepretator, binärbytekod,
Läs mer"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde
Föreläsning 7 "Har en"-relation Arv "Har en" "Är en" Superklassen Object Överskuggning Fordonsexempel Seminarium 2 Relevanta uppgifter Uppgift 31 I exemplet Boll från förra föreläsningen gällde följande
Läs merIntroduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014
Introduktion till Datalogi DD1339 Föreläsning 1 8 sept 2014 Kontaktuppgifter & Info: Kurskod: DD1339, 19hp Kursomgång: inda14 Kursansvarig: Christian Smith, ccs@kth.se Michael Minock, minock@kth.se Dilian
Läs merFöreläsning 1: Intro till kursen och programmering
Föreläsning 1: Intro till kursen och programmering Kursens hemsida http:www.it.uu.se/edu/course/homepage/prog1/vt11 Studentportalen http://www.studentportalen.uu.se Lärare: Tom Smedsaas, Tom.Smedsaas@it.uu.se
Läs merImperativ 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 mer729G06 Föreläsning 1 Objektorienterad programmering
Översikt Formalia Vad är objektorienterad programmering 729G06 Föreläsning 1 Objektorienterad programmering Definieria klasser Skapa och använda objekt Annika Silvervarg Ciltab, IDA, Linköpings universitet
Läs merFö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 merFöreläsning 1: Intro till kursen och programmering
Föreläsning 1: Intro till kursen och programmering λ Kursens hemsida http:www.it.uu.se/edu/course/homepage/prog1/mafykht11/ λ Studentportalen http://www.studentportalen.uu.se UNIX-konton (systemansvariga
Läs merIntroduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner
Introduktion till programmering D0009E Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner
Läs merImperativ 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 mer729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo
729G75: Programmering och algoritmiskt tänkande Tema 1. Föreläsning 1 Jody Foo Föreläsningsöversikt Kursinfo / Om kursen Algoritmer Objektorienterad programmering i praktiken terminologi använda objekt
Läs merFö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äs mer729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo
729G75: Programmering och algoritmiskt tänkande Tema 1, föreläsning 1 Jody Foo Föreläsningsöversikt Kursinfo / Om kursen Algoritmer Objektorienterad programmering i praktiken terminologi använda objekt
Läs merIntroduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret 2014-2015. Lektion 1
Kattis Lektion 1 I kursen används onlinedomaren Kattis (från http://kattis.com) för att automatiskt rätta programmeringsproblem. För att få ett konto på Kattis anmäler du dig på Programmeringsolympiadens
Läs merProgrammering 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 merObjektorienterad programmering, allmänt
Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 juni 2005 1 Vilka egenskaper vill vi att program ska ha? Förslag (en partiell lista): De ska... gå snabbt att skriva vara
Läs merViktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?
Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 mars 2005 1. Korrekthet 2. Robusthet 3. Utökbarhet 4. Återanvändbarhet 5. Kompatibilitet
Läs merEDAA20 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 merProjektuppgift - Biblioteket
Projektuppgift - Biblioteket 2013 1. Projekt - syfte, instruktioner och uppgift Syftet med den här projektuppgiften är att ni nu ska tillämpa allt det ni har lärt er i kursens två labbdelar, dvs både kunskaper
Läs merObjektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015
Objektorienterad Programkonstruktion Föreläsning 6 23 nov 2015 Designmönster Färdiga "recept" för att lösa (del-)problem i struktureringen av ens program Mönster kan beskriva små komponenter eller stora
Läs merObjektorienterade 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 merIntroduktion 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 merObjektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)
Objektorienterad programmering Föreläsning 8 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda (halvdag) Objektorienterad programutveckling Algoritmer Algoritmkonstruktionerna Relationer
Läs merFöreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:
Föreläsning 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp
Läs merIntroduktion 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 merAnmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik II 2018-10-19 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merINFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)
Tentamen INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP) Delkurs 3 Introduktion till objektorienterad programmering och problemlösning Lärare: Johan Petersson, Tanja Mäki-Runsas Datum:
Läs merObjektorienterad programmering. Grundläggande begrepp
Objektorienterad programmering Grundläggande begrepp Hur beskriver vi objekt? Vill ha en representationsoberoende beskrivning Abstrakta datatyper! Data Operationer Objekt Representerar en verklig eller
Läs merSätt att skriva ut binärträd
Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer
Läs merKort om klasser och objekt En introduktion till GUI-programmering i Java
Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på
Läs merIntroduktion 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 merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
1 2 - Block, räckvidd Dagens föreläsning Programmering i Lisp - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Läs merIntroduktion 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
Läs merInledning. 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 merProgrammering = 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 merInledande 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 merFöreläsning REPETITION & EXTENTA
Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder
Läs merKompilering 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 merArv: 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 merIntroduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner
Introduktion till programmering Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner med
Läs merLaboration 1: Figurer i hierarki
Laboration 1: Figurer i hierarki Bakgrund Två grundläggande tekniker i objektorienterad konstruktion är arv och komposition. Mål Laborationen har flera avsikter: 1. Ge kunskaper i hur program kan organiseras
Läs merITK: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 merProgramdesign. Dokumentera. Dokumentera
Programdesign Dokumentera Välj datastruktur så programmet blir så enkelt som möjligt. Välj algoritm så programmet blir lättläst, robust och effektivt. Analysera programmet för att få en bra metod. Överväganden
Läs merVerktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse
Verktyg och Utvecklingsmiljö Föreläsning 2 Eclipse Verktyg Modern programutveckling innebär att man måste behärska ett antal verktyg. Editorer Kompilatorer Avlusare(debugger) Versionshantering(kommer i
Läs merIntroduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4
Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa
Läs merFöreläsning 15: Repetition DVGA02
Föreläsning 15: Repetition DVGA02 Vad handlar kursen om? Kursen kan i grova drag delas upp i tre delar: 1. Objekt-orienterad programmering 2. Grafiska användargränssnitt 3. Datastrukturer Dessutom genomsyras
Läs merObs! 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 merArv. 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 merDatalogi 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
Läs merExempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg
Loopar och upprepning Vill man upprepa kod flera gånger så istället för att skriva en massa rader så kan man lägga koden i ett kodblock som man sedan loopar. Det finns ett par olika typer av loopar, FORloop,
Läs merObjektorienterad programmering
Objektorienterad programmering Aletta Nylén http://user.it.uu.se/~aletta Epost: aletta.nylen@it.uu.se Rum: 1216 Kursinfo Lärare: Aletta Nylén Jesper Wilhelmsson Litteratur: Object-Oriented Software Development
Läs merProgramdesign. minnesutrymme storlek på indata. DA2001 (Föreläsning 15) Datalogi 1 Hösten / 20
Programdesign Välj datastruktur så programmet blir så enkelt som möjligt. Välj algoritm så programmet blir lättläst, robust och effektivt. Analysera programmet för att få en bra metod. Överväganden vid
Läs merTeoretisk del. Facit Tentamen TDDC (6)
Facit Tentamen TDDC30 2013-06-05 1 (6) Teoretisk del 1. (3p) "Snabba frågor" Alla svar motiveras väl. a) Vad skiljer en statisk metod från en icke-statisk? (0.5p) Svar:En statisk metod är associerad till
Läs merTentamen i Introduktion till programmering
Tentamen i Introduktion till programmering Kurskod: Skrivtid: D0009E 09:00-13:00 (4 timmar) Totalt antal uppgifter: 7 Totalt antal poäng: 38 Tentamensdatum: 2014-05-17 Jourhavande lärare: Tillåtna hjälpmedel:
Läs merDD1361 Programmeringsparadigm. Carina Edlund
DD1361 Programmeringsparadigm Carina Edlund carina@nada.kth.se Funktionell programmering Grundidéen med funktionell programmering är att härma matematiken och dess funktionsbegrepp. Matematiskt funktionsbegrepp
Läs merTentamen i Grundläggande programmering STS, åk 1 fredag
Tentamen i Grundläggande programmering STS, åk 1 fredag 2002-08-23 Skrivtid: 09.00 14.00 Hjälpmedel: Inga Lärare: Anders Berglund. Anders besöker tentan vid två tillfällen: cirka kl. 10.30 samt cirka kl.
Läs merProgrammering 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 merTeoretisk del. Facit Tentamen TDDC (6)
Facit Tentamen TDDC30 2014-08-29 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är skillnaden mellan synligheterna public, private och protected? (1p) Svar:public: Nåbar för
Läs merLaboration 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 mer729G06 Programmering och logik. Info om pythondelen & introduktion till objektorienterad programmering.
729G06 Programmering och logik Info om pythondelen & introduktion till objektorienterad programmering. Översikt Kursinformation Vad är objektorienterad programmering Skapa och använda objekt Enstaka objekt
Läs merTentamen. 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
Läs merFöreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.
Föreläsning 2 Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program. Vår process Kravbeskrivning (3 dagar). Enkel form av användningsfall (use cases). Analys
Läs merProgrammera 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 merGrundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14
Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 14 I torsdags & fredags: arrayer Deklaration, initiering, åtkomst Arrayer är referenser Arrayer som parametrar och returvärden Exempel
Läs merFöreläsning 5 Innehåll
Föreläsning 5 Innehåll Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Datavetenskap (LTH) Föreläsning 5 VT 2019 1 / 39 Val av algoritm och datastruktur
Läs merAlgoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.
Algoritmanalys Analys av algoritmer används för att uppskatta effektivitet. Om vi t. ex. har n stycken tal lagrat i en array och vi vill linjärsöka i denna. Det betyder att vi måste leta i arrayen tills
Läs merPROGRAMMERING. Ämnets syfte. Kurser i ämnet
PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration
Läs merLite 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
Läs merLÖ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 merTentamen ID1004 Objektorienterad programmering October 29, 2013
Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.
Läs merTentamen i Grundläggande programmering STS, åk 1 lördag 2002-05-25
Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-0-2 Skrivtid: 09.00 14.00 Hjälpmedel: Inga Lärare: Anders Berglund. Elena Fersman besöker tentan vid två tillfällen: cirka kl. 10.30 samt cirka
Läs merIT för personligt arbete F6
IT för personligt arbete F6 Datalogi del 2 DSV Peter Mozelius Datarepresentation Det som lagras i en dator representeras i grunden som 1:or och 0:or Dessa binära värden kan sedan tolkas på olika sätt i
Läs merProgrammeringsteknik II
Programmeringteknik II Kursintroduktion http://www.it.uu.se/edu/course/homepage/prog2/vt18/ 2018-03-19 Programmeringsteknik II 2018-03-19 1 / 9 Lärare Carl Nettelblad (kursansvarig) Anna Eckerdal Biträdande
Läs merDagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?
Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
Läs merTentamen i Grundläggande programmering STS, åk 1 fredag
Tentamen i Grundläggande programmering STS, åk 1 fredag 2003-05-23 Skrivtid: 09.00 14.00 Hjälpmedel: Inga Lärare: Anders Berglund. Anders besöker tentan vid två tillfällen: cirka kl. 10.30 samt cirka kl.
Läs merClasses 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 mer1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.
1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som
Läs merTUTORIAL: 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 merProjektuppgift - Gymmet
Projektuppgift - Gymmet 2013 1. Projekt - syfte, instruktioner och uppgift Syftet med den här projektuppgiften är att ni nu ska tillämpa allt det ni har lärt er i kursens två labbdelar, dvs både kunskaper
Läs merObjekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur
Objekt-orienterad utveckling Saker man vill uppnå: Objektorienterad analys och design Sven-Olof Nyström Uppsala Universitet 16 mars 2005 en systematisk metod för att gå från problembeskrivning till färdigt
Läs merSökning och sortering
Sökning och sortering Programmering för språkteknologer 2 Sara Stymne 2013-09-16 Idag Sökning Analys av algoritmer komplexitet Sortering Vad är sökning? Sökning innebär att hitta ett värde i en samling
Läs merTUTORIAL: 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 merRekursion och induktion för algoritmkonstruktion
Informationsteknologi Tom Smedsaas, Malin Källén 20 mars 2016 Rekursion och induktion för algoritmkonstruktion Att lösa ett problem rekursivt innebär att man uttrycker lösningen i termer av samma typ av
Läs merMälardalens högskola
Teknisk rapportskrivning - en kortfattad handledning (Version 1.2) Mälardalens högskola Institutionen för datateknik (IDt) Thomas Larsson 10 september 1998 Västerås Sammanfattning En mycket viktig del
Läs merOOP 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 merProgrammering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/
Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller
Läs merObjektorienterad programmering i Java I
Laboration 4 Objektorienterad programmering i Java I Uppgifter: 1 Beräknad tid: 6 9 timmar Att läsa: Kapitel 7, 8 (stränghantering, arrayer och Vector) Utdelat material (paket) Syfte: Att kunna använda
Läs merGrundkurs 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 mer2D1311 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
Läs merClasses och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
Läs merID1004 Laboration 4, November 2012
06-Nov-2012/FK ID1004 Laboration 4, 14-16 November 2012 Beräknad tid ca 1-2 timmar. Instruktionen antar att labben utförs i datasal, med hjälp av den integrerade utvecklingsmiljön Eclipse. Alternativt
Läs merKopiering 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 merUppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa
Lena Kallin Westin 2005-08-22 Institutionen för datavetenskap Umeå universitet TENTAMEN Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa Inlämnad Poäng Kurs : Programmeringsteknisk
Läs merTENTAMEN 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
Läs merTentamen i TDP004 Objektorienterad Programmering Lösningsförslag
Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag Datum: 2008-08-14 Tid: 08-12 Plats: PC6-PC7 i E-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna varje
Läs merMATLAB. 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 merDagens 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
Läs mer