Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Problemløsning og metoder

Liknende presentasjoner


Presentasjon om: "Problemløsning og metoder"— Utskrift av presentasjonen:

1 Problemløsning og metoder
Hva er programmering? Problemløsning og metoder Læreboka, kap.11

2 Programvarekrise Det er fra tid til annen nyhetsoppslag og fokusering på dataskandaler 1990: Rikstrygdeverkets informasjonssystem, TRESS-90 ble ikke ferdig til planlagt tid. Fem år senere blir prosjektet stoppet. Anslått tap ca 1,2 mrd. Kr. 1995: Statens Vegvesen taper 152 mill kr ved utvikling av et nytt system son viser seg å være ubrukelig. 1995: NSB taper 200 mill kr på et nytt billettsalg system som ikke fungerer 1999: Software bransjen tjener gode penger på år 2000-problemet IT-bransjen er ikke den eneste som gjør feil og som ofte viser store økonomiske overskridelser, spørsmålet er HVORFOR dette skjer Gjennom denne forelesningen skal ulike sider av dette belyses, og en skal se på hva som er så spesielt vanskelig ved utvikling av program

3 Problemløsning - datamaskin
I forbindelse med datamaskiner snakker vi gjerne om problemløsning når det er en jobb vi ønsker gjort. Vi kan selvsagt snakke om problemer med maskinen, den henger seg, vi kommer inn osv. Men i denne sammenheng snakker vi om bruk av datamaskinen til å løse en eller annen oppgave.

4 Problemløsnings teknikker
For å få til en problemløsning trenger vi: oversikt over problemløsningsteknikker oversikt over typiske problemstillinger som har sammenheng med representasjon av informasjon (brukergrensesnitt) oversikt over problemstillinger relatert til beregning og manipulasjon av informasjon.

5 Detaljerte instruksjoner
Når det skal utvikles et dataprogram, er det nødvendig å lage detaljerte instruksjoner som datamaskinen skal utføre En datamaskin kan ikke tenke selv, derfor må programmet være beskrevet ned til minste detalj, og ta hensyn til alle mulige feilsituasjoner som kan oppstå Som en analogi til matlaging, kan vi se på et eksempel med instruksjoner for starten av et program som skal piske egg: Finn kartongen merket ”Egg” i kjøleskapet og sett den på benken; Finn to tomme plastboller, B1 og B2 i hjørneskapet; Definer Skallet som det harde hvite utenpå egget; Definer Plommen som det runde, gule inni egget; Definer Hviten som det flytende gjennomsiktige inni egget; Repeter 5 ganger: La E være et egg som fortsatt er helt, grip dette med én hånd; Kakk E mot kanten av B1 så Skallet så vidt sprekker;

6 Problemløsning - hovedfaser
Problemløsning vil gjerne omfatte følgende hovedfaser: Problemanalyse: hvilket problem skal løses? Er der delproblemer? Finne løsningsstrategier (brukbare algoritmer) Implementering av algoritmene i et programmeringsspråk

7 Delrutiner Når vi utvikler et program er det viktig å bryte problemet ned i mindre deler Hver del må klart og entydig beskrives Vi må da utvikle del rutiner for hver enkelt del For hver avgrenset del må vi beskrive hvordan denne del rutinen skal starte, og hva som skal bli resultatet av oppgaven Ut i fra analogien med kjøkkenrutinen, kan vi fastslå: Detaljeringen er på et helt annet nivå enn beskrivelsen i en kokebok Hvis problemet er misforstått, blir løsningen gal selv om programmet i seg selv arbeider riktig Jo mer fleksibelt eller generelt et system skal være, jo mer kompleks vil programmeringen også bli

8 Problemløsning - programmering
Etter hvert som en får oversikt over hvilke delrutiner som inngår i en problemløsning, prøver en å løse hvert delproblem. Dette kalles for skrittvis raffinering Delrutinene må ses i sammenheng slik at det blir en totalløsning

9 Problemløsning - resultater
Når man bryter ned problemstillingen i delrutiner er det viktig at en klarer å definere hva en akseptabel løsning må innholde. I den sammenheng er det viktig å spesifisere hvilke resultater (utdata) som kreves produsert hvordan de skal de skal presenteres hvilke inndata trengs for å kunne produsere de nødvendige resultater

10 Problemløsning - strategi
I tillegg er det viktig å finne en effektiv strategi og en detaljert framgangsmåte for hvordan de foreskrevne utdata skal produseres - hvilket grensesnitt skal de ha mot brukeren? Hvordan skal brukeren involveres i utviklings prosessen ?

11 Livssyklus for programvare
Et programsystem starter gjerne med en idé eller at noen oppfatter et problem som ønskes løst ved hjelp av IT Det avsluttes gjerne med at det kasseres eller skiftes ut med nytt Hva som skjer mellom disse to tidspunkter, kalles livssyklus En overordnet strategi kan derfor være å utvikle en modell for dette, en livssyklusmodell Det finnes mange metoder for dette, og vi skal her se nærmere på det som tradisjonelt kalles vannfallsmetoden

