Programmeringsmetodik

Slides:



Advertisements
Liknande presentationer
Det värdefulla ENGAGEMANGET
Advertisements

Att förstå anonymiteten (översättning från
Att identifiera och utveckla ledare
Talföljder formler och summor
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Relationsdatabasdesign
9. Gör ritningen innan Du bygger huset
Problemsnack eller bygga lösningar.
Romersk skulptur Exempel Förutsättningar Kännetecken
Problemcentrerad undervisning metod Hokkaido lärarhögskolan (Asahikawa) Professor Kazuhiko Souma
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
hej och välkomna EKVATIONER Ta reda på det okända talet.
Fi2 Lägesrapport om IT-utvecklingen i fastighetsbranschen
ARKISTOLAITOS Arkivverket Projekt för förnyelse av webbplatsen.
Funktioner och programorganisation
Leif Håkansson’s Square Dancer Rotation
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
P-uppgiften: regler, planering och specifikation
Inloggning till Landstinget Kronoberg via Citrix
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
©storm.
Elkraft 7.5 hp distans: Kap. 3 Likströmsmotorn 3:1
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
1 Medarbetarenkät svar. 2 Kön 3 Jag är knuten till en klass, undervisningsgrupp eller barngrupp.
Kommunpussel Din uppgift är att sortera de organisatoriska delar på nästa sida på ett sådant sätt att det överensstämmer med hur din kommun är organiserad.
V E R S I O N N R 2. 0 T A V E L I D É E R I M I L J Ö.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 7: Deadlocks.
Problembaserat inlärande eller Problembaserat lärande
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Programmering B PHP Lektion 2
Workshop inför Projektet
Programmering B PHP Lektion 3
Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1
Algebra och ekvationer
Språkteknologiska metoder Språkteknologisk forskning och utveckling (HT 2006)
TÄNK PÅ ETT HELTAL MELLAN 1-50
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Barnets rättigheter i Sverige och för alla barn i världen
Känna till och ha provat metoder och verktyg för processledning
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
Algoritmer. Ordet kommer från en persisk författare som kom från al’Khowârizmi (engelskans algorithm). Han skrev boken ’Kitab al jabr w’al-muqabala’.
SEO Manager för EPiServer LÅT REDAKTÖRERNA VARA REDAKTÖRER.
1(31) Ett omdiskuterat ämne. Vad är det som händer? 2.
Barnets rättigheter i Sverige och för alla barn i världen
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 11 J-uppgiften. Nästa period ägnas åt J-uppgiften. Den är individuell, dvs man jobbar på egen hand med uppgiften (inte tillsammans med labbkompisen).
1 Anneli Juhlin FP
Utvecklingsprocessen Webbutveckling. Utvecklingsprocessen Bli inte rädd för alla begrepp och alla verktyg man verkar behöva kunna. Du måste inte använda.
Läsbar prolog CM 8.1. allmäna principer correctness user-friendliness efficiency readability modifiability robustness documentation.
Problemlösningsmetodik
1 L U N D S U N I V E R S I T E T Resultat av internundersökning om information på LTH Genomförd våren 2007.
Här är ditt liv, Bertil! 15/
Ingenjörsmetodik IT & ME 2008
Kartminne En serie bilder som ger övning av ”rutinen” Tänk på: –Vart är jag på väg? –Varifrån är kontrollen lättast att ta? –Vilken är sista säkra? –Förenkla.
INFORMATIONSSYSTEM Informationssystem: datoriserat system som stödjer en organisations informationsförsörjning VERKSAMHET avbildar Definitionen alltför.
Problemlösning. Programmeringsmetaforer Instruktion Konstruktion Problemlösning Adaptation Demonstration.
Räkna till en miljard 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15,16,17,18,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, En miljard är ett.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
BVForum - en genomgång för revisorer Sören Thuresson.
DATABASHANTERING för programmerare Lektion 5 Mahmud Al Hakim
Bild 1 Prognos för länets arbetsmarknad Stefan Tjb.
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
1 Jan Lundström OV’s Hemsida Utbildning Ledare. 2 Jan Lundström OV’s Hemsida Standard Lagrum.
När infaller Julafton och hur ofta?
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( )‏ Innehåll:  Att designa parallella program - manuell vs. automatisk parallellisering.
Föreläsningsanteckningar Kortfattat om programmeringsmetodik Ola Ågren Hur det går till att göra ett program.
Programmeringsträff 2. Programmeringsträff 2 Lgr 11 om programmering Centrala innehållet matematik Algebra 1-3 – Hur entydiga stegvisa instruktioner.
Närvaro
Presentationens avskrift:

Programmeringsmetodik Vad är programmering Vad är programmeringsmetodik Vad är en algoritm

Vad innebär det att programmera? Konstruera en datorartefakt (datorsak) som: Löser ett problem eller en uppgift Gör det enklare att lösa ett problem eller en uppgift Som roar användaren Det finns många typer av datorsaker såsom Interaktiva (det finns en användare som styr programmet) Batch-program Typen av datorartefakt påverkar vad det innebär att programmera? Vad innebär det att programmera? Konstruera en datorartefakt (datorsak) som: Löser ett problem eller en uppgift Gör det enklare att lösa ett problem eller en uppgift Som roar användaren Det finns många typer av datorsaker såsom Interaktiva (det finns en användare som styr programmet) Batch-program Typen av datorartefakt påverkar vad det innebär att programmera?

Vad innebär det att programmera? Storleken eller komplexiteten på programmet påverkar också vad det innebär att programmera Småskalig programmering Ett fåtal personer inblandade Upp till ett tusental rader kod T ex. laborationerna på kursen Storskalig programmering Stora projekt med upp flera hundra inblandade Kan sträcka sig över flera år Enormt mycket med kod att skriva och hantera T ex. Programmeringen av AXE-stationerna Storleken eller komplexiteten på programmet påverkar också vad det innebär På kursen ägnar vi oss åt småskalig programmering Detta är grunden även i de stora projekten, men i de tillkommer en rad faktorer som gör det mer komplext samarbete flöden beroenden testning validering specifikation dokumentation styrning

Att jobba som programmerare Handlar mycket om: Problemlösning Design Dokumentation Specifikation Granskning Felsökning Konstruktion Handlar mycket mindre än man tror om: Kodning vid datorn Kunskaper om människor kommer in mer och mer pga de interaktiva programmen WIMP-gränsytorna: Erfarenheter av människor Kognitionsvetenskap MDI Psykologi Pedagogik Hur vi lär Hur vi uppfattar

Vad har vi för hjälpmedel som programmerare? Strategi Algoritmer Programmeringsspråk Utvecklingsmiljö Editorer Kompilator, mm Diverse verktyg för att sök efter fel och rätta fel Administrationsverktyg Dokumentation, beskrivning Programbibliotek Programmeringsmetodik, för hela programmutvecklingsfasen specifiaktion design verifikation kodning dokumentation felsöking, mm Algoritmer kunskapen om förstå en algoritm konstuera(problemlösning) skriva ner den koda den i ett programmeringsspråk Prorammeringsspråk (C, ML, Pascal,C++, etc) Utvecklingsmiljö (MS Visual C++) Editor (ordbehandlare) Kompilator, länkning, syntax kontroll, beroende kontroll Diverse verktyg för att sök efter fel och rätta fel Administrationsverktyg, projekthantering mm Dokumentation, beskrivining Redan skrivna program (programbibliotek)

Programmeringsmetodik Mer än bara kodning? Konstruktion Design Dokumentering Metodik? En strategi eller metod för att utföra något Ett arbetssätt En arbetsplan

Det finns olika typer av programmering En och samma metodik för alla typer av programmering? Vi kommer att koncentrera oss på småskalig programmering Nej!

Skillnader i metodik Storskalig programmering kräver mycket mer administration Versionshantering Personal Testning och felhantering blir mycket mer komplext Varför småskalig programmering på kursen? Lättare att börja med, överblickbara problem Storskaligheten går alltid att bryta ner till småskalighet

Typer av småskalig programmering Maskinnära programmering Realtidsprogrammering Probleminriktad programmering Programmering av batch-system Passiva användare Programmering av interaktiva system Aktiva användare Alla typer av programmering kräver en egen typ av programmeringsmetodik i viss mening

Strukturerad programmering Vi vill inte ha några spagetti-program utan någon struktur. En metodik som lämpar sig för småskalig programmering av algoritmiska problem

Strukturerad programmering Formulera uppgiften, specificera Lös problemet, konstruera algoritmen Verifiera algoritmen Val av programmeringsspråk Kodning Avlusning Validering Dokumentation Underhåll

Formulera uppgiften Samla in information - dialog med beställaren Strukturera, indata, utdata, arbetsmiljön Skriv ner en specifikation Problem: Omgivning: Indata: Utdata: Tänk över kritiska situationer För att reda ut För att kunna validera algoritmen och programmet

Lös problemet, konstruera algoritmen “Dived and conquer” Stegvis förfining - “Top-down” Stegvis ihopslagning - “Bottom up” Hybridmetod i praktiken

Verifiera algoritmen Arbetskrävande “handexekvering” Använd någon form av testschema Viktigt att hitta och test extremfallen Skriv eventuellt algoritmen i ett prototypspråk, som är lättare att verifiera.

Val av programmeringsspråk Det finns många språk som är lämpade olika bra för olika typer av programmering, problem, etc Man bör välja programmeringsspråk efter Sina egna kunskaper Problemets natur Lösnings natur Tillgången

Kodning av algoritmen Saker som ingår i kodningsarbetet Definiera programmeringsstilen Strukturera dataflödet Design av (abstrakta) datatyper Implementera algoritmen och datatyperna Kommentera koden ordentligt Följ algoritmen (som är verifierad) Återanvändning av kod

Testning och verifiering av koden Testa delarna för sig allt eftersom de blir klara Ställ upp ett testschema delarna logiska block hela systemet Validering av systemet Stäm av det färdiga systemet mot beställningen som är specificerad i ett dokument, skriv ner skillnader och likheter

Dokumentation Sammanställ den information som de övriga punkterna har producerat Inledning Problemspecifikation Systembeskrivning beskriv systemet i stora drag, modulariseringen, dataflöde, större datastrukturer Algoritmbeskriving Resultat från olika typer av verifiering, och avlusning Användarmanual Möjliga utvecklingar av systemet

Underhåll av systemet Ett system har en livscykel som innebär Rätta till kända felaktigheter Implementera möjliga förbättringar Inrapportera felaktigheter Versionshantering

Efter den persiske matematikern Muhammend al Khowarzmi 800 talet e. kr Algoritm Efter den persiske matematikern Muhammend al Khowarzmi 800 talet e. kr

Vad är en algoritm Algoritm är som ett recept eller som en arbetsbeskrivning Ingredienser Receptet Ugn Plåtar Bunkar Bullar

Exempel Antag att vi har en lista med alla anställda på ett företag: Namn, Pnr, och Lön, och vi vill räkna ut lönekostnaden för företaget. Skriv ner talet 0 Gå igenom listan, och för varje anställd så adderar du personens lön till det skrivna talet När man har nått slutet på listan, så är det nedskrivna talet utdata

Karakteristik för en algoritm Texten som beskriver algoritmen är fixt stor Processen som algoritmen beskriver kan vara av dynamisk storlek Algoritmer löser en klass av problem Algoritmer kan ha olika kornighet T ex. Andra steget i föregående algoritm kan förfinas så att man får en mer finkornig algoritm

Algoritmer mer formellt Def: En algoritm är en noggrann plan, en metod för att stegvis utföra något. Krav på en algoritm: Ändlighet (Algoritmen måste ha en ändlig beskrivning) Bestämdhet (Varje steg måste vara entydigt) Indata (Algoritmen måste ha Noll eller flera indata) Utdata (Algoritmen måste ha Ett eller flera utdata) Effektivitet (Varje steg i algoritmen måste vara effektiva, kunna utföras på en ändlig tidsrymd) Dessa krav medför att många program inte är algoritmiska enligt def. eller inte uppfyller kraven. OS-system Interaktiva system

Algoritmkonstruktion & Problemlösning Problemlösningsstrategi eller metod (top-down, bottom-up, etc) Dålig eller felaktig strategi kan ge: Ineffektiv lösning Dålig lösning Ingen lösning alls Handelsresande skall åka från staden A till staden B, han startar kl. 8.00 och är framme kl.13.00. Antag att skall åka tillbaka nästa dag till staden A. Han startar kl 8.00 igen och är framme kl 13.00. Fråga. Finns det någon plats som han är på vid exakt samma tidpunkt som dagen före? Schack dominoproblemet Giftas problemet Vid problemlösnig är det viktigt att kunna skaka om titta från olika håll, inte vara rädd för okonvotionellt tänkande, men också att känna till kända lösingar på liknande problem som går att återanvända Komplexiteten i algoritmer är också en viktig del. både i beräkningarna som krävs men också i implemetationen utbytesförhållande mellan snabba algoritmer och minnes åtgång mm

Problemlösning och algoritmkonstruktion Stegvis förfining - “Top-down” Strukturerad lösning Överblickbar metod Risk för att uppfinna hjulet igen Stegvis ihopslagning - “Bottom up” Återvinning Lego-metod Konstruerar onödigheter Hybridmetod i praktiken

Algoritmskrivning Kort och koncist språk Entydigt Högnivå-liknande syntax

Att leta fel i programmet Vilka verktyg har vi till förfogande Testscheman Bra språkkunskap Editorn Kompilatorn Papper och penna Spårutskrifter

Olika typer av fel Syntaxfel Semantiska fel Tankefel Grammatiska fel Jag åkte ett buss Felstavningar Tvetydigheter Soppan är klar Mannen slog pojken med käppen Semantiska fel Tankefel Problemet är löst på fel sätt Syntax fel Om man jämför programmeringsspråk med vanliga språk kan man säga att syntaktiska fel är stavfel och grammatiska fel. Det vill säga de är lätta att upptäcka om man bara känner till språkets regler. Detta medför att kompilatorn själv upptäcker många (i princip alla) syntaktiska fel. De fel som inte upptäcks är, precis som i naturligt språk, de fel som blir rätt. Om jag till exempel säger granen men egentligen menar grannen så har felet på något sätt blivit rätt. Semantiska fel Med semantiska fel menas att man på något sätt inte har tänkt rätt när man skall lösa ett problem, betydelsen (semantiken) av det man gjort är inte det man tänkt sig. Semantiska fel är generellt mycket svårare att upptäcka, detta för att programmet mycket väl kan gå igenom kompileringen och gå att köra, men inte ge de förväntade resultaten.

Att upptäcka fel Syntaktiska fel Semantiska fel Många kan upptäckas vid kompileringen Semantiska fel Programmet uppträder inte som det skall Svårare att upptäcka var de är