Programdesign. Dokumentera. Dokumentera

Relevanta dokument
Programdesign. minnesutrymme storlek på indata. DA2001 (Föreläsning 15) Datalogi 1 Hösten / 20

Föreläsning 4 Programmeringsteknik DD1310. Felhantering. Syntax. try och except är reserverade ord som används för hantering av exekverings fel.

Exempel att testa. Stora problem och m-filer. Grundläggande programmering 4. Informationsteknologi. Informationsteknologi.

Typsystem. Typsystem... Typsystem... Typsystem... 2 *

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19

Datalogi, grundkurs 1

Projektuppgift - Biblioteket

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Planering av ett större program, del 2 - for och listor. Linda Mannila

Uppgift 1 (grundläggande konstruktioner)

Projektuppgift - Gymmet

Testning av program. Verklig modell för programutveckling

Projektuppgift - Banken

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Föreläsning 5: Introduktion av pekare

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Bakgrund. Bakgrund. Bakgrund. Håkan Jonsson Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige

Idag: Dataabstraktion

Funktioner, Procedurer och Parametrar. Funktioner, Procedurer och Parametrar... Funktioner, Procedurer och Parametrar procedurspecifikation

Procedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet

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

Procedurer och villkor

Datalogi, grundkurs 1

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Configuration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar

Föreläsning 10. Besiktningsprotokollet

Teoretisk del. Facit Tentamen TDDC (6)

Besiktningsprotokollet

C++ Slumptalsfunktioner + switch-satsen

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

Sanningar om programmering

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Variabler och konstanter

Värmedistribution i plåt

Föreläsning 2 Programmeringsteknik och C DD1316

Problemlösning och funktioner Grundkurs i programmering med Python

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

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while

Föreläsning 6: Introduktion av listor

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

I dag: Blockstruktur, omgivningar, problemlösning

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

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

Några grundläggande begrepp

Testning. 1. Inledning

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

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

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

Fly me to the moon. Laboration om relationer, TDDC75 Diskreta strukturer. Mikael Asplund. 5 september 2017

Laboration 3, uppgift En klass för en räknare

Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!

Tentamen, EDAA10 Programmering i Java

Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while

Föreläsning 2: Avlusning och antilustekniker

Introduk+on +ll JavaScript if- sats, funk+oner, bilder

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Användarhandledning Version 1.2

Tildatenta Lösningsskiss

Datalogi, grundkurs 1

Grundläggande datalogi - Övning 9

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Abstraktion. Abstraktion... Abstraktion... Abstraktion...

Abstraktion. procedurabstraktion. DA2001 (Föreläsning 26) Datalogi 1 Hösten / 27

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Algoritmer, datastrukturer och komplexitet

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

DD1361 Programmeringsparadigm. Carina Edlund

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Föreläsning 3-4 Innehåll

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

Använda Python Laboration 1 GruDat, DD1344

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

Magnus Nielsen, IDA, Linköpings universitet

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning 4: Poster

kl Tentaupplägg

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet.

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Redovisning av inlämningsuppgifter

Planering Programmering grundkurs HI1024 HT 2014

TUTORIAL: SAMLING & KONSOLL

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Föreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 18

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 8 10, 7 april 2016

Introduktion till MATLAB, med utgångspunkt från Ada

kl Tentaupplägg

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 8 Om abstrakta datatyper och binära sökträd

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Grundläggande datalogi - Övning 1

Transkript:

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 vid val av algoritm är: Lättlästhet minnesutrymme storlek på indata Testa programmet med möjliga (och omöjliga) indata och kontrollera att det fungerar. Verifiera programmet. Försök att i förväg verifiera att algoritmerna fungerar. Det är viktigt att programmet är lättläst och kommenterat (där det behövs) Namn väljs så att de har mening i programmet. Bra namn i huvudprogrammet på allt som används globalt. Bra procedur- och funktionsnamn. Tillåtet att ha kortare namn i detaljerade underprogram. I loopar kan man använda enbokstaviga namn men försök hitta beskrivande namn istället. Om det behövs kommentera, men se först efter om koden går att förenkla så kommentaren blir överflödig. Av koden ska det framgå hur programmet fungerar. Kommentarer skall alltid tala om vad/varför inte hur. Namnen skall vara enkla, inte likna varandra och få läsaren på rätt spår. Använd aldrig namn som l, o, lo, ol... DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 1 / 20 DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 2 / 20 Dokumentera Dokumentera varje underprogram. Det skall innehålla kommentarer avseende följande: 1. Programmerare (om fler) 2. Versionsnummer och datum 3. Vad programmet gör och ev. metod som används 4. In- och utdata (domän och codomän). 5. Varifrån anrop sker (vilken proc/funkt anropar och ev. i vilken situation) 6. Var ytterligare dokumentation finns. 7. Endkommentarer vid blockslut Svåra programavsnitt Förklara svåra programavsnitt Förklara konstanter, typer och variabler. Uppdatera dokumentationen då koden uppdateras. Formatera koden så att den blir lättläst DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 3 / 20 DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 4 / 20

