2D1311 Programmeringsteknik med PBL Föreläsning 6 Skolan för Datavetenskap och kommunikation.

Slides:



Advertisements
Liknande presentationer
PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
Advertisements

PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
Skapa ett video-CV på YouTube
En genomgång av spelet: Dubbelkrig-Grön
PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
Klasser och objekt.
2D1311 Programmeringsteknik med PBL
Programmeringsteknik
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 18 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 6 Skolan för Datavetenskap och kommunikation.
Repetition inför provet
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
Föreläsning 7 Analys av algoritmer T(n) och ordo
2D1311 Programmeringsteknik med PBL Föreläsning 3 Skolan för Datavetenskap och kommunikation.
P-uppgiften: regler, planering och specifikation
2D1311 Programmeringsteknik med PBL
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
Föreläsning 4 Python: mera om funktioner och parametrar
2D1311 Programmeringsteknik med PBL Föreläsning 5 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
Föreläsning 9 Sökning, sortering, grafikprogrammering.
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 5.  Idag  Kap 7 i Dawson  Filer  Felhantering med try…except.
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Programmeringsteknik
Frågor om elevinflytande till elever i åk 3 – 9 i grundskolan
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
DD1311 P ROGRAMMERINGSTEKNIK MED PBL Föreläsning 9 Skolan för Datavetenskap och kommunikation.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 2 Skolan för Datavetenskap och kommunikation.
Föreläsning 11 J-uppgiften. Nästa period ägnas åt J-uppgiften. Den är individuell, dvs man jobbar på egen hand med uppgiften (inte tillsammans med labbkompisen).
Logikprogrammering 21/10 Binära träd
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Problemlösningsmetodik
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Reflektioner kring OU1 Generellt sett bra kvalitet på dokumentationen! Första intryck... –Skulle du lämna in en jobbansökan med ett häftstift/gem eller.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Programmeringsteknik Föreläsning 8 Skolan för Datavetenskap och kommunikation.
Föreläsning 7 Programmeringsteknik och Matlab DD1315 Kommandotolk parametrar Klass Instans Metod konstruktor.
2D1311 Programmeringsteknik med PBL Föreläsning 1 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 17 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
1 Föreläsning 8 Mer om klasser och objektorientering.
Anders Sjögren Deklarationsområde och funktioner.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Programmeringsteknik
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
Frågor om elevinflytande till elever i åk 3 – 9 i grundskolan
Program indata ? utdata 1/20 Vahid Mosavat, Nada, KTH.
Föreläsning 9 Sökning, sortering, grafiska gränssnitt (GUI)
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

2D1311 Programmeringsteknik med PBL Föreläsning 6 Skolan för Datavetenskap och kommunikation

P-uppgiften –Spec –Minnesbild –Granskning –Redovisning –Krav –Betyg BlackJack, utmaning 3

Spec+minnesbild Specen ska lämnas in tisdag14 mars kl 10:15 Syftet med specen är att du ska planera programmet innan du börjar skriva det. Specen ska beskriva algoritm, datastrukturer, funktioner, klasser (med attribut och metoder) Rita också (för hand eller med dator) en minnesbild över den viktiga datastrukturen i programmet. Din assistent kommer att titta på specen med minnesbilden och ge den betyget godkänd/kompletteras.

Spec för BlackJack Algoritm: Läs in spelarnas namn. Dela ut två kort till varje spelare. Låt varje spelare: –få ett kort till, så länge den vill ha ett kort till och inte blivit tjock Skriv ut vem som vann.

Funktioner read_players (läser in namnen och skapar en lista med spelarna) create_deck (skapar korten) shuffle_deck (blandar korten) deal (delar ut två kort till varje spelare) check_if_bust (kollar om spelaren blivit tjock) check_who_won (kollar vem som vann)

Datastrukturer Card-objekt En kortlek som är en lista av Card-objekt Spelare som har namn och varsin lista med kort. En lista med spelare. En dealer som fungerar som en spelare.

rank suit is_face_up "4" "Hjärter" True rank suit is_face_up "7" "Spader" True 0 1 cards lista med Card-objekt name "Linda" rank suit is_face_up "5" "Klöver" True rank suit is_face_up "6" "Spader" True 0 1 cards lista med Card-objekt name "Raman" Minnesbild: game (som är ett BJ_Game-objekt) lista med BJ_Player-objekt playersdealer deck rank suit is_face_up "9" "Hjärter" True rank suit is_face_up "Kung" "Hjärter" True 0 1 cards lista med Card-objekt name "Given" rank suit is_face_up "Ess" "Ruter" True rank suit is_face_up "2" "Klöver" True rank suit is_face_up "10" "Hjärter" True cards

Granskning Innan det färdiga programmet kan redovisas ska det testas (granskas) av en kurskamrat. Din granskare ska kritiskt granska ditt program, testköra det och fylla i ett granskningsprotokoll.granskningsprotokoll Denna granskning är ett obligatoriskt moment. (Varje kursdeltagare måste granska en uppgift, och alla uppgifter måste granskas före redovisning.) Syftet med granskningen är att du genom att kritiskt granska en annans program ska få en ökad förståelse för hur man ska (och inte ska) programmera.

