Besiktningsprotokollet

Relevanta dokument
Föreläsning 10. Besiktningsprotokollet

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

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

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

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

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

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

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

Föreläsning 2 Programmeringsteknik och C DD1316

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

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

Idag: Centrerad utskrift. Granskning. DD1311 Programmeringsteknik med PBL. Granskning Felhantering GUI. Föreläsning 15.

Tentamen i Introduktion till programmering

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. 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.

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

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

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

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

Föreläsnings 9 - Exceptions, I/O

Användarhandledning Version 1.2

Föreläsning 3-4 Innehåll

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

DD1314 Programmeringsteknik

TUTORIAL: KLASSER & OBJEKT

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

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

Uppgifter teknik HT17 (uppdaterad v. 40)

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

Ordlistor, filhantering och ut på webben. Linda Mannila

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

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

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

729G04 Programmering och diskret matematik. Python 3: Loopar

Tentamen: Datordel Programmeringsteknik

Variabler och konstanter

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

4.4 Swing ett interaktivt grafiskt gränssnitt

Uppgift 1 (grundläggande konstruktioner)

Grundläggande datalogi - Övning 1

Textsträngar från/till skärm eller fil

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

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

Planering Programmering grundkurs HI1024 HT 2014

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Sammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Laboration: Whitebox- och blackboxtesting

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

TDIU01 - Programmering i C++, grundkurs

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Mer till P-uppgiften: Dokumentation. Nyheter. Algoritm för sökning. Mer hjälp. DD1311 Programmeringsteknik med PBL

2D1339 Programkonstruktion för F1, ht 2003

Programdesign. Dokumentera. Dokumentera

Problemlösning och funktioner Grundkurs i programmering med Python

Design av en klass BankAccount som representerar ett bankkonto

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

#include <stdio.h> #include <string.h>

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

Objektorienterad Programmering (TDDC77)

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

HI1024 Programmering, grundkurs TEN

2D1339 Programkonstruktion för F1, ht 2004

Skolan för Datavetenskap och kommunikation. Programmeringsteknik. Föreläsning 13

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Föreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

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

2D1339 Programkonstruktion för F1, ht 2003

Filer. DA2001 (Föreläsning 16) Datalogi 1 Hösten / 19

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter

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

Objektorienterad programmering Föreläsning 11. Copyright Mahmud Al Hakim

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Transkript:

Besiktningsprotokollet Föreläsning 10 Besiktningsprotokollet 1 2 Informativa utskrifter Programmet ska tala om för användaren vad programmet gör i varje steg och vilken inmatning som förväntas. Ett dåligt exempel kan se ut så här: Ge tal1 : 26 och tal2 : 54 29 31 37 41 43 47 53 Informativa utskrifter Man ska inte behöva titta i en manual eller ännu värre själva programkoden för att förstå vad som händer. Att köra programmet måste vara självinstruerande. Bättre exempel: Hej och välkommen till Primtalsprogrammet! Programmet skriver ut alla primtal i ett intervall du definierar. Ange lägre gränsen i intervallet: 26 Ange högre gränsen i intervallet: 54 De primtal som finns mellan 26 och 54 är: 29 31 37 41 43 47 53

Enkel inmatning Felhantering Anmärk på programmet om inmatningen onödigt krånglig Vill du boka en biljett?ja Varifrån åker du? Arlanda Vart ska du åka? Kastrup Vilken månad ska du åka? Mars Vilken dag ska du åka? 25 Vill du boka returbiljett?ja Vilken månad ska du tillbaka? April Vilken dag ska du tillbaka? 5 Det går tyvärr inget flyg den 25 mars. Försök igen Vill du boka en biljett?ja Varifrån åker du? Arlanda Vart ska du åka? Kastrup Vilken månad ska du åka? Mars ( inget flyg kommer onödigt sent; inget sätt att boka för flera personer) (Har ingen ruta i granskningsprotokollet.) För betyg C krävs att programmet kan hantera fel som uppstår Tex behövs ofta en slinga vid inmatning f ör att programmet ska kunna gå vidare: Ange täljare: 1000 Ange nämnare: 0 Nämnare får inte vara noll! Försök igen. Ange nämnare: 10 1000 delat med 10 blir 100 Kommentarer Alla klasser, metoder och funktioner måste kommenteras. Berätta syftet med klassen/metoden/funktionen. Det ska räcka att läsa kommentar och metodhuvud för att förstå hur en metod ska användas man ska alltså inte behöva titta i koden. In och utdata till metoder och funktioner måste kommenteras. Det gäller parametrar, returvärden och eventuella bieffekter, tex att en instansvariabel ändras. Om metoden använder sig av instansvariabler ska detta kommenteras.

