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

Relevanta dokument
Programdesign. Dokumentera. Dokumentera

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

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

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

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

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

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Datalogi, grundkurs 1

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

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

Datalogi, grundkurs 1

Besiktningsprotokollet

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

Föreläsning 10. Besiktningsprotokollet

Problemlösning och funktioner Grundkurs i programmering med Python

Projektuppgift - Biblioteket

Testning av program. Verklig modell för programutveckling

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

Föreläsning 2 Programmeringsteknik och C DD1316

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

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

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?

Uppgift 1 (grundläggande konstruktioner)

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

Projektuppgift - Gymmet

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

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

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

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

Projektuppgift - Banken

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

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

C++ Slumptalsfunktioner + switch-satsen

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

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

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Sanningar om programmering

Föreläsning 5: Introduktion av pekare

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

Idag: Dataabstraktion

Föreläsning 6: Introduktion av listor

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

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

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

Procedurer och villkor

Laboration: Whitebox- och blackboxtesting

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

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

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

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

Föreläsning 5 Mer om funktioner, villkor

Teoretisk del. Facit Tentamen TDDC (6)

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

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

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

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

Använda Python Laboration 1 GruDat, DD1344

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

Grundläggande datalogi - Övning 1

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program.

Variabler och konstanter

Tentamen, EDAA10 Programmering i Java

Värmedistribution i plåt

Grundläggande datalogi - Övning 9

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

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

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

Användarhandledning Version 1.2

Algoritmer, datastrukturer och komplexitet

DD1314 Programmeringsteknik

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

Pythons standardbibliotek

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

Tentamen i Introduktion till programmering

I dag: Blockstruktur, omgivningar, problemlösning

Deklarationer/definitioner/specifikationer

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

TDP002 - Imperativ programmering

Föreläsning 3-4 Innehåll

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

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

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

Några grundläggande begrepp

Testning. 1. Inledning

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Magnus Nielsen, IDA, Linköpings universitet

Föreläsning 4: Poster

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

HI1024 Programmering, grundkurs TEN

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

Tommy Färnqvist, IDA, Linköpings universitet

Sätt att skriva ut binärträd

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

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 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 2: Avlusning och antilustekniker

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

Transkript:

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 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. DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 1 / 20

Dokumentera 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 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 DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 3 / 20

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 4 / 20

In- och utdata till procedurer och funktioner 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. DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 5 / 20

Definiera automatiskt Vid specifikation av problem: definiera automatiskt Axiom Konstruktorer Selektorer Previllkor Postvillkor DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 6 / 20

Top-down-metoden 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å. DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 7 / 20

Obs! 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 8 / 20

Vägar att hitta fel... 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. DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 9 / 20

Testning av program Vilka metoder kan vi använda för att testa program? Vi utgår sorteringsproceduren: def sort(a, b, c): if a > b: a, b = b, a if a > c: a, c = c, a if b > c: b, c = c, b return a, b, c DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 10 / 20

Testning av program Black box 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) DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 11 / 20

Sista testet kraschar sort, ändra def sort(a, b, c): try: if a > b: a, b = b, a if a > c: a, c = c, a if b > c: b, c = c, b return a, b, c except TypeError as t: print(t) DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 12 / 20

Testning av program Glass 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 DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 13 / 20

Testning av program Ticking box 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 14 / 20

Indentera! 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) DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 15 / 20

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. Indentering kan vara klargörande i många situationer! 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) DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 17 / 20

Koddokumentation... ## # sort(a, b, c) # # pre: 3 parametrar som är jämförbara med avseende på > # post: tupel med värdena i stigande ordning ## def sort(a, b, c): try: if a > b: a, b = b, a if a > c: a, c = c, a if b > c: b, c = c, b return a, b, c except TypeError as t: print(t) # end sort DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 18 / 20

Koddokumentation... 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 def sort(a, b, c): """Sortera tre värden pre: 3 parametrar som är jämförbara med avseende på > post: tupel med värdena i stigande ordning """ try: if a > b: a, b = b, a if a > c: a, c = c, a if b > c: b, c = c, b return a, b, c except TypeError as t: print(t) # end sort DA2001 (Föreläsning 15) Datalogi 1 Hösten 2013 19 / 20

Koddokumentation... >>> 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 20 / 20