Problemlösningsmetodik

Slides:



Advertisements
Liknande presentationer
Visual Basic - Genomgång
Advertisements

void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
2D1311 Programmeringsteknik med PBL
#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Algoritmer och datastrukturer
Arrays Indicerade variabler.
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Grundläggande programmering
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Programmering B PHP Lektion 2
1 ITK:P1 Föreläsning 5 Iteration, slumpning och arrayer DSV Peter Mozelius.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
Internet A Javaskript.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
Funktioner, styrstrukturer, manipulering av matriser
1 Föreläsning 3 programmeringsteknik och Matlab 2D1312/ 2D1305 Matlab fortsättning Funkioner, styrstrukturer, manipulering av matriser.
Grundläggande programmering
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( ) Innehåll: - Förening av dataströmmar - Signaler - Signalhantering.
Modulär programutveckling
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 2 Skolan för Datavetenskap och kommunikation.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Anders Sjögren Bitfält exempel Nu kommer ett förbättrat program. Det är funktions- uppdelat och kan lägga till poster som lagras på fil.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
Anders Sjögren Filer - långtidslagring. Anders Sjögren Filtyper i DOS talet ett ( intx=1; ) lagrat i en –textfil, (en sekvens av tecken ( bytes )) enligt.
F5 - Fält & strängar 1 Programmeringsteknik, 4p vt-00 Fält Många element av samma typ Typexempel : lista av heltal Gemensamt namn Individuella värden nås.
Programmeringsteknik Föreläsning 17 Skolan för Datavetenskap och kommunikation.
Anders Sjögren Deklarationsområde och funktioner.
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 13 programmeringsteknik och Matlab Funktioner, styrstrukturer, mer om matriser.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Algoritmer och loopar Algoritmer, beräkningsbarhet
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
Anders Sjögren Funktioner något in och något annat ut.
KPP053, HT2015 MATLAB, Föreläsning 4
Python.
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Närvaro
Iteration – Repetitionssats - while
Presentationens avskrift:

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” gör en algoritmbeskrivning stegvis förfining producurell abstraktion koda i aktuellt programspråk testa

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

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

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

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*/

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

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 UNTIL villkor *WHILE-loop WHILE villkor DO

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)

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

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)

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

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)

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

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"); } /*Beräkna volymen*/ Botten_area=PI*radie*radie; Volym=hoejd*Botten_area; printf("\n\nCylinderns volym= %f\n", Volym); return 0;

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

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;