LABORATION 4 OBJEKTORIENTERAD PROGRAMMERING I C++ I



Relevanta dokument
Programmeringsuppgift Game of Life

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

Grafik. TDDC66 Datorsystem och programmering Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

Programmeringsprojekt, STS1

Objektorienterad programmering D2

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Uppgift 1 ( Betyg 3 uppgift )

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Inlämningsuppgifter, EDAF30, 2015

Programmering. Scratch - grundövningar

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

Tentamen, EDAA10 Programmering i Java

Textsträngar från/till skärm eller fil

Objektorienterad programmering i Java I

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

Föreläsning 11. Giriga algoritmer

FÖRSLAG TILL LÖSNING AV Tentamen i Objektorienterad programmering C++ I

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

Importera och använda en textdatabas i Excel

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

Datorlaboration 4. Pedigree-analys

TDP Regler

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

Matriser och vektorer i Matlab

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Introduktion till Matlab

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Datalogi, grundkurs 1

Konvexa höljet Laboration 6 GruDat, DD1344

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Designspecifikation den 13 december 2007

Värmedistribution i plåt

TDP Regler

Genetisk programmering i Othello

Matriser och Inbyggda funktioner i Matlab

Projektuppgift - Gymmet

Tentamen, EDAA20/EDA501 Programmering

Tentamen i Objektorienterad programmering

Matlabövning 1 Funktioner och grafer i Matlab

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Introduktion till Matlab

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

Laboration: Grunderna i MATLAB

SF1905 Sannolikhetsteori och statistik: Lab 2 ht 2011

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Tor Sterner-Johansson Thomas Johansson Daniel Henriksson

Introduktion till Matlab

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

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

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Objektorienterad programmering. Telefonboken igen, en bättre version. En jämförelse. Föreläsning 4

Xemacs, första hjälpen!

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Handicom. Symbol for Windows. Blisseditor. Version 3.4

Matriser och Inbyggda funktioner i Matlab

TDDC74 Lab 04 Muterbara strukturer, omgivningar

EVO DEV. EvodevExcel.GarpReportAddin

Projektuppgift - Biblioteket

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

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

AssiML. Användarbeskrivning

7 Programmeringsteknik

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

Tentamen: Datordel Programmeringsteknik

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Matlabövning 1 Funktioner och grafer i Matlab

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

International Olympiad in Informatics July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

Objektorienterad programmering Föreläsning 11. Copyright Mahmud Al Hakim

Burrows-Wheelers transform

PROGRAMMERING-Java TENTAMINA

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

Manual - Symfoni - Kommunanvändare

AGENTBASERAD MODELLERING

BridgeView. Klasser i BridgeView. Klassen Grafiska Gränssnittet. Klassen TSPELET

Introduktion till Matlab

Enklast att skriva variabelnamn utan ; innehåll och variabelnamn skrivs ut

Påminnelse: en datatyp för bilder. Programmering. En datatyp för bilder. Spegelbild. hh.se/db2004

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Tentamen, EDAA20/EDA501 Programmering

TDDI16: Datastrukturer och algoritmer

HI1024 Programmering, grundkurs TEN

Laboration 4: Game of Life

Meteor 1.0. När man startat Meteor möts man av huvudmenyn:

Så här använder du VASS

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

DEL I. Matematiska Institutionen KTH. Lösning till tentamensskrivning på kursen Linjär algebra II, SF1604, den 15 mars 2010 kl

PROGRAMMERINGSTEKNIK TIN212

En kort guide till VFU-portalen. För dig som arbetar som VFU-ansvarig på skola

Datastrukturer och Algoritmer D0041D

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Tentamen Programmeringsteknik för BME, C, D, E, F, I, N & Pi

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

Kursplanering Objektorienterad programmering

Föreläsning 3-4 Innehåll

Transkript:

LABORATION 4 OBJEKTORIENTERAD PROGRAMMERING I C++ I Vt 2002 Mål: Lära sig: Filhantering Stränghantering Vektorer Funktioner Programstruktur Tid: Läroboken: 6 timmars handledd laborationstid. Beräknad klar vecka 22. Kap 14, (3, 4, 19 (string)) Redovisning : Redovisning sker enskilt eller parvis på ordinarie laborationstid. Vid redovisningen skall ett fungerande program och en layoutmässigt genomarbetad kod kunna visas upp. Genomarbetad kod innebär att indragningar, beskrivande variabelnamn, kommentarer och extra radbrytningar använts för att göra koden lättlast. Funktionsdefinitionerna ska dokumenteras med funktionens namn, uppgift, indata och utdata.

