Recap Mera om nya typer Kort Fält. Programmering. Sommarkurs 2007 www.hh.se/staff/vero/programmering. Verónica Gaspes. IDE-sektionen.



Relevanta dokument
Administrivia Programmering Grunderna i C Kortspel. Programmering. Sommarkurs Verónica Gaspes.

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

C++ Slumptalsfunktioner + switch-satsen

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Utkast. Programmering. Signals. Olika typer av program. Sommarkurs Avbrott i mjukvara.

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

Typkonvertering. Java versus C

C-programmering, föreläsning 2 Jesper Wilhelmsson

TDIU01 - Programmering i C++, grundkurs

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

OOP Objekt-orienterad programmering

Arrays (indicerade variabler) Föreläsning 4

TDIU01 - Programmering i C++, grundkurs

Arrays (indicerade variabler) Föreläsning 6

BMI = (vikt i kg) / (längd i m) 2. Lösningsförslag

TDIU01 - Programmering i C++, grundkurs

PROGRAMMERING-JAVA TENTAMINA

TENTAMEN OOP

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

TENTAMEN OOP

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Skizz till en enkel databas

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

Exempelsamling Assemblerprogrammering

Indicerade variabler

Imperativ programmering. Föreläsning 2

Programmeringsteknik med C och Matlab

Introduktionslaboration

Föreläsning 3: Booleans, if, switch

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Programmering av inbyggda system. Pekare och Arrayer. Viktor Kämpe

TDIU01 - Datortenta (DAT2)

Programmering B med Visual C

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

SP:PROG3 HT12 Tenta

Övning från förra gången: readword

En kort text om programmering i C.

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

PROGRAMMERING-Java Omtentamina

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Visual Basic, en snabbgenomgång

Att använda pekare i. C-kod

Laboration A Objektsamlingar

Att utvidga klasser. Programmering. Att utvidga klasser. Förvirring. hh.se/db2004

Tentamen Grundläggande programmering

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

Tentamen *:58/ID100V Programmering i C Exempel 3

Namn Stil Dokumentation Objekt-orienterad programmering OBS OBS OBS OBS OBS OBS OBS OBS

Tentamen i Introduktion till programmering

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

PROGRAMMERING-Java TENTAMINA

Pekare och arrayer. Indexering och avreferering

Tillämpad programmering

Lite om länkade strukturer

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

Agenda. Objektorienterad programmering Föreläsning 13

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

Algoritmer. Två gränssnitt

Användarhandledning Version 1.2

Tentamen EDAF30 Programmering i C++

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Tillämpad programmering

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

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

Pythons standardbibliotek

I ett program hantera man ofta samlingar av objekt av samma typ.

Programmering. hh.se/db2004. SuperKarel, Nedbrytning & Styrsatser. Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

Parallellism, återblick

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Switch, Array (fält) switch break, continue, goto (scary) Sammansatta tilldelningar Kommentarer Array Sortering

Introduktionslaboration

Generiska konstruktioner. Kursbokens kapitel 13

Den som bara har en hammare tror att alla problem är spikar

Programmeringsteknik I

OOP Objekt-orienterad programmering

Grundkurs Programmering

Objektorientering i liten skala

Symboliska konstanter const

Objektorienterad programmering Föreläsning 5

Tentamen FYTA11 Javaprogrammering

Avancerad SSL-programmering II

Laboration 13, Arrayer och objekt

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

Raspberry Pi och Tellstick, ett program i C.

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

tentaplugg.nu av studenter för studenter

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

lex källkod lex.l lexkompilator lex.yy.c C- kompilator lex.yy.c a.out sekvens av tokens a.out input specifikation av tokens mha reguljära uttryck

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Transkript:

Programmering Sommarkurs 2007 www.hh.se/staff/vero/programmering Verónica Gaspes IDE-sektionen Juni 14

Utkast 1 Recap 2 Mera om nya typer 3 Kort 4 Fält

Recap Man kan ge namn till typer. Vi undersökte enum för våra nya typer. Man kan ge namn till funktioner för att använda komplicerade kommandon så som de var enkla. Man kan sätta ihop kommandon som sall göras med hjälp av Sekvens först detta; sedan detta Alternativ switch/case Program kan ta emot argument från kommandoraden. Program kan skriva på terminalen. Program kan anropa andra program.