In- och utdata till procedurer och funktioner Definiera automatiskt Previllkor : De begränsningar under vilka en rutin fungerar. Postvillkor : Eller: De egenskaper hos tillståndet som är resultat av en rutins anrop. Om du lovar att previllkor är uppfyllda innan exekveringen så lovar jag (rutinen) att postvillkor är uppfyllda efter. För varje rutin skall previllkor och postvillkor anges! Helst skall rutinen kontrollera att de uppfylls. Vid specifikation av problem: definiera automatiskt Axiom Konstruktorer Selektorer Previllkor Postvillkor DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 5 / 20 DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 6 / 20 Top-down-metoden Obs! Arbeta top-down (hierarki av abstraktioner). Man arbetar uppifrån och ned, dvs börja med att betrakta den övergripande strukturen för att sedan bryta ned den i delbitar tills vi når detaljnivå. Bli expert på att hitta fel och tyda felmeddelanden. Att korrigera dem är oftast förhållandevis enkelt. Ett program läses under längre tid än det skrivs!!!! Då du avslutat ditt arbete och programmet är levererat så är c:a 80% av jobbet kvar. DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 7 / 20 DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 8 / 20

Vägar att hitta fel... Testning av program Testa funktioner och procedurer vartefter de blir klara, detta istället för att köra hela programmet när det är klart. Utskrifter i programmet som visar vad som händer. Använd WriteLn för att skriva ut värden på exempelvis slingvariabler. Debugger ger möjlighet att spåra fel genom utskrift av variabelvärden, stackdump osv Statisk analyserare hittar variabler som aldrig används, inte initierats men används, delar av kod man aldrig når osv. Tänk på att det är möjligt att påvisa närvaron av buggar men inte att inga finns. Vilka metoder kan vi använda för att testa program? Vi utgår sorteringsproceduren: DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 9 / 20 DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 10 / 20 Testning av program Black box Sista testet kraschar sort, ändra Black box testa med Lätta värden som går att kontrollera. T.ex. sort(0, 0, 0), olika permutationer av 0 och 1 i sort(0, 1, 1) samt olika permutationer av 1, 2 och 3 i sort(1, 2, 3). Typiska värden, t.ex. sort(7, 23, 1) Gränsvärden, t.ex. sort(0, 1/sys.maxsize, -1/sys.maxsize) Felaktiga värden, t.ex. sort( a, 3, 4.13) except TypeError as t: print(t) DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 11 / 20 DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 12 / 20

Testning av program Glass box Testning av program Ticking box Glass box: Välj värden så att alla programmets vägar genomlöps. Anropet sort(3, 5, 1) genomlöper första if-satsen Anropet sort(1, 3, 5) genomlöper andra if-satsen Anropet sort(5, 1, 3) genomlöper tredje if-satsen Ticking-box-metoden är den enklaste av alla: Strunta i felen, användaren kommer ju ändå att upptäcka dem. Då felrapporterna kommer - åtgärda. Metoden kallas också den tidsinställda bomben. DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 13 / 20 DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 14 / 20 Indentera! Indentera forts... Om Dig, Eriksson om vilken jag ej kunnat tänka mig något dylikt har jag då Du då jag till följd av iråkad snuva måst nysa brast i skratt fått en högst ofördelaktig tanke. Lektorn: Om Dig, Eriksson, om vilken jag ej kunnat tänka mig något dylikt, har jag, då Du, då jag till följd av iråkad snuva måst nysa, brast i skratt, fått en högst ofördelaktig tanke. (Albert Engström) Indentering kan vara klargörande i många situationer! DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 15 / 20 DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 16 / 20

Från och med labb 8 måste ni... Från och med labb 8 måste ni dokumentera er kod Det skall finnas: 1. Previllkor 2. Postvillkor Och, om det är tillämpligt (använd sunt förnuft) 3. Programmerare (om fler) 4. Versionsnummer och datum 5. Vad programmet gör och ev. metod som används 6. In- och utdata (domän och codomän). 7. Varifrån anrop sker (vilken proc/funkt anropar och ev. i vilken situation) ## # sort(a, b, c) # # pre: 3 parametrar som är jämförbara med avseende på > # post: tupel med värdena i stigande ordning ## except TypeError as t: print(t) # end sort DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 17 / 20 DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 18 / 20 Det finns en dokumentationskonvention som man bör ansluta till när man börjar göra stora Pythonprogram. och som ni naturligtvis kan använda redan nu """Sortera tre värden pre: 3 parametrar som är jämförbara med avseende på > post: tupel med värdena i stigande ordning """ except TypeError as t: print(t) # end sort >>> sort(3, 4, 2) (2, 3, 4) >>> print(sort. doc ) Sortera tre värden pre: 3 parametrar som är jämförbara med avseende på > post: tupel med värdena i stigande ordning DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 19 / 20 DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 20 / 20