Inlämningsuppgifter, EDAF30, 2015

Relevanta dokument
Inlämningsuppgift, EDAF30, 2016

Inlämningsuppgift, EDAF30, 2018

Inlämningsuppgift, EDAF30, 2018

Projektuppgift - Banken

Tentamen i Grundläggande programmering STS, åk

Projektuppgift - Gymmet

Proj-Iteration 5B. Plan för återstående iterationer

Projektuppgift - Biblioteket

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

LABORATION 4 OBJEKTORIENTERAD PROGRAMMERING I C++ I

Introduktionsmöte Innehåll

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på layout, ett GUI-baserat program Frågor

Datorlaboration 0, Programmering i C++ (EDA623)

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

DD1311 Programmeringsteknik för S1 Laborationer läsåret

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT data

Värmedistribution i plåt

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Tentamen, EDAA10 Programmering i Java

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Design av en klass BankAccount som representerar ett bankkonto

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Linköpings Tekniska Högskola Institutionen för Datavetanskap (IDA), Software and Systems (SaS) (c) Klas Arvidsson

Tentamen, EDAA20/EDA501 Programmering

Laboration: Whitebox- och blackboxtesting

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

TDDC74 Programmering: Abstraktion och modellering Datortenta

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

TUTORIAL: KLASSER & OBJEKT

Försättsblad till skriftlig tentamen vid Linköpings Universitet

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Tentamen i Grundläggande programmering STS, åk 1 lördag

Tentamen i Grundläggande programmering STS, åk 1 fredag

Introduktion till Matlab

HI1024 Programmering, grundkurs TEN

Opponenter: Erik Hansen Mats Almgren Respondent: Martin Landälv ioftpd-verktyg

Tentamen i Grundläggande programmering STS, åk

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Objektorientering/ Klasser

Laboration: Grunderna i MATLAB

Datalogiskt tänkande är mer än Programmering. Fredrik Heintz Linköpings universitet

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Tentamen i Grundläggande programmering STS, åk 1 fredag

Exempel på verklig kravspecifikation

TUTORIAL: SAMLING & KONSOLL

Emacs. Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016

Proj-Iteration1. Arkitektur alt. 1

NetBeans 5.5. Avsikt. Projektfönster

EDAA01 Programmeringsteknik - fördjupningskurs

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)

Goda råd från studenterna som gjorde kandidatprojektet 2018

Programmeringsolympiaden 2011 Kvalificering

Uttryck, satser och strömhantering

Björn Abelli Programmeringens grunder med exempel i C#

Emacs. Eric Elfving Institutionen för Datavetenskap (IDA)

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Tentamen för kursen TME135 Programmering i Matlab för M1

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 8 december 2015 Sida 1 / 22

SKOLFS. beslutade den XXX 2017.

LEX INSTRUKTION LEX LDAP

Rutinbeskrivning Avstämningsmall Övriga Bilagor BR Bilagor

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215/TIG091

Manual Godman Redovisning

Laboration 3, uppgift En klass för en räknare

Tentamen i Programmering

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Övning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program

UNIX Introduktion UNIX. Datorerfarenhet. Vad menar man med operativsystem

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

NetBeans 7. Avsikt. Projektfönster

Projektet. TNMK30 - Elektronisk publicering

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

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

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Försättsblad till skriftlig tentamen vid Linköpings Universitet

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 08-12

Laboration 0. Enhetsbokstaven anges med ett kolon efter och man läser ofta ut detta, exempelvis C:(sekolon).

TENTAMEN. Programmering Grundkurs (HI1900) Skrivtid 13:15-18:15. Tisdagen 26 april Tentamen består av 8 sidor

Att öva på och förstå ett program med flera samverkande klasser.

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

OBS!: Det är inte möjligt att använda garanti-funktionen på rader med redovisningskonto. Dessa kommer alltid att ligga utanför garantihantering.

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

Laboration 1 - Grunderna för OOP i Java

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

TDP005 Projekt: Objektorienterat system

TDDC74 Lab 04 Muterbara strukturer, omgivningar

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Transkript:

