Labbrapport Svantes Bageri

Relevanta dokument
Planering av ett större program, del 2 - for och listor. Linda Mannila

Datalogi för E Övning 3

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

729G04 Programmering och diskret matematik. Föreläsning 7

Laboration: Whitebox- och blackboxtesting

Ordlistor, filhantering och ut på webben. Linda Mannila

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

729G04 PYTHON 6 JODY FOO. Department of Computer and Information Science (IDA) Linköping University, Sweden

729G04 Programmering och diskret matematik

Sharpdesk V3.5. Installationsguide: produktnyckelversion. Version 1.0

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

729G04 Programmering och diskret matematik

Blockly är en av apparna som används för att styra roboten Dash. Den är väldigt enkel i sin utformning och kan med fördel användas av yngre barn.

Kapitel 15: Data/Matrix Editor

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

1

729G04 Programmering och diskret matematik. Python 3: Loopar

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

Laborationsinformation

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

TDDE44 Programmering, grundkurs

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo,

Lektion 5 HTML, CSS, PHP och MySQL

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 1 Jody Foo,

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

Laboration 6 Formulär och stränghantering övningar/uppgifter

Sharpdesk V3.5. Push - installationsguide: produktnyckelversion. Version 1.0

MMA132: Laboration 1 Introduktion till MATLAB

Datalogi, grundkurs 1

Vanliga frågor för VoiceXpress

Datorövning 1 Statistik med Excel (Office 2007, svenska)

MMA132: Laboration 1 & 2 Introduktion till MATLAB

MANUAL CHRONO COMAI Comai AB erbjuder kvalificerade anpassningsbara och Comai AB

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

MMA132: Laboration 2 Matriser i MATLAB

Kapitel 16: Programmering

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista

Designspecifikation den 13 december 2007

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

Instruktion för laboration 1

Kylmas lätta guider Till PlantWatch PRO3

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

v. 43 Python HT17 En introduktion Oscar Bergqvist

Användarhandledning Version 1.2

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Grundläggande datalogi - Övning 1

Instruktion för laboration 1

Tentamen i Introduktion till programmering

Manual Betongindustris kundportal

Föreläsning 6: Introduktion av listor

JavaScript del 5 Funktioner

Föreläsning 18 Filer och avbildningar

FLEXILAGER Ett hjälpmedel för anpassad lagerhantering. Original -version

Programmering för språkteknologer II, HT2014. Rum

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Sammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111

Erfarenheter från labben

En introduktion till MatLab

Frekvenstabell över tärningskast med C#

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Laboration: Grunderna i MATLAB

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Språket Python - Del 1 Grundkurs i programmering med Python

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Sida 1 av 12. WSB Biodling. Manual V

Datalogi, grundkurs 1

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

v. 42 Python HT17 En introduktion Oscar Bergqvist

Allmänt. Välkommen till SVENSKA VÅGs datorprogram för receptvägning på PC.

3 Man kan derivera i Matlab genom att approximera derivator med differenskvoter. Funktionen cosinus deriveras för x-värdena på följande sätt.

Uppgifter teknik HT17 (uppdaterad v. 40)

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

Nyckelbrickshantering

Datorövning 1 Statistik med Excel (Office 2010, svenska)

Program. Kapitel make Program Interpreterande och kompilerande program

IT-system. BUP Användarmanual

Introduktion till programmering SMD180. Föreläsning 3: Funktioner

Introduktion till Jasmine 1.2 ODQL

Datorövning 1 Statistik med Excel (Office 2007, svenska)

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program.

Filer. DA2001 (Föreläsning 16) Datalogi 1 Hösten / 19

E-POST3 Ett lättanvänt e-postprogram med stöd för talsyntes

Switch Driver 4. Programvara för Radio Switch, JoyBox och JoyCable. Sensory Software

Använda Python Laboration 1 GruDat, DD1344

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 7 augusti 2015, kl 08:00-12:00

DATORÖVNING 6: CENTRALA GRÄNSVÄRDES-

Installationsanvisningar för abc Datorövningar

Hacka språket. Umeå

Stompunktsmanual Trafikverket

Omkoppling av in- och utmatning. In- och utmatning i Unix. Kommando exempel, ls, pipe forts. Kommando exempel, ls, pipe

Frekvenstabell över tärningskast med C#

Datum Ert datum Vår beteckning Banförvaltningen Vidmakthållande SE Borlänge Besöksadress: Jussi Björlings väg 2

729G04 Programmering och diskret matematik TEN kl 8-12

Transkript:

01.04.2010 Umeå Universitet Applikationsprogrammering i python 7,5 hp Sara Vilhelmsson kv08 Daniel Rodén kv08 Simon Hultin kv08 Labbrapport Svantes Bageri

