TDT4102 Prosedyre og Objektorientert programmering Vår 2015



Like dokumenter
TDT4102 Prosedyreog objektorientert programmering Vår 2016

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

TDT4102 Prosedyreog objektorientert programmering Vår 2016

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

BOKMÅL Side 1 av 12. Fakultet for informasjonsteknologi,

TDT4102 Prosedyreog objektorientert programmering Vår 2016

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

BOKMÅL Side 1 av 6. EKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Fredag 6. juni 2008 Kl

TDT4110 IT Grunnkurs Høst 2014

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

TDT4110 IT Grunnkurs Høst 2015

TDT Prosedyre- og objektorientert programmering

TDT Prosedyre- og objektorientert programmering

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

Fakultet for informasjonsteknologi, Tentativt løsningsforslag TDT4102 Prosedyre og objektorientert programmering. Fredag 6. juni 2008 Kl

TDT Prosedyre- og objektorientert programmering

TDT Prosedyre- og objektorientert programmering

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

HØGSKOLEN I SØR-TRØNDELAG

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

2 Om statiske variable/konstanter og statiske metoder.

HØGSKOLEN I SØR-TRØNDELAG

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Eksamensoppgave i TDT4100 Objektorientert programmering med Java

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

INF106 Objektorientert programmering

TDT4110 IT Grunnkurs Høst 2016

TDT Prosedyre- og objektorientert programmering

TDT4105 IT Grunnkurs Høst 2016

TDT4110 IT Grunnkurs Høst 2016

TDT4110 IT Grunnkurs Høst 2014

Øvingsforelesning 7 i Python (TDT4110)

TDT4105 IT Grunnkurs Høst 2012

Dersom spillerne ønsker å notere underveis: penn og papir til hver spiller.

HØYSKOLEN I OSLO, AVDELING FOR INGENIØRUTDANNING

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

TDT4110 IT Grunnkurs Høst 2012

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

UNIVERSITETET I OSLO

Øvingsforelesning 1 Python (TDT4110)

Høst Øving 5. 1 Teori. 2 Månedskalender. Norges teknisknaturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap

TDT4105 IT Grunnkurs Høst 2014

Fakultet for informasjonsteknologi, Institutt for datateknikk og informasjonsvitenskap

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

HØGSKOLEN I SØR-TRØNDELAG

Øvingsforelesning i Python (TDT4110)

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Tuva Kristine Thoresen

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

Enkle generiske klasser i Java

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

UNIVERSITETET I OSLO

TDT4105 IT Grunnkurs Høst 2014

UNIVERSITETET I OSLO

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

UNIVERSITETET I OSLO

Repetisjon Novice Videregående Python PDF

INF Innleveringsoppgave 6

UNIVERSITETET I OSLO

Øvingsforelesning i Python (TDT4110)

Introduksjon til objektorientert programmering

Steg 1: Rest etter divisjon

Kapittel 1 En oversikt over C-språket

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

TDT4100 Objektorientert programmering

Del 3: Evaluere uttrykk

UNIVERSITETET I OSLO

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

TDT4102 Prosedyreog objektorientert programmering Vår 2016

UNIVERSITETET I OSLO

Løsningsforslag til eksamen i INF1000

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

Programmering Høst 2017

Del 1 En oversikt over C-programmering

Debugging. Tore Berg Hansen, TISIP

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske metoder.

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

MAT1030 Diskret Matematikk

UNIVERSITETET I OSLO

Steg 1: Få noe på skjermen

UNIVERSITETET I OSLO

NIO 1. runde eksempeloppgaver

Pong. Oversikt over prosjektet. Steg 1: En sprettende ball. Plan. Sjekkliste. Introduksjon

Obligatorisk Innlevering 2

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