LUNDS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Programmering i C++ Inlämningsuppgifter, EDAF30, 2015 Det finns två deluppgifter som båda ska lösas: 1. skriv ett program för att hantera bankkonton 2. skriv ett program som simulerar en kaninkapplöpning 1 Anvisningar för redovisning Inlämningsuppgifterna ska redovisas med en kort rapport och de program som du har skrivit. Gör så här för att lämna in inlämningsuppgiften: 1. Arkivera lösningen i en.zip-fil, med rapport (som.pdf) och kompilerbar källkod (inkludera project/solutionfiler så att programmet går lätt att bygga i den utvecklingsmiljö du har använt). Eventuella indatafiler läggs på yttersta nivån i zip-filen. Källkoden till de båda uppgifterna ska vara tydligt åtskild, till exempel i separata underkataloger. 2. Skriv ett e-brev till edaf30@cs.lth.se och bifoga den arkiverade uppgiften (.zip-filen). Subjectraden i brevet ska se ut så här: inl by id1 id2, där id1 och id2 är de identiteter ni använde för att anmäla er till laborationerna. Normalt är det din StiL-identitet, till exempel dat12xyz och elt11yzyx. För dessa blir subjectraden: inl by dat12xyz elt11yzyx. Det är viktigt att subjectraden är korrekt, den används av vårt system för att identifiera vem som lämnat in uppgiften. Skriv även era namn i klartext i brevet så att vi enkelt kan lösa eventuella fel. Om du har glömt din användaridentitet kan du hämta den från kursens hemsida. 2 Krav på uppgiften 2.1 Rapport Uppgiften ska redovisas med en kort (ett par sidor) rapport som översiktligt presenterar din lösning. För vardera deluppgift bör följande punkter diskuteras: 1. Övergripande design: beskriv centrala klasser och funktioner, och hur dessa är relaterade till varandra. 2. En kort användarinstruktion: hur använder man programmet? 3. Brister och kommentarer: Finns det något i lösning som du i efterhand anser borde gjorts annorlunda? Andra kommentarer? Rapporten ska lämnas in som pdf-fil.

2 Rättning 2.2 Program Programmet ska naturligtvis fungera och lösa den angivna uppgiften. Provkör programmet ordentligt innan du lämnar in det. Användargränssnitt och testprogram Programmen i båda deluppgifterna ska vara interaktiva. För att kunna testa den inre logiken i sådana program utan att behöva manuellt testa via användargränssnittet, är det lämpligt att skilja användarinteraktionen från den centrala funktionaliteten i programmet. För att möjliggöra detta ska programmet organiseras så att det finns ett testprogram, som använder samma gränssnitt mot resten av systemet som användargränssnittet, men kör igenom en mängd olika scenarier som om en användare hade interagerat med systemet via användargränssnittet. Dettta betyder att det ska finnas två huvudprogram: 1. Ett huvudprogram med interaktiv användarinteraktion. 2. Ett huvudprogram med simulerad användarinteraktion enligt en uppsättning scenarier som testar programmets funktion. Dessa scenarier kan vara kodade som funktioner i testprogrammet. Kom ihåg att testa även felaktig inmatning från användaren. Generella krav Programkoden i lösningen ska uppfylla följande krav: 1. Programmet ska ha en vettig design. 2. Klasser och funktioner ska ha tydligt avgränsade uppgifter och ansvarsområden. 3. Programkoden ska vara lätt att följa och förstå. 4. Koden ska vara formatterad på ett sätt som underlättar läsning. Detta innebär en vettig indentering och att raderna inte är för långa. 5. Funktions- och variabelnamn ska vara väl valda och återspegla funktionens eller variabelns innebörd. En tumregel, både för design och läsbarhet, är att en funktion inte får vara längre än 24 rader eller ha fler än 5 10 lokala variabler. Det finns ibland goda skäl att göra ett undantag från detta, men ofta är det bättre att dela upp en lång, komplex, funktion i några enkla hjälpfunktioner. Varje funktion ska bara göra en sak, gör den flera dela upp den. 3 Rättning Vi rättar uppgifterna så snart vi hinner, normalt inom en arbetsvecka räknat från inlämningsdag. När uppgiften är rättad får du via e-brev besked om uppgiften är godkänd eller ej. I brevet finns också en kort sammanfattande kommentar om din lösning samt i de fall uppgiften inte är godkänd kommentarer om vad som behöver förbättras. Om uppgiften inte är godkänd ska du inom rimlig tid lämna in en förbättrad version.

