Problemløsning og metoder

Slides:



Advertisements
Liknende presentasjoner
Kombinatorikk for lærerstudenter
Advertisements

Teknologi i klasserommet
Tabeller av objekter Klassen ArrayList
Hva slags spørsmål skal man stille på hvilke nivåer?
Er standarder en betingelse for godt evalueringsarbeid? Foredrag på EVA-seminar 8 Hurdalsjøen 5-6 september 2002 Hans Torvatn, SINTEF Teknologiledelse.
Dokumenter og arkivering
Høgskolen i Oslo Webprogrammering Grunnleggende PHP.
Høgskolen i Oslo - GM Vær metodisk  Definer og forstå problemet  Spesifiser hva du har av hardware  Lag en prototyp av brukersnittet  Design.
Gjenfinningssystemer og verktøy II
Kontrollstrukturer (Kapittel 3)
MI – Motiverende intervju som hjelpemiddel ved livsstilsendring
Hva trenger jeg av data, og hvordan skal jeg innhente disse?
Vi skal ha kontrollen/dirigere!
IS-102 Klassedefinisjoner
Noen enkle studieteknikker ved innlæring av DRI-emner
Generelt I/O if/else Funksjoner Lists Løkker Dictionaries Annet Listebehandling Klasser Python med noen algdat-anvendelser Åsmund Eldhuset asmunde *at*
Operativsystemer.  Tilstandsmaskiner kalles på engelsk Finite State Machines.  Tilstandsmaskiner er en metode til å beskrive systemer med logisk og.
1 Oppgave gjennomgang Kap Oppgaver -Kap 12: 1, 2, 3, 5, 7, 8, 11, 18, 19.
Grunnleggende testteori
Om å skrive om litterære tekster
Om Øvelse 7 Stoff relatert til øvelse 7 Generering av tilfeldige tall Bruk ting vi har lært før.
Filer Finne minste Finne Største Beregne gjennomsnitt Variabler Tabeller – Arrays Lage frekvenstabell.
INF 295 Forelesning 15 - kap 9 Grafer Hans Fr. Nordhaug (Ola Bø)
Feilhåndtering. Feil er uunngåelige! Erfaring viser at feil i dataprogrammer som består av mer enn noen få linjer ikke er til å unngå. For å få et godt.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
Gjennomgang av prøven Tidsangivelse. Prøven deles ut Vi fyller ut øvelsen sammen.
Introduksjon til systemutvikling
Klargjøring fra forrige gang
INF150 Programmering mandag 11.9
Jæger: Robuste og sikre systemer INF150 Programmering torsdag 31.8 Kapittel 3: Grunnlag for programmering i Visual Basic.
Jæger: Robuste og sikre systemer INF150 Programmering torsdag 5.10 MER OM: Lesing fra fil Unntakshåndtering Kap 8.
I dag snakker vi om: Brukergrensesnitt med kvalitet Bruksegenskaper Normans 7 stadier Testing med papirprototyp.
Kap 10 Graf.
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
HØGSKOLEN I AGDER Agder University College © Bjørn Olav Hogstad, HiA, 2002 HØGSKOLEN I AGDER Agder University College Word - maler 1 DAT100 TEMA: Maler.
1 Arrayer og form(ularer) (Kapittel 4). 2 Mål  Forstå assosiative og superglobale arrays  Kunne behandle webformularer (forms)  Kjenne forskjellen.
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Hvordan kan foreldre bruke de vangligste funksjonene i Itslearning.com
VI LAGER EN PLATEBUTIKK
Kvalitative og kvantitative metoder
INF 4130 Eksamen 2008 Gjennomgang.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 18.9 Lesing av data fra fil og skriving av data til fil. Side 411 – 4.. Kap 4.
Oppgaver til kodegenerering etc. INF-5110, 2013 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet,
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
Magnus Haug Algoritmer og Datastrukturer
Spørsmål og aktiviteter på ulike nivåer
1 INF5110 – 23. april, 2013 Svar på noen oppgaver til kap. 8 Beklager noe trykkfeil og rot på forelesningene Håper dette er bedre (lagt ut 24/4) Nå fredag.
Jæger: Robuste og sikre systemer INF150 Programmering Kapittel 2: Problemløsning Kapittel 3.1 og 3.2.
BUCS Utfordringer og valg av fokus Tor Stålhane. Rammebetingelser Første spørreundersøkelse viser at det vi gjør må kunne: Brukes sammen med UML Passe.
1 INF5110 – 23. april, 2013 Noen oppgaver til kap. 8 Dette er en bedre utgave av oppgavene, lagt ut 24. april Nå fredag (26/4): Det blir ikke undervisning.
Objektorientert utforming In 140 Sommerville kap. 12.
Forstudie Nå situasjonen: dagens situasjon med ulemper og fordeler
Gamle systemer In 140 Forelesning Nr 19 Sommerville kap 26.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 25.9 MER OM: Sub-prosedyrer og sub-funksjoner Kap 4.
Bruk av IKT i ulike beslutningsprosesser og arbeidsoppgaver i offentlig sektor (II) - Spesielt om representasjon av rettsregler i datamaskinprogrammer.
INF1000 (Uke 4) Mer om forgreninger, While-løkker
Objektorientert utforming In 140 Forelesning Nr 11 Sommerville kap 12 – del 1.
Nummer 8-10 H. Aschehoug & Co Sehesteds gate 3, 0102 Oslo
Matematikk 1 årskurs 26. oktober 2009
Objektorientert design In 140 Sommerville kap 12 – del 1.
Kapittel 5 Vilkårssetningar og løkker. 5.1 Boolske uttrykk George Boole ( ), britisk matematikar Utvikla teori om logikk ved bruk av symbol i.
Jæger: Robuste og sikre systemer INF150 Programmering torsdag 14.9 Ulike måter for å lese inn og skrive ut data. Kap. 3.5 mer om if – setninger Ferdige.
Lokale variable Hvis vi trenger å ta vare på en verdi, inne i en metode kan vi definere en lokal variabel: int amount = 0; vi må fortelle hvilken type.
Kom i gang med Python Pål Hellesnes SYSTEMUTVIKLER
TDT4105 Informasjonsteknologi, grunnkurs
IS-102 Interaksjon med objekter
Kom i gang med programmering!
Begynnerkurs i Python Realfagskonferansen 2019 Henrik H. Løvold
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

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

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

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.

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.

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;

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

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

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

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

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 ?

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

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

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

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.

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

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å

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

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

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

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

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.

Styring av program 3 strukturer: Sekvens Iterasjon - gjentakelse Valg

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

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

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

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

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

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

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

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

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

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”

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”

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 ]

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

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

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: < = >

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

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

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

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