Presentation laddar. Vänta.

Presentation laddar. Vänta.

1 Problemlösningsmetodik Per Lindström Datavetenskap, UmU.

Liknande presentationer


En presentation över ämnet: "1 Problemlösningsmetodik Per Lindström Datavetenskap, UmU."— Presentationens avskrift:

1 1 Problemlösningsmetodik Per Lindström Datavetenskap, UmU

2 2 Introduktion n Transformera en problembeskrivning till ett program skrivet i programspråk u formulera problemet så du förstår vad som ska göras u beskriv indata och utdata F vilka indata behövs F vad ska ”produceras” u gör en algoritmbeskrivning F stegvis förfining F producurell abstraktion u koda i aktuellt programspråk u testa

3 3 Think first, code later n Om något kan gå fel så kommer det att ske n Ju tidigare du börjar koda ditt program desto längre tid kommer det att dröja innan det fungerar n Tänk en gång, tänk en gång till, tänk lite mer och först då är det dags att börja koda programmet

4 4 Algoritm n En detaljerad lista av instruktioner i pseudokod u högnivåbeskrivningar F funktionellt via funktioner u lågnivåbeskrivningar F inläsning av data F variabler F val F iteration F utskrift av data n då dessa instruktioner utförs leder det till en lösning av ett speciellt problem i ändlig tid

5 5 Variabler Enkla värde: tal eller tecken (a,b,c…,+,*,\,/…) olika ”typer”: tex heltal, reella tal….. Sammansatta lista av tal eller tecken (ett index) Ex. x(i), b(4)... tabell (matris) av tal eller tecken (två index) Ex. A(i,j), tab(4,8)...

6 6 Inläsning av data Användaren matar in via tangentbordet -interaktiv inmatning Inläsning sker från datafil Ex. READ(skonr) /*variabeln skonr får värde via tangentbordet*/ READ(”telefil”, namn, telnr) /* inläsning från tänkt telefonkatalog*/

7 7 Val IF villkor THEN /* envägs IF */ satser IF villkor THEN /* tvåvägs IF */ satser ELSE satser IF villkor1 THEN /* flervägs IF */ satser ELSEIF villkor2 THEN satser ELSE satser

8 8 Iteration Upprepning av vissa instruktioner tills något stoppvillkor är uppfyllt *FOR-loop FOR styr:=start TO slut {increment/decrement tal} satser END *REPEAT-loop REPEAT satser UNTIL villkor *WHILE-loop WHILE villkor DO satser END

9 9 Utskrift av data Skriv ut variblers värden och strängar med tecken -på skärmen -på en extern datafil Ex. WRITE(”Summan= ”, summa) /*skärmen*/ WRITE(”fil1”, summa)

10 10 Problem Beräkna och skriv ut volymen för en cylinder Hur beräknas volymen för en cylinder? Volym=höjd*bottenytans area Vi måste alltså förse programmet med cylinders höjd och tex radien på den cirkel som utgör dess botten. Algoritm på hög nivå 1. Läs in höjden (hoejd) och radien (radie) 2. Beräkna volymen 3. Skriv ut volymen

11 11 Algoritm på lägre nivå 1. WRITE(”Mata in cylinderns höjd”)/*ledtext*/ READ(hoejd) WRITE(”Mata in radien för cylinderns botten”) READ(radie) 2. Bottenarea=pi*radie*radie Volym=hoejd*bottenarea 3. WRITE(”Cylinderns volym= ”, Volym)

12 12 C-kod #include #define PI int main(void) { floathoejd, radie, Botten_area, Volym; printf(”Mata in cylinderns höjd\n”); scanf(”%f”, &hoejd); printf(”\nMata in radien för cylinderns botten: ”); scanf(”%f”, &radie); /*Beräkna volymen*/ Botten_area=PI*radie*radie; Volym=hoejd*Botten_area; printf(”\n\nCylinderns volym= %f\n”, Volym); return 0; }

13 13 Validering av indata 1. REPEAT WRITE(”Mata in cylinderns höjd”)/*ledtext*/ READ(hoejd) UNTIL hoejd>0 and hoejd<100 REPEAT WRITE(”Mata in radien för cylinderns botten”) READ(radie) UNTIL radie>0 2. Bottenarea=pi*radie*radie Volym=hoejd*bottenarea 3. WRITE(”Cylinderns volym= ”, Volym)

14 14 Validering av indata #include #define PI int main(void) { floathoejd, radie, Botten_area, Volym; printf("Mata in cylinderns höjd\n"); scanf("%f", &hoejd); /* Validera inläst värde */ while ((hoejd 100)) { printf("Försök igen: Mata in cylinderns höjd\n"); scanf("%f", &hoejd); }

15 15 Validering, forts. printf("\nMata in radien för cylinderns botten: "); scanf("%f", &radie); /* Validera inläst värde */ while (radie <= 0) { printf("Försök igen: Mata in radien för cylinderns botten:\n"); scanf("%f", &radie); } /*Beräkna volymen*/ Botten_area=PI*radie*radie; Volym=hoejd*Botten_area; printf("\n\nCylinderns volym= %f\n", Volym); return 0; }

16 16 Validering av indata, ver. 2 #include #define PI int main(void) { floathoejd, radie, Botten_area, Volym; hoejd = -10; /* fejkat värde */ /* Validera inläst värde */ while ((hoejd 100)) { printf(“ Mata in cylinderns höjd\n"); scanf("%f", &hoejd); }

17 17 Validering, ver. 2, forts. radie = -10; /* fejkat värde */ /* Validera inläst värde */ while (radie <= 0) { printf("Mata in radien för cylinderns botten:\n"); scanf("%f", &radie); } /*Beräkna volymen*/ Botten_area=PI*radie*radie; Volym=hoejd*Botten_area; printf("\n\nCylinderns volym= %f\n", Volym); return 0; }


Ladda ner ppt "1 Problemlösningsmetodik Per Lindström Datavetenskap, UmU."

Liknande presentationer


Google-annonser