Deluppgift 1 Bankkonton Kortfattad beskrivning Uppgiften går ut på att skriva ett program med ett textbaserat menysystem för hantering av bankkonton. 1 Programskrivning Programmet består av två delar. En del som utgör en modell av registret och en del som utgör ett textbaserat menysystem. 1.1 Modellen för bankkontona Data som lagras för varje konto är kontonummer (unikt), kontoinnehavare, typ av konto (t.ex. S= sparkonto, T= transkationskonto ) och saldo. Implementationen bör innehålla en klass som representerar ett konto. I klassen ska det bl.a. finnas en konstruktor och funktioner för att uppdatera respektive hämta värdet för respektive fält. I klassen som representerar samlingen av kontona skall finnas funktioner för att inläsning och utskrift från och till fil. Funktioner skall också finnas för att hantera de kommandon som kan ges i det textbaserade menysystemet. 1.2 Textbaserat menysystem De kommando som skall finnas är: Skapa konto Insättning av belopp till konto Uttag av belopp från konto Fråga om saldo för konto Lista information för alla konton Lista information för alla konton för en viss kontoinnehavare Avsluta (ta bort) ett existerande konto Modifiera ett existerande konto Avsluta programmet Programmet ska vara bekvämt att använda. Det ska inte krascha om användaren skriver in konstiga värden under inmatningen. 3

4 Hantering av textfil i programmet 2 Hantering av textfil i programmet indata Kunddata lagras mellan körningar i en datafil. Filen placeras lämpligen i projektkatalogen. Vid uppstart läses datafilen in till programmet och vid varje kommando som lägger till, tar bort eller uppdaterar ett konto skall informationen i datafilen uppdateras. Uppdatering av fil Det är tillåtet att använda en textfil som datafil och att vid varje uppdatering av filen skriva över den gamla filen helt. I så fall skall den gamla filen sparas som en backup för att gardera sig mot dataförlust om programmet kraschar under sparningen av filen. Funktionerna rename() och remove() i <cstdio> kan användas för detta. Testdata vid inlämning En datafil med lämpligt innehåll för testning skall bifogas vid inlämningen av uppgiften.

Deluppgift 2 Kaninkapplöpning Kortfattad beskrivning Uppgiften går ut på att skriva ett program som simulerar en kapplöpning mellan kaniner. 1 Programskrivning Programmet består av två delar. En del som utgör en modell av registret och en del som utgör textbaserad in- och utmatning i ett kommandofönster. 1.1 Modellen för kapplöpningen Ett antal kaniner som skall delta i tävlingen. Det är gemensam start och tävlingsbanan är 10 meter lång. Implementationen bör innehålla en klass som representerar en kanin. Varje sekund kan kaninen göra endera av följande (med default sannolikhet inom parenteser): Hoppa framåt (40 %), stå stilla och beta av gräset (40 %) eller hoppa bakåt (20 %). Hur långt varje hopp är dras likformigt i ett intervall (default [20 cm.. 40 cm]). De olika sannolikheterna och undre/övre hopplängd lagras per individ så att kaninerna kan ha olika egenskaper. (Att kaninerna verkligen har olika egenskaper behöver däremot inte implementeras.) Kaninerna lagras i lämplig containerklass från klassbiblioteket i C++. En funktion skall finnas för att uppdatera ställningen med en sekund. Det behövs också funktioner för att sätta upp loppet och för att läsa av ställningen. 1.2 Textbaserat gränssnitt Programmet skall fråga efter hur många kaniner som skall delta i tävlingen. Simuleringen avslutas när en kanin kommit i mål och vinnaren skrivs ut. Hur långt varje kanin har kommit skall också presenteras, sorterat efter avstånd till mål. Programmet ska vara bekvämt att använda. Det ska inte krascha om användaren skriver in konstiga värden. 5