12 Vannfallsmodellen Utvikling av programvare tenkes sekvensielt gjennom 5 ulike faser: Analyse Konstruksjon Implementasjon Testing Vedlikehold Hva Design

13 Vannfallsmetoden Analyse - Hva – definere problemet godt.
Design- hvordan skal vi løse problemet - modularisering Implementering – via pseudokode Test – rett opp feil Vedlikehold Svakhet: Metoden tar tid og kanskje problemet endrer seg underveis

14 Programmerings paradigmer
Det finnes flere tilnærmingsmåter for programmering. Noen bruker ord som paradigmer alt etter hvilken innfallsvinkel vi velger. Det vi har sett på er det såkalte prosedyreorienterte paradigme. Dette har vært toneangivende i mange år, og har fokusert på logiske prosedyrer som tar input data, prosesserer disse og lager output data.

15 Objekt-Orientert Programmering
Ved OOP betrakter vi objekter, og beskriver disse ved sine egenskaper, attributter og verdier. Et objekt kan være feks et menneske (beskrevet ved navn, adresse mv) Første skritt blir å identifisere alle objekter og relasjoner mellom dem C++ og JAVA er objekt orienterte programmerings språk

16 Hvorfor programmering
Hvorfor må jeg vite noe om programmering? Hjelper deg til å forstå datamaskinen og hvordan den arbeider Å skrive noen få programmer øker tryggheten og selvtilliten Det er en analytisk måte å tenke/jobbe på

17 Programmeringsprosessen
Programmeringsprosessen henger sammen med problemløsningsprosessen. Etter å ha definert problemet starter planleggingen med å løse det Deretter koder vi løsningen/ vi programmerer Tester ut Dokumenterer programmet

18 Planlegge løsningen Planleggingen av programmeringsprosessen
Kan gjøres ved hjelp av et flytdiagram Pseudokode Begge deler

19 Koding av programmet Når vi skal kode den løsningen vi har kommet fram til må vi: Velge programmeringsspråk Følge språkets regler /syntaks Skrive en programkode som utfører det vi har planlagt

20 Testing av programmet Skrivebordstesting (teste ut manuelt med papir og blyant) Kompilering (oversetter programmet til maskinkode) Feilretting Sette sammen eventuelle delprogrammer Sjekke at du får de forventede resultat

21 Dokumentering av programmet
Forklare hva programmet gjør i form av kommentarsetninger og en forklaring i begynnelsen Forklare hva de forskjellige deler gjør Dokumentasjon hjelper både deg som programmerer og en eventuell ‘arvtaker’ av programmet.

22 Styring av program 3 strukturer: Sekvens Iterasjon - gjentakelse Valg

23 Sekvens Start Hent inn en post (navn, personnummer)
Eksempel – Pasienteregister skrevet i pseudokode Start Hent inn en post (navn, personnummer) Skriv ut regning på poliklinisk undersøkelse Avslutt

24 Iterasjon / gjentakelse /løkke
Start Hent inn første post Så lenge der er poster på fila - les inn navn og personnummer - skriv ut regning - hent neste post til der ikke er flere igjen Slutt L Ø K E

25 Valg Start Hent inn en post Les inn navn og undersøkelsestype
Hvis undersøkelsestype = A så skal egenandelen settes til kr 200 ellers skal den være kr 500 Skriv ut regning V A L G

26 Sekvens med gjentakelse og valg
Start Les inn første post Så lenge der er poster på fila/lista - gjør dette: Hvis undersøkelsestype = A så skal egenandelen være kr 200 ellers skal den være kr 500 Skriv ut regning Hent neste post til der ikke er flere igjen Avslutt

27 Hva er makroprogrammering?
Er et lite program som utfører en eller flere spesifiserte ting I Word/Excel kan det enkelt lages en macro som utfører en bestemt tastesekvens eller beregning Dette kan spare mye arbeide ved å forenkle operasjoner Macrospråket som benyttes er Visual Basic Visual Basic er et objektbasert programmeringsspråk VB kan også benyttes som et selvstendig programmerings verktøy

28 Logiske strukturer ved programutvikling
Bruk av variabler Oppdeling i prosedyrer og del-rutiner Boolsk algebra Loop programmering – eksempler

29 Eksempel på programmering
Vi skal i denne presentasjonen gjennomgå noen eksempler på programmering og logisk tenkning - struktur Hensikten er å belyse hvorledes en kan dele opp et større program i mindre del-oppgaver samt å gjennomgå noen begrep Boolsk algebra brukes i mange sammenheng, og er kort beskrevet med noen eksempler

30 Eksempel på beregning av areal
Hvis vi skal lage et program for beregning av areal i en trekant, kan dette typisk deles i følgende del-rutiner: Input av data: Brukeren taster inn sine data i to tekstfelter Når han er ferdig med dette klikkes en kommandoknapp Beregning av areal kan gjøres i egen del-rutine Output av data: Resultatet av beregningen presenteres

31 Eksempel på brukerinterface
Vi kan lage et brukerinterface på mange ulike måter Dette er et enkelt eksempel på beregningsprogram: 2) Resultatet vises i en meldingsboks 1) Knappen starter en prosedyre

