Fortsättningskurs i programmering F 2. Algoritmer i Programutveckling Hugo Quisbert 20130122. Problemexempel 1



Relevanta dokument
Grunderna i stegkodsprogrammering

Föreläsning 11. Giriga algoritmer

PROGRAMMERINGSMETODIK

Problemlösning. Planering av program. Konstruktion. Programmeringsmetaforer. Problemlösning. Programmering = Problemlösning

Fortsättningskurs i programmering F 3. Algoritmer i programutveckling II Hugo Quisbert Flödesplaner med selektion

Introduktion till programmering

NATIONELLT PROV I MATEMATIK KURS A VÅREN Tidsbunden del

Kapitel 4 Inför Nationella Prov

Chapter 3: Using Classes and Objects

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Uppgift 1 (Oläsliga krypterade meddelanden)

Maxcertifikat. Istället. för aktier. En produkt från Handelsbanken Capital Markets

Förkunskaper Grundläggande kunskaper om längdmätning med standardiserade mått samt kartkunskaper.

Laboration: Att inhägna ett rektangulärt område

Personlig assistans som den ska vara

FÖRELÄSNING 1 ANALYS MN1 DISTANS HT06

Inledande programmering med C# (1DV402) Introduktion till programmering

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Begrepp Värde (mätvärde), medelvärde, median, lista, tabell, rad, kolumn, spridningsdiagram (punktdiagram)

Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB

Prov kapitel FACIT Version 1

Kompletterande lösningsförslag och ledningar, Matematik 3000 kurs A, kapitel 6

BUBBETORPS GÅRDS HANDELSBOD

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

BEDÖMNINGSSTÖD. till TUMMEN UPP! matte inför betygssättningen i årskurs 6

Predator Digital 3D. Predator Digital 3D. Bruksanvisning. Version 1.0

Diskussionsproblem för Statistik för ingenjörer

Handbok Fyrkanter. Matt Williams Granskare: Eugene Trounev Översättare: Stefan Asserhäll

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Repetitionsuppgifter i Matematik inför Basår. Matematiska institutionen Linköpings universitet 2014

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

UPPGIFT 1 KANINER. Håkan Strömberg 1 Pär Söderhjelm

Algoritm för uppskattning av den maximala effekten i eldistributionsnät med avseende på Nätnyttomodellens sammanlagringsfunktion

Programutveckling med Java 7.5 p, ht 2007 (D0019N) STUDIEHANDLEDNING - ALLMÄN INFORMATION

Digitalt lärande och programmering i klassrummet. Introduktionsworkshop - Bygg ett akvarium i Scratch

NATIONELLT PROV I MATEMATIK KURS E HÖSTEN 1996

NATIONELLT KURSPROV I MATEMATIK KURS A VÅREN Del II

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Tentamen SSY 065, onsdag 17/12, 08:30-12:30, H. Lärare: Petter Falkman, (772) 3723 Tider för lärarens närvaro: 09:30, 11:00

Sätt att skriva ut binärträd

Lekplatsutrustning och barnmöbler till förskolor

Tentamen i Realtidsprogrammering

OBSERVERA ATT DETTA EXEMPELMATERIAL INTE MOTSVARAR ETT HELT KURSPROV I OMFATTNING OCH INNEHÅLL.

TENTAMEN. Luleå tekniska universitet

Föreläsning 4: Poster

Förklaringstexter till SKL:s uppföljningsformulär

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Föreläsning 6: Introduktion av listor

Senaste revideringen av kapitlet gjordes , efter att ett fel upptäckts.

Provivus tips om KONCENTRATION - VAD PEDAGOGEN KAN GÖRA

Sagt & gjort. House of Alvik

Tentaupplägg denna gång

Eleven kan genomföra undersökningar utifrån givna planeringar och för då utvecklade resonemang om. 4-5 korrekta observationer

Dubbelt En elev plockar upp en näve kuber. En annan ska ta upp dubbelt så många.

