1 / 17

Problemlösningsmetodik

Problemlösningsmetodik. Per Lindström Datavetenskap, UmU. Introduktion. Transformera en problembeskrivning till ett program skrivet i programspråk formulera problemet så du förstår vad som ska göras beskriv indata och utdata vilka indata behövs vad ska ”produceras”

becka
Download Presentation

Problemlösningsmetodik

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. Think first, code later • Om något kan gå fel så kommer det att ske • Ju tidigare du börjar koda ditt program desto längre tid kommer det att dröja innan det fungerar • 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. Algoritm • En detaljerad lista av instruktioner i pseudokod • högnivåbeskrivningar • funktionellt via funktioner • lågnivåbeskrivningar • inläsning av data • variabler • val • iteration • utskrift av data • då dessa instruktioner utförs leder det till en lösning av ett speciellt problem i ändlig tid

  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. 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. 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 ELSE IF villkor2 THEN satser ELSE satser

  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. 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. 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. 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. C-kod #include <stdio.h> #define PI 3.141592 int main(void) { float hoejd, 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. 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. Validering av indata #include <stdio.h> #define PI 3.141592 int main(void) { float hoejd, radie, Botten_area, Volym; printf("Mata in cylinderns höjd\n"); scanf("%f", &hoejd); /* Validera inläst värde */ while ((hoejd <= 0) | (hoejd > 100)) { printf("Försök igen: Mata in cylinderns höjd\n"); scanf("%f", &hoejd); }

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

  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; }

More Related