32 Bruk av variabler I all programmering benyttes variabler
Dette er tall/bokstaver/ord/setninger som blir definert, og som lagres av programmet Vi må navngi en variabel, for eksempel ”X” Denne variabelen kan så tilordnes en verdi For eksempel X = 123 X = ”abc”

33 Variabler benyttes i beregninger
En variabel kan benyttes i beregninger For eksempel beregning av areal av en trekant: G = 45 ’ Grunnlinje H = 25 ’ Høyde A = (G * H)/2 ’ Areal Bokstaver kan også brukes som variabler (streng) For eksempel bruk av navn: Fornavn = ”Hans” Etternavn = ”Larsen”

34 Boolske verdier Boolske verdier (sannhetsverdier) er data som enten har verdien 1 (True) eller 0 (False) Dette benyttes for å lagre verdier av ja/nei typen Det brukes også for å angi om et uttrykk er sant eller usant Ved sammenligninger av verdier benyttes True/False for å se om vi har likhet, eller om en verdi er nådd Eksempel: If A = B then ……………..… else ……………….. end if [ Programkode som utføres hvis uttrykket er sant ] [ Programkode som utføres hvis uttrykket er usant ]

35 Boolsk algebra Boolske uttrykk er matematisk behandling av sanne/usanne verdier For eksempel ”Saldo < 0” – dette uttrykket er sant dersom saldo er mindre enn 0 Vi kan benytte de boolske operatorene i matematisk sammenheng: AND (OG) , OR (ELLER), NOT (IKKE), EXCLUSIVE OR (XOR) Eksempler på uttrykk som benytter boolske operatorer: (Time = 16.00) AND (Det regner) Uttrykket er TRUE når begge betingelsene samtidig er oppfylt, at klokka er fire og at det regner (Time = 16.00) OR (Det regner) Uttrykket er TRUE når en av betingelsene er oppfylt, når klokka er fire eller når det regner (Time = 16.00) AND NOT (Det regner) Uttrykket er TRUE når begge betingelsene er oppfylt, at klokka er fire og at det ikke regner (Time = 16.00) XOR (Det regner) Uttrykket er TRUE bare dersom en av betingelsene er oppfylt, men ikke dersom begge er det Vi får derfor at uttrykket er TRUE både når klokka er fire og at det ikke regner samt også når det regner og at klokka ikke er fire

36 Boolsk sammenligning Boolske operatorer kan også brukes sammen med operatorene: < (mindre enn) ; > (større enn) ; <> (forskjellig fra) >= (Større eller lik); <= (mindre eller lik) A >= B får verdien TRUE for eksempel hvis B= 4 og A = 5 (Reply > 1 And Reply < 9) får verdien TRUE for alle tall mellom 1 og 9 IF Svar = (Reply > 1 And Reply < 9) THEN Dette uttrykket er da sant for tall 1– 9 IF NOT A <> B THEN ….. Dette uttrykket er sant når verdiene A = B Eksempel på sammensatt uttrykk: NOT (A > B) er sant for verdiene A<=B X = (A >= B); Y = NOT(A > B); Z = X AND Y Dette uttrykket er sant når A = B X = (A > B); Y = NOT(A > B); Z = X OR Y Dette uttrykket er sant for alle verdier Følgende kode kan brukes til videre beregning om uttrykket er sant: IF Z THEN …………

37 Valg og løkker Når beslutninger i et program skal tas benytter vi valgstrukturer. Disse kan kombineres med løkker Det er flere ulike strukturer som kan benyttes: If-Then, If-Then-Else, If-Then-Elseif-Else Select Case For-Next Do-While Løkkene kan være nestede (en løkke inne i en løkke) Du kan bruke en kombinasjon av logiske operatorer: And-Or-Not Du kan bruke sammenligningsoperatorer: < = >

38 If - statement Evaluering Av vilkåret False (usant) True (sant) Statement utføres If betingelse Then santargument [Else elseargument] Eller : If betingelse1 Then [statementblock-1] [ElseIf betingelse2 Then [statementblock-2] ] [Else [statementblock-n] ] End If

39 For-Next - statement EKSEMPEL: Bestem Start og Slutt Nei Variable
Utfør handling Variable Er True Ja EKSEMPEL: Ferdig Nei

40 Do-Loop , Do-While Do While condition
Tall = 0 Tall = Tall + 1 Utfør handling Er tallet < grense Hvis ”True” gjenta løkke EKSEMPEL: Do While condition block of statements to be executed Loop Eller: Do Loop While condition

41 Oppsummering Få oversikt over hva programmet skal gjøre
Bruk pseudokode og/eller flytdiagram for å beskrive informasjonsflyten Programkode skrives i ulike Moduler, sekvenser Det er viktig å deklarere alle variabler som benyttes Loop-programmering benyttes for å gjøre ulike typer valg og gjentakelser Logiske operatorer kombineres med løkker og valg


Laste ned ppt "Problemløsning og metoder"

Liknende presentasjoner


Annonser fra Google