Transkript:

Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyre og Objektorientert programmering Vår 2015 Øving 4 Frist: 2014-02-14 Mål for denne øvinga: Lære å bruke «Enumerations» Lære å bruke Strukturer (structs) Lære å implementere og bruke klasser Generelle krav: Bruk de eksakte navn og spesifikasjoner som er gitt i oppgava Det er valgfritt om du vil bruke en IDE (Visual Studio, Xcode), men koden må være enkel å lese, kompilere og kjøre. Lag et bibliotek for hver klasse, et biblotek består av en header-fil og en implementasjons-fil. Anbefalt lesestoff: Kapittel 2.2, 6, 7 & 9.3 Absolute C++ (Walter Savitch) It s Learning notater Side 1 av 5

1 Enumeration (10%) I denne oppgava skal du lage og bruke enumerations. a) Lag enumeration-en Suit. Suit kan ha verdiene CLUBS, DIAMONDS, HEARTS, SPADES. Hint: Verdiene i en enumeration er konstante og skal derfor skrives med store bokstaver b) Lag enumeration-en Rank. Rank kan ha verdiene TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE. c) Skriv funksjonen suittostring(). suittostring tar en Suit definert i a) som argument og returnerer en string som representerer verdien. Bruk en switch til å sjekke argumentet mot enumeration en. Hint: En variabel som er av en enumeration type er fremdeles en variabel, og skal derfor begynne med liten bokstav. d) Skriv funksjonen ranktostring(). ranktostring tar inn en Rank definert i b) som argument og returnerer en string som representerer verdien. Bruk en switch til å sjekke argumentet mot enumeration en. 2 Struktur (10%) I denne delen skal du lage og bruke strukturer. a) Lag strukturen (struct) CardStruct. Strukturen har følgende variabler: Suit s, en enumeration av typen Suit Rank r, en enumeration av typen Rank b) Skriv funksjonen tostring(). tostring() tar et kort (CardStruct) i form av strukturen definert i a), som argument. Denne funksjonen skal returnere en String som er en tekstlig representasjon av kortet. For eksempel: "Ace of Spades" c) Skriv funksjonen tostringshort(). Du kan i denne oppgava få bruk for følgende funksjon: #include <sstream> string inttostring(int number){ stringstream ss; ss << number; return ss.str(); } tostringshort() tar et kort (CardStruct) i form av strukturen definert i a) som argument. Denne funksjonen skal returnere en String som er en tekstlig representasjon av kortet, til forskjell fra forrige oppvave er vi her ute etter en kort representasjon. Formen som skal skrives ut er <farge (en bokstav)><verdi som tall>. For eksempel "S14" som er et spar ess. Hint: Du kan hente ut en del av en tekststreng med.substr(). Hint: Enumerations er bare heltall konstanter, prøv å skrive ut en Rank variabel. Test begge strukturene og funksjonene dine fra main(). Side 2 av 5

3 Kortklasse (20%) I denne deloppgava skal du lage en klasse Card med grunnleggende funksjoner. Denne klassen kommer til å bli brukt videre i øvinga. a) Lag klassen Card. Denne klassen skal inneholde følgende private medlemsvariabler: Suit s, en Suit enumeration som definert i oppgave 1. Rank r, en Rank enumeration som definert i oppgave 1. bool invalid, en boolsk variabel som sier hvorvidt klassen (kortet) har blitt satt opp eller ikke. b) Skriv medlemsfunksjonen initialize(suit s, Rank r). Funksjonen skal være public, ta inn en Suit og en Rank og ikke returnere noe. Denne funksjonen setter Suit s og Rank r. I tillegg settes invalid til usann. c) Skriv medlemsfunksjonen getsuit(). Funksjonen skal være public, tar ikke inn noe men returner Suit for kortet. d) Skriv medlemsfunksjonen getrank(). Funksjonen skal være public, tar ikke inn noe men returner Rank for kortet e) Skriv medlemsfunksjonen tostring(). Funksjonen skal være public og ikke ta inn noe. Denne funksjonen returnerer en Streng representasjon av kortet. invalid sann skal "Invalid kort" returneres. Hint: Kanskje du kan gjenbruke noe kode du har skrevet fra før? Dersom kortet har f) Skriv medlemsfunksjonen tostringshort(). Funksjonen skal være public og ikke ta inn noe. Denne funksjonen returnerer en kort Streng representasjon av kortet. Dersom kortet har invalid sann skal "Invalid kort" returneres. g) Skriv konstruktøren Card(). Denne konstruktøren tar ikke inn noe. Det gjør at vi ikke kan sette opp kortets Suit og Rank riktig, isteden skal invalid settes til sann. h) Skriv konstruktøren Card(Suit s, Rank r). Denne konstruktøren tar inn Suit og Rank. Bruk gjerne funksjoner du har laget tidligere for å forenkle denne og sette opp kortet riktig. Side 3 av 5