Inledning I laboration 4 kan välja mellan två uppgifter, en mindre omfattande som bygger vidare på laboration 3 kallad Spara namnlista, och en mer omfattande laboration, Game of Life. Spara namnlista Du ska i denna laboration bygga vidare på det program du har gjort i laboration 3. Utöka laboration 3 med funktioner för att: spara namnlistan på en textfil läsa filen med namnlistan till programmet söka efter en person i listan Förslag till utformning av menyn: Namnlista ========= 1. Lägg till namn 2. Skriv namnlista 3. Sök i listan 4. Sortera lista 5. Radera namn 6. Spara 7. Sluta Kravspecifikation När programmet startas ska filen med namnlistan automatiskt läsas in till vektorn som lagrar namnlistan i programmet. Om filen inte finns ska vektorn med namnlistan lämnas tom. Menyvalet Spara ska spara namnlistan (vektorn) på en textfil. Om filen finns ska den skrivas över annars ska den skapas. Då programmet avslutas ska namnlistan sparas automatiskt. Alternativt att användaren får svara ja eller nej om hon vill spara (enbart om innehållet har förändrats). Menyvalet Sök i listan ska låta användaren mata in ett för- och ett efternamn, sedan ska sökning i listan utföras och ett meddelande enligt följande alternativ skrivas: o o Om listan inte innehåller sökt namn ska ett lämpligt meddelande skrivas ut. Om sökt namn finns i listan ska ordningsnummer för det sökta namnet i listan skrivas ut tillsammans med lämpligt meddelande. Skriv en separat funktion som enbart utför sökningen i listan och ha en annan funktion i vilken man gör inmatning av namn, söker i listan med hjälp av sökfunktionen och sedan skriver ut lämpliga meddelanden. På nästa sida har jag kallat funktionen som enbart utför sökningen Sök i listan medan funktionen som tar emot namn, söker och skriver ut meddelande kallas Sök efter en person. Vg vänd! 1

Funktionsspecifikationer: Spara på fil Uppgift: Spara namnlista på en textfil - filnamn. Utdata: - Läs från fil Uppgift: Läser namnlistan från en textfil. Indata: - namnvektorn - filnamn. Utdata: - namnvektorn. - antal lästa namn. Sök efter en person Uppgift: Söker efter en person i namnlistan genom att låta användaren mata in namn, använda en funktion som söker i namnlistan och skriva meddelanden som anger hur sökningen utfallit. Utdata: - Sök i listan Uppgift: Söka efter en person i namnlistan. - sökt namn Utdata - index för sökt namn - om sökningen misslyckas returneras -1. 2

GAME OF LIFE Uppgift Du ska implementera Game of Life, ett klassiskt program som simulerar födelse, liv och död i en tänkt population av levande individer. Programmet introducerades av amerikanen John Conway 1970 och bygger på antagandet att en individ måste ha en lagom dos sällskap för att överleva en längre tid. Ensamhet såväl som överbefolkning leder till undergång. Samhället där individerna lever utgörs av en tvådimensionell vektor (matris) med t.ex. 25 x 25 celler. I varje cell finns det plats för exakt en individ. Som grannar räknas individer som lever i de celler som har någon sida eller hörn gemensamt med den aktuella cellen. De individer som lever i systemet vid ett visst tillfälle utgör en generation. Nästa generation skapas utifrån den aktuella generationen enligt följande regler: Varje individ med färre än två grannar dör av ensamhet Varje individ med fyra eller fler grannar dör av överbefolkning. Varje individ med två eller tre grannar överlever till nästa generation. I varje tom cell med exakt tre grannar föds en ny individ. Det är viktigt att förstå att alla förändringar vid ett generationsskifte sker samtidigt. Det innebär att inga förändringar i ett generationsskifte får påverka skeendet i resten av generationsskiftet. Exempel: Generation nr 1 2 3 alll 3

Stabilt läge Oscillator Samhällets framtid, dvs. antalet möjliga generationer beror av startgenerationen. Tre olika slutscenarier är möjliga: 1. Alla individer är döda. 2. Ett statiskt tillstånd där inga förändringar sker vid ett generationsskifte. 3. Ett cykliskt tillstånd där två eller flera populationer växelvis uppstår. Programmet Programmet ska skapa nya generationer enligt reglerna ovan. Generationerna ska visas i ett rutnät med ett lämpligt stort antal rutor (programmet ska vara skrivet så det är lätt att ändra storleken på rutnätet). Startgenerationen ska antingen slumpas fram (både antal individer och deras placering) eller läsas in från en fil. En räknare för antalet generationer ska alltid synas. Generationsskifte ska ske genom att användaren trycker mellanslag. Möjlighet till avslutning ska alltid finnas. Programmet ska själv känna av tillstånden 1 och 2 i stycket ovan och avbryta skapandet av nya generationer. Möjlighet att spara aktuell generation till fil bör finnas (inte nödvändigt). Implementationen För att rita rutnätet kan du använda ASCII-tecknen 180, 191, 192, 193, 194, 195, 196, 197, 217 och 218. Använd funktionen gototxy() för att placera tecknen i önskad position Alla väl avgränsade deluppgifter i programmet ska motsvaras av en funktion Lägg funktionerna i en eller flera separata filer (UNITs). 4