Presentation laddar. Vänta.

Presentation laddar. Vänta.

Programmeringsmetodik

Liknande presentationer


En presentation över ämnet: "Programmeringsmetodik"— Presentationens avskrift:

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

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

3 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

4 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

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

6 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

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

8 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

9 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

10 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

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

12 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

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

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

15 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

16 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

17 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

18 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

19 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

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

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

22 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

23 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

24 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

25 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 och är framme kl Antag att skall åka tillbaka nästa dag till staden A. Han startar kl 8.00 igen och är framme kl 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

26 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

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

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

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

30 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


Ladda ner ppt "Programmeringsmetodik"

Liknande presentationer


Google-annonser