4 Kortstokklasse (20%) I denne deloppgava skal du implementere klassen CardDeck som bruker klassen Card for å representere en kortstokk. Du skal deretter implementere enkel funksjonalitet for klassen. a) Lag klassen CardDeck. Klassen skal inneholde følgende private medlemsvariabler: cards, en tabell (array) med 52 Card-objekter, som representerer en kortstokk. currentcardindex, et heltall som brukes til å holde styr på hvor mange kort som er delt ut. b) Lag konstruktøren CardDeck(). Denne konstruktøren tar ikke inn noe. Konstruktøren må sørge for at kortstokken blir satt opp riktig, det vil si at hvert kort må settes opp med rett farge og verdi. I tillegg må currentcardindex settes til 0, siden ingen kort har blitt delt ut ennå. c) Lag medlemsfunksjonen swap(). Denne funksjonen tar inn to indekser til cards tabellen og bytter om på kortene som finnes på disse to posisjonene. Funksjonen skal være private. d) Lag medlemsfunksjonen print(). Denne funksjonen skriver ut kortstokken. Hvert kort skrives ut med den lange string representasjonen. e) Lag medlemsfunksjonen printshort(). Denne funksjonen skriver ut kortstokken. Hvert kort skrives ut med den korte string representasjonen. f) Lag medlemsfunksjonen shuffle(). Denne funksjonen stokker kortstokken, bruk gjerne swap() når du implementerer denne. g) Lag medlemsfunksjonen drawcard(). Funksjonen drawcard() trekker et kort fra kortstokken. Når den kalles for første gang skal den returnere det første kortet, deretter det andre kortet osv. Hint: bruk currentcardindex Side 4 av 5

5 BlackJack (40%) I denne oppgava skal du lage en klasse BlackJack. Denne klassen implementerer spillet Black- Jack. a) Lag klassen BlackJack. Klassen skal inneholde følgende private medlemsvariabel: deck, en variabel av typen CardDeck. b) Lag medlemsfunksjonen getcardvalue(). Denne tar inn en peker til et kort og returnerer verdien kortet har i BlackJack som et heltall. Ess returneres som -1. c) Lag medlemsfunksjonen isace(). Denne tar inn en peker til et kort og returnerer boolsk sann dersom kortet er et ess. d) Lag medlemsfunksjonen getplayercardvalue(). Denne tar inn en peker til et kort og returnerer verdien kortet har for spilleren i BlackJack. Dersom kortet er et ess skal spillere selv få velge om kortet regnes som 1 eller 11. e) Lag medlemsfunksjonen getdealercardvalue(). Denne tar inn en peker til et kort og verdien til dealerens hånd. Funksjonen returnerer verdien til kortet gitt følgende regler: Hvis kortet er et ess skal verdien til kortet regnes som 11 med mindre dette gjør at dealerens hånd går over 21. I så fall settes verdien av kortet til 1. I alle andre tilfeller returneres kortets verdi som normalt. f) Lag medlemsfunksjonen askplayerdrawcard(). Denne funksjonen tar ikke inn noe, men spør spilleren om han / hun ønsker et nytt kort og returner sann dersom spilleren vil ha et nytt kort. g) Lag medlemsfunksjonen playgame(). Denne funksjonen lar brukeren spille BlackJack mot en dealer. For regler i BlackJack se følgende nettside: http://no.wikipedia.org/wiki/blackjack Side 5 av 5