Föreläsning 3.1: Datastrukturer, en översikt

SKOLPORTENS NUMRERADE ARTIKELSERIE FÖR UTVECKLINGSARBETE I SKOLAN. Bilagor

= Svar: (1/0) 3. Skriv ett heltal i rutan så att bråket får ett värde mellan 2 och 3. Svar: (1/0)

Slutrapport för JMDB.COM. Johan Wibjer

Föreläsning 1 & 2 INTRODUKTION

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Björn Abelli Programmeringens grunder med exempel i C#

RödGrön-spelet Av: Jonas Hall. Högstadiet. Tid: minuter beroende på variant Material: TI-82/83/84 samt tärningar

Gemensam presentation av matematiskt område: Geometri Åldersgrupp: år 5

Introduktionsmöte Innehåll

5-1 Avbildningar, kartor, skalor, orientering och navigation

System för elektrisk stenspräckning. Instruktionsbok

Programmeringsuppgifter 1

Novus LUFTKUDDEMASKIN

Grundläggande programmering med C# 7,5 högskolepoäng

Kurser och Aktiviteter

Ljusets böjning & interferens

Pedagogiskt seminarium för personal vid Institutionen för geovetenskaper (avd för luft och vatten)

UTVECKLA SÅ UTVECKLAR NI ER FÖRENING!

Förklara långsamt så fattar jag snabbt

Ickelinjära ekvationer

Så undviker du att få höra klyschor en miniguide för dig som rekryterar

Tentamen: Programutveckling ht 2015

Clicker 5. Lathund kring de vanligaste och mest grundläggande funktionerna för att komma igång med Clicker. Habilitering & Hjälpmedel

Undervisningen i ämnet programmering ska ge eleverna förutsättningar att utveckla följande:

1. Skriv = eller i den tomma rutan, så att det stämmer. Motivera ditt val av tecken.

SKOLFS. beslutade den -- maj 2015.

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

1 Aylas bil har gått kilometer. Hur långt har den (2) gått när hon har kört en kilometer till?

Hur många serier och repetitioner klarar man av på 25 % av 1 RM i snabbstyrka?

I n f o r m a t i o n o m v a l u t a o p t i o n s k o n t r a k t

Programmeringsolympiaden 2012 Kvalificering

Ett företag tillverkar två produkter A och B. För respektive produkt finns nedanstående information. Beloppen är angivna i 1000.

Spinning. (cm) a) Ange ett uttryck för fyrhörningens omkrets i enklast möjliga form. (2/0)

Låt eleverna öva på att dra slutsatser om textens handling genom att leta ledtrådar i texten.

Montreal Cognitive Assessment (MoCA) Version 7.0. Instruktioner för testning och utvärdering

Krypande kaninen Karin

EDAA01 Programmeringsteknik - fördjupningskurs

PROGRAMMERINGSMETODIK

1. Hur många timmar per vecka har du i genomsnitt lagt ner på kursen (inklusive schemalagd tid)?

MÄSSHANDBOK ENTREPRENÖRSKAP PÅ RIKTIGT 2016 KRONOBERG

Digitalt lärande och programmering i klassrummet

MODERATORSTYRD CHATFUNKTION SOM VERKTYG I STORFÖRELÄSNING

Problem: För stor ungdomsarbetslöshet

Transkript:

Fortsättningskurs i programmering F 2 Algoritmer i Programutveckling Hugo Quisbert 20130122 1 Exempel 1 Problemexempel 1 En souvenirbutik behöver ett datorprogram som omvandlar ett pris i svenska kronor (SEK) till euro. Programmet skall vara lättanvänt och användaren skall endast behöva mata totalsumman i SEK och få besked på skärmen om priset i euro. Det skall finnas en funktion för att mata in den dagsaktuella valutakursen. Användaren skall kunna välja när den funktionen skall aktiveras, valutakursen kanske är stabil i flera dagar 2 1