Exempel typedef enum {CLUB,SPADE, HEART, DIAMOND suit; void showsuit(suit s){ switch(s){ case CLUB : system("xv classic-cards/1.png");return; case SPADE : system("xv classic-cards/2.png");return; case HEART : system("xv classic-cards/3.png");return; case DIAMOND : system("xv classic-cards/4.png");return; int main(int argc, char * argv[]){ showsuit(club); showsuit(spade); showsuit(heart); showsuit(diamond);

Finns det ingen atosuit? Example Vill vi kunna visa bilden för sviten som anges i kommandoraden int main(int argc, char * argv[]){ showsuit(argv[1]); //this is not right! har vi problem... showsuit vill ha en suit som argument, men argv[1] är en sträng av tecken! Och det finns inga bibiotek för suit som det finns för int!

Finns det ingen atosuit? Example Vill vi kunna visa bilden för sviten som anges i kommandoraden int main(int argc, char * argv[]){ showsuit(argv[1]); //this is not right! har vi problem... showsuit vill ha en suit som argument, men argv[1] är en sträng av tecken! Och det finns inga bibiotek för suit som det finns för int!

Finns det ingen atosuit? Example Vill vi kunna visa bilden för sviten som anges i kommandoraden int main(int argc, char * argv[]){ showsuit(argv[1]); //this is not right! har vi problem... showsuit vill ha en suit som argument, men argv[1] är en sträng av tecken! Och det finns inga bibiotek för suit som det finns för int!

Finns det ingen atosuit? Example Vill vi kunna visa bilden för sviten som anges i kommandoraden int main(int argc, char * argv[]){ showsuit(argv[1]); //this is not right! har vi problem... showsuit vill ha en suit som argument, men argv[1] är en sträng av tecken! Och det finns inga bibiotek för suit som det finns för int!

Gör det själv! Vi vill definiera en funktion som översätter en sträng till en svit: suit string2suit(char * thesuit) Vi vill använda strängarna "club", "spade", "heart" och "diamond" för sviterna. För strängar finns inte switch! Hur skiljer vi åt dessa fyra från alla andra? Och vad gör vi med alla andra strängar?

IF... C erbjuder möjlighet att välja mellan två saker som skall göras beroende på ett boolskt värde. Och om man jämför för likhet kan man få ett boolskt värde... suit string2suit(char * thesuit){ if(streq(thesuit,"club"))return CLUB; if(streq(thesuit,"spade"))return SPADE; if(streq(thesuit,"heart"))return HEART; if(streq(thesuit,"diamond"))return DIAMOND; exit(0); // stop the program in all other cases!

Om if Den generella formen för if är if(boolsk uttryck) { att göras i fall true else{ att göras i fall false

Om streq I biblioteket för strängar finns en funktion int strcmp (char *s1, char *s2) som jämnför s1 och s2 med vanlig alfabetisk ordning och producerar 0 om de är lika, ett negativt tal om s1 kommer före s2 ett positivt tal om s1 kommer efter s2 Du kan använda detta för att definiera den funktion vi behöver: bool streq(char * s1, char * s2)

äntligen kort! Vi har infört typer för svit och valör, men vi vill ha kort! Vi behöver en typ där värden är par. Example typedef struct{ suit thesuit; value thevalue; card; Quiz Hur många värden finns av typ card?

Hur kan vi hantera kort? Nu är card en typ! Example Har man en svit och en valör kan man bygga ett kort card newcard(suit s, value v){ card aux = {s,v ; return aux;

Hur kan vi hantera kort? Nu är card en typ! Example Har man ett kort kan man komma åt dess svit och valör bool cardeq(card c1, card c2){ return c1.thesuit == c2.thesuit && c1.thevalue == c2.thevalue ; Quiz Vad är skillnaden mellan = och ==?

And now for something completely different

Hur kan datorn dela ut kort? HighLow Datorn visar ett kort och spelaren gissar om nästa kort är högre, lika eller lägre än detta. Datorn tar upp ett nytt kort och räknar ut om spelaren vann eller förlorade. Om spelaren gissade rätt får hon poäng, annars får datorn poäng. Det kort som tas upp av datorn blir grunden för nästa gissning. Datorn kan välja kort genom att dra ett slumpmässig tal mellan 0 och 51 koden för ett kort.

Bibliotek funktioner int rand() returns the next pseudo random number in this series, in the range 0 to RAND MAX. void srand(int seed) establishes the seed for a new series. To produce a different pseudo-random series each time your program is run, do srand (time (0)) Quiz Hur får vi ett slumpmässig tal mellan 0 och 51?

Vilka kort har redan visats? Vi kan inte räkna med att få olika värden alla 52 gånger! 11 19 1 43 23 23 49 20 23 Diskussion Vilken information behöver vi? Men vi kan inte visa samma kort två gånger! I programmet måste vi hålla reda på vilka koder redan har producerats! Om vi har denna information tillgänglig kan vi producera ett nytt värde tills vi får ett nytt!

Fält i C 0 1 2 3 4 5 6 7 8 9 Det finns en typ för dessa saker! elementtypen [] Som man läser array av elementtypen. På varje plats har man ett värde av typen elementtypen. Vad kan man göra med de? Man kan komma ått varje element genom att ange dess index plats. Example card adeck []; adeck[0] =newcard(heart,three)

Utdelade korten I vårt fall vill vi använda korten som index! Så, vi använder deras kod. Example f f t f t f f f t f 0 1 2 3 4 5 6 7 8... 51 Som säger oss att,, redan har förekommit.

Hur går man igenom fältet? Vet man vad man vill göra med varje element, finns i C ett sätt att göra samma sak med alla elementen! Ett nytt sätt att sätta samman enkla kommandon till mer avancerade kommandon! for- loopen int i; for(i=0;i<52; i++ ){ det som skall göras varje varv!

Initiering Example #include<stdbool.h>... bool usedcards [52]; int i; for(i=0;i<52;i++){ usedcards[i]=false;

Samma sak flera gånger Man behöver inte koppla en for-loop till ett fält! När som helst vi vill göra samma sak ett visst antal gånger kan vi använda den! Example #include<stdio.h> main(int argc, char * argv[]){ srand(time(0)); int i; for(i=0;i< atoi(argv[1]) ;i++){ printf("%d",rand()%52);