Föreläsning 10. Besiktningsprotokollet

Relevanta dokument
Besiktningsprotokollet

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

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

Föreläsning 2 Programmeringsteknik och C DD1316

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

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

Användarhandledning Version 1.2

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

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

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

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

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 DD1310. Programmering. Programspråk

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

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

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

TUTORIAL: KLASSER & OBJEKT

Föreläsning 3-4 Innehåll

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

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

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

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

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

Tentamen i Introduktion till programmering

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.

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

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

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.

Uppgifter teknik HT17 (uppdaterad v. 40)

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

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

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

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

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

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

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

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

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

DD1314 Programmeringsteknik

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

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

Uppgift 1 (grundläggande konstruktioner)

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

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

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

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

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

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

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

Vi programmerar Java!

Grundläggande datalogi - Övning 1

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

4.4 Swing ett interaktivt grafiskt gränssnitt

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

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

TDIU01 - Programmering i C++, grundkurs

TUTORIAL: SAMLING & KONSOLL

2D1339 Programkonstruktion för F1, ht 2003

Objektorienterad programmering Föreläsning 2

Planering Programmering grundkurs HI1024 HT 2014

Design av en klass BankAccount som representerar ett bankkonto

Problemlösning och funktioner Grundkurs i programmering med Python

Värmedistribution i plåt

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

Programdesign. Dokumentera. Dokumentera

Objektorienterad Programmering (TDDC77)

2D1339 Programkonstruktion för F1, ht 2004

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

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

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

Ordlistor, filhantering och ut på webben. Linda Mannila

TDDC77 Objektorienterad Programmering

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, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

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

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

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

2D1339 Programkonstruktion för F1, ht 2003

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Tentamen i Grundläggande programmering STS, åk 1 lördag

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

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

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

Java, klasser, objekt (Skansholm: Kapitel 2)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Tentamen: Datordel Programmeringsteknik

729G04 Programmering och diskret matematik. Python 3: Loopar

Föreläsning 13 och 14: Binära träd

Transkript:

Föreläsning 10 Besiktningsprotokollet 1

Besiktningsprotokollet 2

Användarvänlighet

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

Användarvänlighet

Enkel inmatning 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)

Felhantering (Har ingen ruta i granskningsprotokollet.) För betyg B 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

Begriplighet

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 både returvärden, parametrar och eventuella bieffekter, tex att en instansvariabel ändras. Om metoden använder sig av instansvariabler ska detta kommenteras.

Begriplighet

Vettiga namn 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

Vettiga namn Bättre: 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

Begriplighet

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 Metoder och funktioner ska göra en sak. Dåligt exempel: def lasfranfil(): filnamn = input("vad heter filen?") in=open(filnamn,"r") list =in.readlines() vek=[] for element in list: if type(element)==type(0): vek=vek+[element] return vek 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.

Lämplig uppdelning i metoder och funktioner 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 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 ha loop-variabler som instansvariabler.

Strukturering

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 ())

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