Inledning Det är aldrig enkelt för ett företag att hålla reda på hur råvaruåtgång och tillverkning av produkter ser ut utan att ha ett program att använda sig av. Svantes Bageri har hört av sig till oss med just detta problem och vår uppgift är att skapa ett program som uppfyller deras önskemål. Det Svante vill kunna göra med programmet är: Lägg till nya recept, varje recept ska bestå av de ingredienser som behövs för proceduren för själva bakandet På kvällen ska man kunna ange vilka bakverk som ska bakas - och hur många - och systemet ska skriva ut en lista över de råvaror som behövs samt instruktioner för hur man bakar dem. Om det inte finns tillräckligt med råvaror för bakningen ska systemet tala om det. Det ska vara möjligt att ange vilka miniminivåer av de olika råvarorna det får finnas på lagret. Om nivån är för låg ska systemet skicka en beställning via email till rätt leverantör. Detta specificeras av användaren. Syfte Vi har fått i uppdrag av Svantes Bageri att skapa ett program för att strukturera deras tillverkning och förenkla beställning av varor samt hålla reda på hur många bakverk som ska bakas, vilka recept de innehåller och åtgång av råvaror. Detta skrivs i pythons programspråk och presenteras som ett lättanvänt program. Syftet med detta är att förbättra deras produkttillverkning och förenkla översikten av produktionen. System och algoritmbeskrivning Verktyg: Python Vi började genom att skapa dictionaries för att definiera de huvudsakliga variablerna vilka är råvaror, recept och "baklista". Dessa sparas i separata filer för att undvika att irrelevant informations sparas upprepade gånger. De olika kommandona kommer att utföras utifrån en eller flera funktioner som anropas i ett program. Programmet presenteras genom en huvudmeny där användaren kan navigera i de olika funktionerna. Råvaror De olika råvarorna kontrolleras i ett dictionary där råvaran är nyckeln till en lista innehållande mängden av råvaran samt i vilken enhet denna sparas (kg, g, liter osv). Detta är inte förprogrammerat utan användaren själv fyller i och specificerar denna lista i det öppnade programmet. Användaren kan lägga till nya råvaror genom att skriva in namnet på råvaran, hur mycket det finns av den samt vilken enhet den lagras i. Detta genomförs med hjälp av en while-loop som loopar tills användaren avbryter med ett specifikt kommando. De kan även ta bort lagrade råvaror genom att gå in i en huvudmeny och gå in i funktionen delete. Därefter skrivs råvaran in och ett varningsmeddelande skrivs ut på skärmen. Programmet sparar vid varje ändring. Om råvarumängden når en kritisk förprogrammerad mängd skickas ett mail för en ny beställning till leverantören. Detta genomförs enbart en gång och genom

Råvaror = {"Morot":[100,"kg"]} Kontroll av råvarumängd: for key in råvaror: if råvaror[key]<50: lista.append(key) sendemail() En separat funktion som anropas Ta bort råvara: del Baklista Baklistan består av en loop där användaren fyller i vilket recept denne vill baka och mängden av dessa. Detta fortgår tills bagaren avslutar det specifika kommandot. Om ett kommando som inte går at genomföra, till exempel.4 bullar, skrivs ett felmeddelaned ut som säger att detta går inte att genomföra, skrivs in ett nytt recept. Detta gäller även om ett recept inte finns. Baklista = {"Bulle":10} Kolla recept för bakning Används genom att anropa dictionary recept och nyckeln, till exempel bulle, för att kolla om det användaren skriver in återfinns i variabeln. lägg till Loopen beskriven ovan lägger till i baklistan samt kollar om receptet redan existerar. Där skriver användaren in hur mycket som ska bakas genom att skriva in baklista, namnet och antalet som ska bakas. Ta bort Används på samma sätt som att ta bort råvaror reset baklista -Vad vill du baka? namn - Hur många vill du baka? antal Recept Recept= {"Bulle": [{"Morot":[1,kg]"Bakmetod"}]} Användaren kan skriva in en nyckel till ett recept för att specificera det recept denne vill titta på. Detta presenteras i en lista i en meny. Man kan lägga till recept genom att först be

användaren skriva in namnet på receptet, sedan specificera innehållsförteckning på samma sätt som man skriver in råvaror. När man nämnt en råvara i receptet om programmet att söka efter den i råvarulistan. Om den inte finns skrivs ett meddelande ut på skärmen. Skriv ut receptet Genom att gå in i menyn och välja skriva ut recept kommer alla recept att skrivas ut på skärmen. print Recept["Bulle"] Lägg till recept Användaren anger receptet. Därefter kommer innehållsförteckning som första elementet i en lista. Det andra elementet i listan är bakmetoden. Innehållsförteckningen läggs till på samma som man lägger till element i råvarulistan. När man skriver in enheten på de olika råvarorna kommer de att jämföra med råvarulistan för at kontrollera om det är angivet i samma mått. Om enheten inte är densamma, tex liter, kommer programmet att säga att råvarumåttet anges i liter. Ta bort recept del Recept[namn] Stäng programmet Programmet stängs genom en funktion, quit, som finns i en huvudmeny. sys.exit(0) Diskussion och Analys Detta program kommer att fungera mycket bra i de sammanhang för de problem som bageriet bett oss lösa. Det kommer dock eventuellt kunna dyka upp problem i samband med när man gjort en baklista som använder mer råvaror än vad det finns i lager. Detta kontrolleras dock genom en funktion som helt enkelt jämför den totala mängden råvaror som kommer att gå åt med det nuvarande beståndet. Den funktionen skriver ut vad man har för lite av och hur mycket av allt som kommer att finnas kvar efter bakning. I samband med det skickas ett mail för att undvika att det finns för få råvaror. Genom att använda dictionaries när vi lätt de olika delarna som finns lagrade i det. Istället för att behöva gå igenom en lång lista varje gång man vill komma åt till exempel ett recept, anger man nyckeln och kommer direkt till det lagrade angivna värdet. Ett annat problem som kan dyka upp är att om en enhet anges fel av användaren kommer ett fel att uppstå. Detta kan fångas upp och skrivas ut som ett felmeddelande eller att programmet konverterar och tolkar enheten i rätt format. if not recept["bulle"][0]["morot"][1]==råvaror["morot"][1]: print "Råvaran mäts med enheten %% Råvaror ["Morot"][1]

Sammanfattning Sammanfattningsvis kommer vi att skriva detta program med tanke på alla de problem som vis stött på under skrivandets gång. Genom detta kommer detta program att tillfredställa Svantes Bageri.