Exempel 1 visar ett problem som kan lösas med hjälp av ett datorprogram. Vid programutveckling är det viktigt att arbetet är väl strukturerat och följer vissa steg. Följande moment bör finnas med i någon form: 3 Problemspecifikation Sätta sig in i och noggrant formulera problemet. Det är viktigt att utgå från specifikationen och att ha en dialog med kunden. Bestämma utdata, d.v.s. vilket resultat skall datorn producera Bestämma vilka indata som behövs för att kunna producera rätt utdata Strukturering av problemet Dela upp problemet i delproblem Beskriva problemen och dess samband 4 2

Algoritmkonstruktion Att för varje delproblem definiera utdata och indata Identifiera kontrollstrukturer, d.v.s. strukturprimitiverna Identifiera operationer och förfina/bryt ner dessa så att de uppfyller villkoren för en algoritm Använda flödesplaner eller pseudokod för att beskriva algoritmen Verifikation Kontrollera att algoritmen uppfyller specifikationen 5 Kodning - Programskrivning Välja lämpligt programspråk Omforma algoritmerna till ett datorprogram i det aktuella programspråket Felsökning och testning Att med datorns hjälp lokalisera och rätta fel i programmet Kontrollera att programmet löser uppgiften Visa att programmet fungerar som avsett och ger korrekta resultat 6 3

Dokumentation Löper parallellt med de andra momenten Upprätta en beskrivning avsedd för dem som skall använda programmet Upprätta dokument som underlättar framtida ändringar i programmet Underhåll Pågår hela programmets livslängd 7 Algoritmkonstruktion Algoritmkonstruktion omfattar följande moment: Att för varje delproblem definiera utdata och indata Identifiera kontrollstrukturer, d.v.s. strukturprimitiverna Identifiera operationer och förfina/bryt ner dessa så att de uppfyller villkoren för en algoritm Använda flödesplaner eller pseudokod för att beskriva algoritmen 8 4

Från exempel 1 Algoritmkostruktion Första steget är att definiera output/utdata. Vi måste alltid utgå från målet för programmet för att kunna bestämma indata och operationer. Vad skall programmet göra? Läser vi exempel 1 så ser vi att de utdata som beställaren önskar är priset i euro. 9 Algoritmkostruktion Steg två blir då att bestämma input/indata. Vilka indata behövs för att få önskad utdata? Behövs det indata? Enl. en algoritms kännetecken, se 2.1.2, kan en algoritm ha noll indata. Det är också viktigt att inte låta användaren mata in data som redan finns lagrad eller som kan beräknas. Indata skall begränsas till ett minimum då inmatning tar tid och risken för fel ökar ju fler uppgifter som skall skrivas in. I detta exempel blir indata den dagsaktuella valutakursen för euro samt priset i SEK. 10 5

Algoritmkonstruktion I nästa steg skall vi identifiera kontrollstrukturer. Skall alla instruktioner utföras i en följd eller behövs alternativa vägar eller repetition? Kontrollstrukturen sekvensär en grund i alla algoritmer. Frågan är om kontrollstrukturerna selektionoch iterationbehövs. Om användaren skall få välja om dagskursen behöver matas in, ingår även kontrollstrukturen selektion. Kontrollstrukturerna i detta exempel blir då sekvens och selektion. 11 Algoritmkonstruktion Därefter skall vi utforma de operationer som behövs för att erhålla önskad utdata utifrån fastställda indata. Vilka operationer behövs i vårt exempel? Vi tittar på uppgiften och kommer fram till följande operationer: Mata in priset i SEK. Kunna välja om dagskursen skall skrivas in och om svaret är Ja kunna skriva in den. (selektion) Omvandla det inmatade priset till euro. Skriva ut priset i euro. 12 6