Redovisning Du bokar (via webben) en tid för redovisning. Ta med följande till redovisningen: –Uppgiftslydelsen –Specen med uppdaterad minnesbild –Granskningsprotokollet och granskaren –En färsk programutskrift –Programmet Om du tar med en egen dator till redovisningen ska den vara uppkopplad mot Internet, eftersom vi (för att förhindra fusk) jämför din lösning mot alla tidigare lösningar.

Krav Programmet ska vara kommenterat upptill med författare och datum. Programmet ska vara användarvänligt. Programmet ska vara uppdelat i lagom långa funktioner, och eventuellt klasser. Varje variabel och funktion ska vara försedd med kommentarer. Ange vad variabeln representerar och vad funktionen gör. För funktioner bör man också ange vad indata (parametrar) och utdata (retur-värde) betyder. Namn på variabler och funktioner ska vara vettiga. Nästan identiska kodstycken ska inte upprepas. Gör i stället generella funktioner. Inför konstanter för sådant som man kan tänkas vilja ändra framöver och för tal som inte ska ändras och går att beskriva med namn.

Betyg E.Godkänd redovisning med spec och minnesbild av uppgift som lösts tillräckligt bra (max tre påpekanden). D.Godkänd redovisning med spec och minnesbild. –För betyg högre än D krävs att grunduppgiften redovisas före kursomgångens slut. C.Kraven för D + ett perfekt program (inga anmärkningar i protokollet) med korrekt hantering av felaktig inmatning. B.Uppgift eller extrauppgift med betyg B som är perfekt och med korrekt hantering av felaktig inmatning. A.Kraven för C + en extrauppgift med betyg A (grafik eller avancerad algoritm). –Observera att kraven på ett perfekt program gäller hela programmet, inklusive extrauppgift. (För den som vill ha ut ett betyg i det gamla siffersystemet gäller att E eller D  3, C eller B  4, A  5.)

Kap 9, utmaning 3 Förbättra BlackJack-programmet genom att låta användaren satsa pengar. Var ska penga-variabeln finnas? –Hos spelaren, alltså i BJ_Player. Men den har ju ingen konstruktor? –Då är det bara att deklarera en. Kopiera och modifiera konstruktorn i BJ_Hand. Var i programmet ska spelaren satsa? –Hmm, det bör vara efter att han sett sina första två kort, men innan han får välja att ta fler. Nånstans i början av play-metoden!

class BJ_Player(BJ_Hand): """ A Blackjack Player. """ ### *1* Ny konstruktor, med attributen pengar, insats def __init__(self, name): super(BJ_Player, self).__init__(name) self.pengar = 1000 self.insats = 0 ### *2* Ny metod för att läsa in insatsen ### def satsa(self): print self.name,", du har",self.pengar self.insats = games.ask_number("Hur mycket vill du satsa? ",0,self.pengar+1) def is_hitting(self): response = games.ask_yes_no("\n" + self.name + ", vill du ha ett kort? (J/N): ") return response == "j" def bust(self): print self.name, "blir tjock." self.lose()

### *3* Förlorar insatsen ### def lose(self): print self.name, "förlorar.", self.pengar -= self.insats print "och har", self.pengar, "kvar." ### *4* Vinner dubbla insatsen ### def win(self): print self.name, "vinner." self.pengar += 2*self.insats print "och har nu", self.pengar, "." ### *5* Får tilbaka insatsen ### def push(self): print "Det det blev oavgjort." self.pengar += self.insats ### *7* Ny metod som kollar om spelaren är pank ### def pank(self): return self.pengar == 0

def play(self): # deal initial 2 cards to everyone self.deck.deal(self.players + [self.dealer], per_hand = 2) self.dealer.flip_first_card() # hide dealer's first card for player in self.players: print player print self.dealer # deal additional cards to players for player in self.players: ### *6* Låt spelaren satsa ### player.satsa() self.__additional_cards(player )

Ta bort panka spelare Vi går igenom listan med en for-slinga, kollar vilka spelare som är panka, och tar bort varje pank spelare med metoden remove. –Men vad händer med for-slingan när man tar bort en spelare ur listan? Hoppsan, det kommer inte att gå bra. Vi gör en kopia av listan först, så får for- slingan gå igenom kopian istället!

### *9* Ta bort alla spelare som är panka ### def ta_bort_panka(self): kopia = self.players[:] for player in kopia: print "Kollar ", player.name, "..." if player.pank(): print player.name, "är pank!" self.players.remove(player)

def play(self): self.ta_bort_panka() # deal initial 2 cards to everyone self.deck.deal(self.players + [self.dealer], per_hand = 2) self.dealer.flip_first_card() # hide dealer's first card for player in self.players: print player print self.dealer # deal additional cards to players for player in self.players: ### *6* Låt spelaren satsa ### player.satsa() self.__additional_cards(player)