Vettiga namn Vettiga namn Bättre: Nedanstående programkod är ganska svår att tyda namn = 0 kalle=0 while kalle < len(pelle): if pelle[kalle] > namn: namn = pelle[kalle] kalle+=kalle max = 0 i = 0 while i < len (vektor): if vektor[i] > max: max = vektor[i] i += 1 Man ser nu lättare vad koden gör: sparar undan det högsta värdet i vektorn till variablen max. Fortfarande är det inte optimalt bra namn på vektorn. Vad för slags värden innehåller den? Är det löner, skottstatistik eller vad? funktions och metodnamn: oftast verb som beskriver vad de gör klass och variabelnamn: oftast substantiv som beskriver vad klassen/variabeln representerar Snyggt program Konsekvent språk Var konsekvent i ditt språkval. Alla variabel/metodnamn på ett språk. Alla kommentarer på ett språk. OK att ha engelska variabel/metodnamn och kommentera på svenska. Undvik svengelska (sejva svenska språket). Konsekvent typografi Håll dig till samma typografi i hela programmet. Tex kan camelcase användas: varje delord inleds med stor bokstav. Variabel- och metodnamn inleds med med liten bokstav. Detta ska då gälla för hela programmet! class EnKlass: class EnTillKlass: def enmetodsomtartreparametrar (x, y, z): ettheltal = 12 Strukturering Lämplig uppdelning i klasser Används klasser för att på ett naturligt sätt modellera ditt problem, dvs låt varje klass representera ett objekt eller koncept Låt inte en klass lösa för många, skilda, problem. Om så är fallet kanske problemet kan brytas ned ytterligare i nya klasser/funktioner. Inför inte klasser i onödan!

Lämplig uppdelning i metoder och funktioner Lämplig uppdelning i metoder och funktioner Metoder och funktioner ska göra en sak. Dåligt exempel: def lasfranfil (): filnamn = input ("Vad heter filen? ") f = open (filnamn, "r") ls = f.readlines () numbers = [] for element in ls: try: x = int (element) except: continue numbers.append (x) return numbers Koden ovan gör flera saker: frågar efter en fil, läser in allt data från filen, gör om data till heltal, stoppar in heltalen i en heltalsvektor och returnerar denna. Bättre: filnamn = fraagafilnamn () fildata = laesfranfil (filnamn) tallista = fildatatillheltal (fildata) Programmet blir mer flexibelt. Metoden fraagafilnamn kan skrivas om till ett grafiskt GUI där man klickar på rätt fil. Metoden laesfranfil kan användas i andra sammanhang då man vill läsa från fil. Man kan skicka fildata till en ny metod som kontrollerar data innan man anropar konvertera. Temporära variabler så lokalt som möjligt Strukturering Deklarera tillfälliga variabler så lokalt som möjligt. Dåligt exempel: def lasfranfil (self, filnamn): self.infil = open (filnamn,"r") self.list = self.infil.readlines() return self.list Notera att metoden sätter om instansvariablerna infil och list. Övriga metoder och funktioner som använder dessa kommer att påverkas. Även om programmet fungerar ändå (ingen annan metod använder infil) kan man få allvarliga problem om man försöker utöka programmet. Det är ett grovt fel att använda instansvariabler som loopvariabler. Ingen kodupprepning Ingen kodupprepning Likartad kod som behövs på flera ställen i programmet kan oftast brytas ut som en funktion. Istället för att upprepa for-slingan nedan i både showcustomers och showbonuscuts inför vi funktionen printcustomers: def printcustomers (customers): for customer in customers: print ("%s har klippt sig %d ggr" % (customer, customer.nvisits)) def showcustomers (): print ("Lista på kunder:") printcustomers (database.customers ()) def showbonuscuts (): print ("Lista på kunder med gratisklippning:") printcustomers (database.bonuscuts ()) Undvik att skriva siffror eller andra literaler direkt i koden (att göra det kallas hårdkodning) Deklarera istället dessa som konstanter: N_CHOICES = 5... if ans <= N_CHOICES:... Förekommer samma konstant på flera ställen kan dess värde nu ändras genom ändring på ett ställe i koden och man riskerar inte att glömma något ställe att ändra på.

Strukturering Flexibelt program Skriv ditt program så att det lätt att utöka och bygga ut: Försök att bryta ned problemet i naturliga delar Undvik dolda beroenden mellan delarna (undvik tex att en funktion påverkar en annan via en bieffekt) Renodla så att en funktion gör bara en sak och kommentera den väl ovanför definitionen. Då kan en annan programmerare använda den utan att behöva tänka på hur den är implementerad (se slide om kommentarer tidigare). Något om övriga krav Programmet måste uppfylla kraven i p-uppgiftslydelsen. Det är inte tillåtet att förenkla uppgiften. Om du vill göra några förändringar bör du förankra det med kursledaren först. Du måste kunna visa en bekräftelse (ett ebrev t.ex.) på att kursledaren godkänt kravförändringar. För att få ett högre betyg måste alla krav för lägre betyg också vara uppfyllda. Vid redovisningen ska man kunna redogöra för alla detaljer i koden. Handledaren ska kunna ta bort en rad och man ska kunna förklara vad som händer.