Algoritmkostruktion Men observera att operationen Omvandla det inmatade priset till euromåste förklaras ytterligare. Vilken operation omvandlar ett pris i kr till valutan euro? Priset i svenska kronor (SEK) dividerat med kursen ger priset i euro ( ). 13 Algoritmkostruktion Även operationen Kunna välja om dagskursen skall skrivas in och om svaret är J kunna skriva in den måste brytas ner i fler operationer: Visa texten Ange ny dagskurs? (J/N) på skärmen Låt användaren mata in ett svar Om svaret är Ja så utför följande operationer: Visa texten Mata in aktuell kurs Låt användaren mata in kursen. 14 7

Algoritmkostruktion Vi sammanfattar nu de olika stegen i algoritmkonstruktionen för exempel 1. Definiera utdata: Priset i euro Fastställa indata: Valutakursen för euro Priset i SEK. Identifiera kontrollstrukturer: Sekvens och selektion Utforma operationerna: Visa texten Ange ny kurs för euro? (J/N). Mata in ett svar. Omsvaret är J så utför följande operationer: Visa texten Mata in aktuell kurs. Mata in kursen. Visa texten Pris i SEK. Mata in priset.priset i SEK / kurs -> priset i euro. Visa Priset i euro priset i euro 15 Klassövning Tillsammans med en klasskamrat rita ett flödesdiagram för Exempel 1 16 8

Lösningsförslag exempel 1 17 Kodning - Programskrivning Kodning innebär att Välja lämpligt programspråk Omforma algoritmerna till ett datorprogram i det aktuella programspråket 18 9

Kodning exempel 1 System.out.println( Ange ny kurs för euro?[j/n]) ; svar = br.readline(); if (svar == J ) { } System.out.println ( Mata in aktuell kurs ); kurs = br.readline(); System.out.println ( Pris i SEK ); pris_sek = br.readline(); pris_euro = pris_sek /kurs; System.out.println( Priset i euro: + pris_euro); 19 Problemspecifikation Exempel 2 En bilägare vill veta vad hans bil kostar per månad. Kalkylprogrammet skall vara lättanvänt, överskådligt och ta hänsyn till stort sett alla kostnader, t ex försäkringar, reparationer, räntekostnad, värdeminskning och driftskostnader. 20 10

Här behövs ett bra samarbete mellan beställaren och den som skall lösa uppgiften. Hur får vi med alla kostnader? Vad innebär olika kostnader? Skall de delas upp i fasta och rörliga kostnader? Hur skall gränssnittet utformas för att vara överskådligt och lättanvänt? Menysystem? Vilka kontroller behövs? Vilken utrustning, både hård-och mjukvara, har beställaren? Finns befintliga program att ta hänsyn till? Vilka kunskaper har beställaren? Vilka skall använda programmet? Framtida önskemål? osv. Vi skall inte lösa uppgiften här, men fundera över problemet och hur det kan lösas 21 Algoritmkonstruktion Exempel 3 En mattaffär har specialiserat sig på att tillverka mattor helt efter kundens önskemål. De klipper till mattan i önskad storlek och sedan fållas mattan runt om. Kunden får välja kvalité, färg, längd och bredd på mattan. I dagsläget kan affären endast leverera mattor som är fyrkantiga eller rektangulära. Mattaffären behöver hjälp med att snabbt och enkelt kunna beräkna vad kunden skall betala för sin nya matta. Priset för mattan beror på mattans storlek (area), kvadratmeterpriset samt fållningen som alltid kostar 50 kr per meter kant. 22 11

Algoritmkonstruktion Definiera output, input, kontrollstrukturer och operationer Output? Priset för mattan Input? Pris/m 2, mattans längd och mattans bredd I vilken enhet (cm eller m) skall bredd och längd anges? Kontrollstrukturer? Sekvens 23 Övning 2 Tillsammans med en klasskamrat lös problemet först i pseudokod och sedan rita ett flödesdiagram för Exempel 3 24 12

Operationer exempel 3 25 Lösningsförslag exempel 3 26 13