Øvingsforelesning TDT4105

Like dokumenter
TDT4105 IT Grunnkurs Høst 2014

TDT4105 IT Grunnkurs Høst 2014

Utførelse av programmer, metoder og synlighet av variabler i JSP

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Kom i gang med Stata for Windows på UiO - hurtigstart for begynnere

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Øvingsforelesning i Python (TDT4110)

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Kapittel og 5. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 4.

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

Øvingsforelesning TDT4105 Matlab

Obligatorisk oppgave nr. 3 (av 4) i INF1000, våren 2006

Kanter, kanter, mange mangekanter

Skilpaddefraktaler Erfaren Python PDF

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Soloball. Steg 1: En roterende katt. Sjekkliste. Test prosjektet. Introduksjon. Vi begynner med å se på hvordan vi kan få kattefiguren til å rotere.

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

EKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.

Matematikk Øvingsoppgaver i numerikk leksjon 8 Matriser. Løsningsforslag

Brukermanual for statistikk på Asset on web: Statistikk salg pr dag, uke eller måned fordelt på alle avdelinger:

buildingsmart Norge Guiden

TDT4102 Prosedyreog objektorientert programmering Vår 2016

TDT4105 Informasjonsteknologi, grunnkurs

Øvingsforelesning i Matlab (TDT4105)

Hvordan du kommer i gang med LOGO.

Brukerveiledning WISEflow

Straffespark Introduksjon Scratch Lærerveiledning

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose

TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6)

HØGSKOLEN I SØR-TRØNDELAG

Velkommen som ny bruker av Uni Økonomi!

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

PixEdit Guide MEDFAK (5. utkast)

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

16 Programmere TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5

Systemutvikling (Software Engineering) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Google Chrome. Microsoft Edge. Mozilla Firefox. Internet Explorer. Opera. Safari

Oppgaver til julekalenderen 2005 for mellomtrinnet; trinn

Matematikk Øvingsoppgaver i numerikk leksjon 5 Skript

Redd verden. Steg 1: Legg til Ronny og søppelet. Sjekkliste. Introduksjon

Mattespill Nybegynner Python PDF

POLITISKE SAKSDOKUMENTER:

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

Klask-en-Muldvarp. Steg 1: Gjøre klart spillbrettet. Sjekkliste. Introduksjon

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

Kapittel 3: Litt om representasjon av tall

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

Visma Oppvekst Skole. Temahefte. VO Timeplan

Retningslinjer for innlegging av foto i NTNU Vitenskapsmuseets fotobase (MusIt)

Komme i gang med Skoleportalen

UI-View Installasjon og konfigurasjon for IGate + RX<->TX av meldinger og ingen ting annet!

TOD063 Datastrukturer og algoritmer

Noen innebygde funksjoner - Vektorisering

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 2014

infotorg Enkel brukermanual

Brukerveiledning. For student hjemmeeksamen

Spøkelsesjakten. Introduksjon

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

Noen innebygde funksjoner - Vektorisering

Labquality/NKK ELEKTRONISK RESULTATSKJEMA VIA INTERNET. Åpning av skjemaet. Logg inn på Participant services. Velg resultatskjemaet

Enkel veiledning for: GSM key3+

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

INF109 - Uke 1b

Litt om dette dokumentet

IN1000 Obligatorisk innlevering 7

Go with the. Niende forelesning. Mye matematikk i boka her ikke så komplisert, men mye å holde styr på.

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?

Asteroids. Oversikt over prosjektet. Steg 1: Enda et flyvende romskip. Plan. Sjekkliste. Introduksjon

Manual for å oppgrade TS 1000 fra:

Månedsoversikt gjennom hele året.

Månedsoversikt gjennom hele året.

Brukerveiledning for student skoleeksamen HIST Oppdatert 27. oktober 2014

Gangemesteren Nybegynner Scratch PDF

student s104111, s107911, s122357

Veileder for opplasting av AKTIV sporlogg til PC

3. Introduksjon til prosjektet Hringr. Scratch fra scratch Enkel programmering for nybegynnere

TDT4105 IT Grunnkurs Høst 2012

Arbeidskrav 1. Se fremdriftsplanen for innleveringsfrist. Emneansvarlig: Olav Dæhli 1

Fra datax til Visma eaccounting

Tabellen viser en serie med verdier for den uavhengige variabelen, og viser den tilhørende verdien til den avhengige variabelen.

Binærfiler versus tekstfiler

Skilpadder hele veien ned

Hvor i All Verden? Del 3 Erfaren Scratch PDF

INF Ekstrainnlevering

Unix/Linux en annen måte å gjøre ting på

WinMed Allmenn NPR. Lysaker Torg 15 Postboks LYSAKER. Tlf: Fax: E-post:

Oppgaven består av to deler, del A og del B. Alle skal besvare både del A og del B, men det finnes noen valgmuligheter innenfor hver del.

PCK Håndterminal. Brukerveiledning

En oppsummering (og litt som står igjen)

Oppgavesett videregående kurs i NVivo 9

Veileder i bruk av GoodReader

Eksamensoppgaver 2014

Transkript:

Øvingsforelesning TDT4105 Gjennomgang øving 9, intro øving 10. Eksamensoppgaver. Benjamin A. Bjørnseth 10. november 2015

2 Oversikt Praktisk Gjennomgang øving 9 Introduksjon sudoku Oppgave 4 Kont-eksamen 2014

3 Resterende øvingsforelesninger Tre forelesninger igjen. Uke Tema > 46 Øving 9, sudoku, eksamensoppgaver 47 Basert på avstemning 48 Basert på avstemning Stem over tema for de to siste forelesningene (link også på piazza): Tirsdag: http://goo.gl/forms/xtk9diy6dy Onsdag: http://goo.gl/forms/j5mb2ebe0u Torsdag: http://goo.gl/forms/hx3y9exoyk

4 Innlevering av øving 10 Teller dobbelt hvis godkjent. Må godkjennes hos studass innen fristen. Kan ikke sende epost og få godkjenning i etterkant.

5 Oversikt Praktisk Gjennomgang øving 9 Introduksjon sudoku Oppgave 4 Kont-eksamen 2014

6 Persondatabase: Tekst- og filbehandling serialize_person(person)

6 Persondatabase: Tekst- og filbehandling serialize_person(person) person name date_of_birth phone day month year serialize_person() <name>#<date>#<phone>

7 Persondatabase: Tekst- og filbehandling serialize_person(person) person name date_of_birth phone day month year serialize_person() <name>#<date>#<phone> = %s#%s#%d

8 Persondatabase: Tekst- og filbehandling serialize_person(person) person name date_of_birth phone day month year <name>#<date>#<phone> = %s#%s#%d

9 Persondatabase: Tekst- og filbehandling serialize_person(person) person name date_of_birth phone day month year <name>#<date>#<phone> = %s#%s#%d

10 Persondatabase: Tekst- og filbehandling serialize_person(person) person name date_of_birth phone day month year as string <name>#<date>#<phone> = %s#%s#%d

11 Persondatabase: Tekst- og filbehandling serialize_person(person) person name date_of_birth phone day month year <name>#<date>#<phone> = %s#%s#%d

12 Persondatabase: Tekst- og filbehandling serialize_person(person) person name date_of_birth phone day month year as string = serialize <name>#<date>#<phone> = %s#%s#%d

13 Persondatabase: Tekst- og filbehandling deserialize_person(person)

13 Persondatabase: Tekst- og filbehandling deserialize_person(person) <name>#<date>#<phone> deserialize_person() person name date_of_birth phone day month year

14 Persondatabase: Tekst- og filbehandling deserialize_person(person) <name>#<date>#<phone> person name date_of_birth phone day month year

15 Persondatabase: Tekst- og filbehandling deserialize_person(person) <name>#<date>#<phone> person name date_of_birth phone day month year

16 Persondatabase: Tekst- og filbehandling deserialize_person(person) <name>#<date>#<phone> person name date_of_birth phone day month year

17 Persondatabase: Tekst- og filbehandling deserialize_person(person)? <name>#<date>#<phone> person name date_of_birth phone day month year

18 Persondatabase: Tekst- og filbehandling deserialize_person(person)? <name>#<date>#<phone> - strsplit() - strtok() - sscanf() person name date_of_birth phone day month year

19 Persondatabase: Tekst- og filbehandling store(filename, persons)

19 Persondatabase: Tekst- og filbehandling store(filename, persons) Person 1 Person 2... Person n <filnavn> <filnavn> <navn1>#<dato1>#<tlf1> <navn2>#<dato2>#<tlf2> store()......... <navnn>#<daton>#<tlfn>

20 Persondatabase: Tekst- og filbehandling store(filename, persons) Person 1 Person 2... Person n <filnavn> <fil-id> åpne fil <filnavn> <navn1>#<dato1>#<tlf1> <navn2>#<dato2>#<tlf2>......... <navnn>#<daton>#<tlfn>

21 Persondatabase: Tekst- og filbehandling store(filename, persons) Person 1 Person 2... Person n <filnavn> <fil-id> åpne fil skriv linje <filnavn> <navn1>#<dato1>#<tlf1> <navn2>#<dato2>#<tlf2>......... <navnn>#<daton>#<tlfn>

22 Persondatabase: Tekst- og filbehandling store(filename, persons) Person 1 Person 2... Person n <filnavn> <fil-id> åpne fil serialize_person() skriv linje <filnavn> <navn1>#<dato1>#<tlf1> <navn2>#<dato2>#<tlf2>......... <navnn>#<daton>#<tlfn>

23 Persondatabase: Tekst- og filbehandling store(filename, persons) Person 1 Person 2... Person n <filnavn> <fil-id> åpne fil serialize_person() skriv linje <filnavn> <navn1>#<dato1>#<tlf1> <navn2>#<dato2>#<tlf2>......... <navnn>#<daton>#<tlfn>

24 Persondatabase: Tekst- og filbehandling store(filename, persons) Person 1 Person 2... Person n <filnavn> <fil-id> åpne fil serialize_person() skriv linje <filnavn> <navn1>#<dato1>#<tlf1> <navn2>#<dato2>#<tlf2>......... <navnn>#<daton>#<tlfn>

25 Persondatabase: Tekst- og filbehandling store(filename, persons) Person 1 Person 2... Person n <filnavn> <fil-id> åpne fil serialize_person() <filnavn> skriv linje <navn1>#<dato1>#<tlf1> <navn2>#<dato2>#<tlf2> Husk å lukke filen!......... <navnn>#<daton>#<tlfn>

26 Persondatabase: Tekst- og filbehandling loadfile(filename)

26 Persondatabase: Tekst- og filbehandling loadfile(filename) <filnavn> <navn1>#<dato1>#<tlf1> <navn2>#<dato2>#<tlf2> <filnavn>......... loadfile() <navnn>#<daton>#<tlfn> Person 1 Person 2... Person n

27 Persondatabase: Tekst- og filbehandling loadfile(filename) <navn1>#<dato1>#<tlf1> <navn2>#<dato2>#<tlf2>......... <filnavn> <fil-id> <filnavn> åpne fil <navnn>#<daton>#<tlfn>

28 Persondatabase: Tekst- og filbehandling loadfile(filename) <navn1>#<dato1>#<tlf1> <navn2>#<dato2>#<tlf2>......... <filnavn> les linje <fil-id> <filnavn> åpne fil <navnn>#<daton>#<tlfn> Person 1

29 Persondatabase: Tekst- og filbehandling loadfile(filename) <navn1>#<dato1>#<tlf1> <navn2>#<dato2>#<tlf2>......... <filnavn> les linje <fil-id> <filnavn> åpne fil <navnn>#<daton>#<tlfn> deserialize_person() Person 1

30 Persondatabase: Tekst- og filbehandling loadfile(filename) <navn1>#<dato1>#<tlf1> <navn2>#<dato2>#<tlf2>......... <filnavn> les linje <fil-id> <filnavn> åpne fil <navnn>#<daton>#<tlfn> deserialize_person() Person 1 Person 2

31 Persondatabase: Tekst- og filbehandling loadfile(filename) <navn1>#<dato1>#<tlf1> <navn2>#<dato2>#<tlf2>......... <filnavn> les linje <fil-id> <filnavn> åpne fil <navnn>#<daton>#<tlfn> deserialize_person() Person 1 Person 2... Person n

32 Persondatabase: Tekst- og filbehandling loadfile(filename) <navn1>#<dato1>#<tlf1> <navn2>#<dato2>#<tlf2>......... <filnavn> <navnn>#<daton>#<tlfn> <filnavn> <fil-id> åpne fil les linje deserialize_person() Husk å lukke filen! Person 1 Person 2... Person n

33 Personprogram Programmet skal vise en meny til brukeren og la brukeren velge hva den vil gjøre. Altså et program som lar brukeren behandle en personsdatabase. Demonstrerer hvordan man lager et større program ved å sette sammen mange mindre funksjoner. Som vi må i Sudoku! Jeg antar at det vanskeligste med oppgaven er omfanget. Vi starter derfor med å se på hvordan vi ser overordnet på problemløsning ved komposisjon av funksjoner.

34 Personprogram: Angående funksjoner function res = tverrsum(n) %... end Hva var tanken bak funksjoner, igjen?

34 Personprogram: Angående funksjoner function res = tverrsum(n) %... end Hva var tanken bak funksjoner, igjen? De lar oss gjenbruke kode.

35 Personprogram: Angående funksjoner function res = tverrsum(n) %... end Hva var tanken bak funksjoner, igjen? De lar oss gjenbruke kode. For forskjellige input-verdier % Kommandovindu %... >> tverrsum(143) ans = 8 >> tverrsum(884) ans = 20 >> tverrsum(59) ans = 14 Kan variere

36 Personprogram: Angående funksjoner function res = tverrsum(n) %... end Hva var tanken bak funksjoner, igjen? De lar oss gjenbruke kode. For forskjellige input-verdier På tvers av prosjekt/oppgaver. Brukes flere steder, men må lages bare én gang function res = delelig(n, k) %... if k == 3 res = delelig(tverrsum(n), k) %... elseif k == 9 res = delelig(tverrsum(n), k) %... end %... end

37 Personprogram: Angående funksjoner Hva var tanken bak funksjoner, igjen? De lar oss gjenbruke kode. For forskjellige input-verdier På tvers av prosjekt/oppgaver. De lar oss dele opp koden. function res = tverrsum(n) %... end

38 Personprogram: Angående funksjoner function res = tverrsum(n) sifre = del_i_sifre(n) res = summer(sifre); end Hva var tanken bak funksjoner, igjen? De lar oss gjenbruke kode. For forskjellige input-verdier På tvers av prosjekt/oppgaver. De lar oss dele opp koden. function res = del_i_sifre(n) %... end function res = summer(sifre) %... end

38 Personprogram: Angående funksjoner function res = tverrsum(n) sifre = del_i_sifre(n) res = summer(sifre); end Hva var tanken bak funksjoner, igjen? De lar oss gjenbruke kode. For forskjellige input-verdier På tvers av prosjekt/oppgaver. De lar oss dele opp koden. Å dele opp koden er å dele opp problemet. Jo mindre, jo enklere Jo mer eksplisitt, jo enklere function res = del_i_sifre(n) %... end function res = summer(sifre) %... end

39 Personprogram: Angående funksjoner Konklusjon: Når vi løser problem, er det naturlig å bryte det ned i mindre biter For å få mindre å tenke på av gangen. Som vi så, brukes funksjoner til å dele opp problem. Ergo: det er naturlig å løse problem ved å kombinere funksjoner som løser delproblem.

40 Personprogram: Programløsning Vi ser for oss hvordan vi kan tenke oss at programmet skal fungere. Basert på våre ønsker, finner vi ut hvilke delproblem som må løses. Lag en funksjon for disse Fyll den med ingenting først - en stubfunksjon. Med stubfunksjoner kan vi lage løsningen på det overordnede problemet før delproblemløsningene er på plass. Hovedfordel: del opp problemet, og behold oversikt over det store bildet.

41 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** person_program

42 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** person_program print_header()

43 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** Velg handling fra menyen: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet print_header() person_program

44 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** Velg handling fra menyen: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet print_header() person_program print_header()

45 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** Velg handling fra menyen: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet > 3 print_header() person_program print_header()

46 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** Velg handling fra menyen: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet > 3 person_program valg = input( > ) print_header() print_header()

47 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** Velg handling fra menyen: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet > 3 Ingen personer i databasen. print_header() person_program print_header()

48 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** Velg handling fra menyen: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet > 3 Ingen personer i databasen. person_program print_header() print_header() process(p, choice)

49 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** Velg handling fra menyen: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet > 3 Ingen personer i databasen. person_program print_header() print_header() process(p, choice) process_list_persons(p)

50 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** Velg handling fra menyen: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet > 3 Ingen personer i databasen. Velg handling fra menyen: 1. Hent database fra fil 2....... > 1 person_program print_header() print_header() process(p, choice) process_list_persons(p)

51 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** Velg handling fra menyen: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet > 3 Ingen personer i databasen. Velg handling fra menyen: 1. Hent database fra fil 2....... > 1 Skriv inn databasefil: personer.txt person_program print_header() print_header() process(p, choice) process_load() filnavn = input( >, s ) process_list_persons(p)

52 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** Velg handling fra menyen: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet > 3 Ingen personer i databasen. Velg handling fra menyen: 1. Hent database fra fil 2....... > 1 Skriv inn databasefil: personer.txt person_program print_header() print_header() process(p, choice) process_load() Returner ny P loadfile() process_list_persons(p)

53 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** Velg handling fra menyen: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet > 3 Ingen personer i databasen. Velg handling fra menyen: 1. Hent database fra fil 2....... > 1 Skriv inn databasefil: personer.txt 2 personer lastet inn. person_program print_header() print_header() process(p, choice) process_load() fprintf( %d personer lastet inn., length(p)) process_list_persons(p)

54 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** Velg handling fra menyen: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet > 3 Ingen personer i databasen. Velg handling fra menyen: 1. Hent database fra fil 2....... > 1 Skriv inn databasefil: personer.txt 2 personer lastet inn. print_header() process_load() person_program process(p, choice) Returner ny P Returner ny P print_header() process_list_persons(p)

55 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** Velg handling fra menyen: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet > 3 Ingen personer i databasen. Velg handling fra menyen: 1. Hent database fra fil 2....... > 1 Skriv inn databasefil: personer.txt 2 personer lastet inn. Velg handling fra menyen: > 4 Hva heter du? Urgolf Hvilken dato er du født? Ny person lagt til. Returner ny P print_header() process_load() person_program process(p, choice) Returner ny P print_header() process_new_person() Returner ny person prompt_person() process_list_persons(p)

56 Personprogram: Tenkt programflyt % I kommandovindu %... >> person_program ** Velkommen til personprogram! *** Velg handling fra menyen: 1. Hent database fra fil 2. Lagre database til fil 3. List alle personer 4. Legg inn ny person 5. Endre en person 0. Avslutt programmet > 3 Ingen personer i databasen. Velg handling fra menyen: 1. Hent database fra fil 2....... > 1 Skriv inn databasefil: personer.txt 2 personer lastet inn. Velg handling fra menyen: > 4 Hva heter du? Urgolf Hvilken dato er du født? Ny person lagt til. Velg handling fra menyen: > 3 Person 1: Lynx lynx, 20.05.1990, 33 Person 2: Lynx lynx lynx, Person 3: Urgolf, person_program print_header() print_header() process(p, choice) process_load() process_new_person() prompt_person() process_list_persons(p)

57 Personprogram: Implementasjon 1. Lag stub-funksjonene vi har identifisert. 2. Implementer person_program ved å bruke dem. 2.1 Ha en personlistevariabel P 2.2 Les inn et brukervalg. 2.3 Gjør operasjon med listen P ved å kalle funksjonen process. 2.4 Repeter til brukeren går lei. 3. Implementer de enkle print-funksjonene 4. Implementer generell logikk for process-funksjonen 5. Programmet kan nå utvides (fullføres) ved å 5.1 Lage en ny funksjon for hver ekstra funksjonalitet. 5.2 Legge inn støtte i process for å kalle denne funksjonen.

58 Oversikt Praktisk Gjennomgang øving 9 Introduksjon sudoku Oppgave 4 Kont-eksamen 2014

59 Krav til funksjonalitet Skriv tall i rute.

59 Krav til funksjonalitet Skriv tall i rute. Med gyldighetssjekk etter sudoku-regler.

59 Krav til funksjonalitet Skriv tall i rute. Med gyldighetssjekk etter sudoku-regler. Slette tall (altså angre)

59 Krav til funksjonalitet Skriv tall i rute. Med gyldighetssjekk etter sudoku-regler. Slette tall (altså angre) Pen utskrift

59 Krav til funksjonalitet Skriv tall i rute. Med gyldighetssjekk etter sudoku-regler. Slette tall (altså angre) Pen utskrift Laste inn brett fra tekstfil.

59 Krav til funksjonalitet Skriv tall i rute. Med gyldighetssjekk etter sudoku-regler. Slette tall (altså angre) Pen utskrift Laste inn brett fra tekstfil. Lagre brett til fil.

59 Krav til funksjonalitet Skriv tall i rute. Med gyldighetssjekk etter sudoku-regler. Slette tall (altså angre) Pen utskrift Laste inn brett fra tekstfil. Lagre brett til fil. Oppdage seier.

59 Krav til funksjonalitet Skriv tall i rute. Med gyldighetssjekk etter sudoku-regler. Slette tall (altså angre) Pen utskrift Laste inn brett fra tekstfil. Lagre brett til fil. Oppdage seier. Brukervennlig grensesnitt.

59 Krav til funksjonalitet Skriv tall i rute. Med gyldighetssjekk etter sudoku-regler. Slette tall (altså angre) Pen utskrift Laste inn brett fra tekstfil. Lagre brett til fil. Oppdage seier. Brukervennlig grensesnitt. Menybasert valg.

60 Forslag til rekkefølge 1. Overordnet arkitektur: lag funksjonen sudoku(), som

60 Forslag til rekkefølge 1. Overordnet arkitektur: lag funksjonen sudoku(), som Først lager en variabel brett, som holder spillets tilstand som en 9x9-matrise med tall.

60 Forslag til rekkefølge 1. Overordnet arkitektur: lag funksjonen sudoku(), som Først lager en variabel brett, som holder spillets tilstand som en 9x9-matrise med tall. Lar brukeren velge mellom tre meny-valg:

60 Forslag til rekkefølge 1. Overordnet arkitektur: lag funksjonen sudoku(), som Først lager en variabel brett, som holder spillets tilstand som en 9x9-matrise med tall. Lar brukeren velge mellom tre meny-valg: 1.1 Spill sudoku.

60 Forslag til rekkefølge 1. Overordnet arkitektur: lag funksjonen sudoku(), som Først lager en variabel brett, som holder spillets tilstand som en 9x9-matrise med tall. Lar brukeren velge mellom tre meny-valg: 1.1 Spill sudoku. 1.2 Last brett.

60 Forslag til rekkefølge 1. Overordnet arkitektur: lag funksjonen sudoku(), som Først lager en variabel brett, som holder spillets tilstand som en 9x9-matrise med tall. Lar brukeren velge mellom tre meny-valg: 1.1 Spill sudoku. 1.2 Last brett. 1.3 Lagre brett.

60 Forslag til rekkefølge 1. Overordnet arkitektur: lag funksjonen sudoku(), som Først lager en variabel brett, som holder spillets tilstand som en 9x9-matrise med tall. Lar brukeren velge mellom tre meny-valg: 1.1 Spill sudoku. 1.2 Last brett. 1.3 Lagre brett. 1.4 Avslutt.

60 Forslag til rekkefølge 1. Overordnet arkitektur: lag funksjonen sudoku(), som Først lager en variabel brett, som holder spillets tilstand som en 9x9-matrise med tall. Lar brukeren velge mellom tre meny-valg: 1.1 Spill sudoku. 1.2 Last brett. 1.3 Lagre brett. 1.4 Avslutt. Basert på valg, kaller enten:

60 Forslag til rekkefølge 1. Overordnet arkitektur: lag funksjonen sudoku(), som Først lager en variabel brett, som holder spillets tilstand som en 9x9-matrise med tall. Lar brukeren velge mellom tre meny-valg: 1.1 Spill sudoku. 1.2 Last brett. 1.3 Lagre brett. 1.4 Avslutt. Basert på valg, kaller enten: brett = spill_sudoku(brett)

60 Forslag til rekkefølge 1. Overordnet arkitektur: lag funksjonen sudoku(), som Først lager en variabel brett, som holder spillets tilstand som en 9x9-matrise med tall. Lar brukeren velge mellom tre meny-valg: 1.1 Spill sudoku. 1.2 Last brett. 1.3 Lagre brett. 1.4 Avslutt. Basert på valg, kaller enten: brett = spill_sudoku(brett) brett = last_brett()

60 Forslag til rekkefølge 1. Overordnet arkitektur: lag funksjonen sudoku(), som Først lager en variabel brett, som holder spillets tilstand som en 9x9-matrise med tall. Lar brukeren velge mellom tre meny-valg: 1.1 Spill sudoku. 1.2 Last brett. 1.3 Lagre brett. 1.4 Avslutt. Basert på valg, kaller enten: brett = spill_sudoku(brett) brett = last_brett() lagre_brett(brett)

60 Forslag til rekkefølge 1. Overordnet arkitektur: lag funksjonen sudoku(), som Først lager en variabel brett, som holder spillets tilstand som en 9x9-matrise med tall. Lar brukeren velge mellom tre meny-valg: 1.1 Spill sudoku. 1.2 Last brett. 1.3 Lagre brett. 1.4 Avslutt. Basert på valg, kaller enten: brett = spill_sudoku(brett) brett = last_brett() lagre_brett(brett) Skriv ut brettet ved å kalle skriv_ut_brett(brett)

60 Forslag til rekkefølge 1. Overordnet arkitektur: lag funksjonen sudoku(), som Først lager en variabel brett, som holder spillets tilstand som en 9x9-matrise med tall. Lar brukeren velge mellom tre meny-valg: 1.1 Spill sudoku. 1.2 Last brett. 1.3 Lagre brett. 1.4 Avslutt. Basert på valg, kaller enten: brett = spill_sudoku(brett) brett = last_brett() lagre_brett(brett) Skriv ut brettet ved å kalle skriv_ut_brett(brett) 2. Lag tomme funksjoner for spill_sudoku, last_brett og lagre_brett som alle kaller error( Ikke laget enda )

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett)

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall.

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden.

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke:

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer:

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer: sett <rad> <kolonne> <tall>

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer: sett <rad> <kolonne> <tall> slett <rad> <kolonne>

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer: sett <rad> <kolonne> <tall> slett <rad> <kolonne> avslutt

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer: sett <rad> <kolonne> <tall> slett <rad> <kolonne> avslutt Sjekk kommando:

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer: sett <rad> <kolonne> <tall> slett <rad> <kolonne> avslutt Sjekk kommando: Hvis avslutt, returner fra funksjonen.

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer: sett <rad> <kolonne> <tall> slett <rad> <kolonne> avslutt Sjekk kommando: Hvis avslutt, returner fra funksjonen. Hvis sett, kall lokal funksjon brett = sett(brett, rad, kolonne, tall).

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer: sett <rad> <kolonne> <tall> slett <rad> <kolonne> avslutt Sjekk kommando: Hvis avslutt, returner fra funksjonen. Hvis sett, kall lokal funksjon brett = sett(brett, rad, kolonne, tall). Hvis slett, kall lokal funksjon brett = slett(brett, rad, kolonne).

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer: sett <rad> <kolonne> <tall> slett <rad> <kolonne> avslutt Sjekk kommando: Hvis avslutt, returner fra funksjonen. Hvis sett, kall lokal funksjon brett = sett(brett, rad, kolonne, tall). Hvis slett, kall lokal funksjon brett = slett(brett, rad, kolonne). Skriv ut brettet.

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer: sett <rad> <kolonne> <tall> slett <rad> <kolonne> avslutt Sjekk kommando: Hvis avslutt, returner fra funksjonen. Hvis sett, kall lokal funksjon brett = sett(brett, rad, kolonne, tall). Hvis slett, kall lokal funksjon brett = slett(brett, rad, kolonne). Skriv ut brettet. 3. Lag brett = sett(brett, rad, kolonne, tall)

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer: sett <rad> <kolonne> <tall> slett <rad> <kolonne> avslutt Sjekk kommando: Hvis avslutt, returner fra funksjonen. Hvis sett, kall lokal funksjon brett = sett(brett, rad, kolonne, tall). Hvis slett, kall lokal funksjon brett = slett(brett, rad, kolonne). Skriv ut brettet. 3. Lag brett = sett(brett, rad, kolonne, tall) Anta først at rad, kolonne og tall er gyldige.

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer: sett <rad> <kolonne> <tall> slett <rad> <kolonne> avslutt Sjekk kommando: Hvis avslutt, returner fra funksjonen. Hvis sett, kall lokal funksjon brett = sett(brett, rad, kolonne, tall). Hvis slett, kall lokal funksjon brett = slett(brett, rad, kolonne). Skriv ut brettet. 3. Lag brett = sett(brett, rad, kolonne, tall) Anta først at rad, kolonne og tall er gyldige. Legg så til sjekker:

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer: sett <rad> <kolonne> <tall> slett <rad> <kolonne> avslutt Sjekk kommando: Hvis avslutt, returner fra funksjonen. Hvis sett, kall lokal funksjon brett = sett(brett, rad, kolonne, tall). Hvis slett, kall lokal funksjon brett = slett(brett, rad, kolonne). Skriv ut brettet. 3. Lag brett = sett(brett, rad, kolonne, tall) Anta først at rad, kolonne og tall er gyldige. Legg så til sjekker: rad, kolonne og tall er gyldige verdier (heltall mellom 1 og 9).

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer: sett <rad> <kolonne> <tall> slett <rad> <kolonne> avslutt Sjekk kommando: Hvis avslutt, returner fra funksjonen. Hvis sett, kall lokal funksjon brett = sett(brett, rad, kolonne, tall). Hvis slett, kall lokal funksjon brett = slett(brett, rad, kolonne). Skriv ut brettet. 3. Lag brett = sett(brett, rad, kolonne, tall) Anta først at rad, kolonne og tall er gyldige. Legg så til sjekker: rad, kolonne og tall er gyldige verdier (heltall mellom 1 og 9). Ingenting satt på plassen fra før.

61 Forslag til rekkefølge for selve spillet 1. Pen utskrift: skriv_ut_brett(brett) Anta at parameteren er en 9x9-matrise med tall. Start med noe enkelt, kan gjøres penere siden. 2. Overordnet løsning: brett = spill_sudoku(brett). I while-løkke: Les kommando, og reager. Kommandoer: sett <rad> <kolonne> <tall> slett <rad> <kolonne> avslutt Sjekk kommando: Hvis avslutt, returner fra funksjonen. Hvis sett, kall lokal funksjon brett = sett(brett, rad, kolonne, tall). Hvis slett, kall lokal funksjon brett = slett(brett, rad, kolonne). Skriv ut brettet. 3. Lag brett = sett(brett, rad, kolonne, tall) Anta først at rad, kolonne og tall er gyldige. Legg så til sjekker: rad, kolonne og tall er gyldige verdier (heltall mellom 1 og 9). Ingenting satt på plassen fra før. Tallet finnes ikke i raden, kolonnen eller kvadratet fra før.

62 Kommentar til lagring og lasting Det er gunstig om man kan laste inn spill man har lagret før. Man må laste inn fra tekstfil. Start med å skrive lagre_brett(brett), som lagrer brett i tekstformat. Lag så brett = last_brett(), som laster inn et brett fra fil med samme format.

63 Oversikt Praktisk Gjennomgang øving 9 Introduksjon sudoku Oppgave 4 Kont-eksamen 2014

64 Bridge!

65 Oppgave pre-a): Forstå domenet To lag: N/S og Ø/V

65 Oppgave pre-a): Forstå domenet To lag: N/S og Ø/V 13 kort pr. spiller

65 Oppgave pre-a): Forstå domenet To lag: N/S og Ø/V 13 kort pr. spiller Meld forventet antall stikk (et tall) og trumf (en tekst)

65 Oppgave pre-a): Forstå domenet To lag: N/S og Ø/V 13 kort pr. spiller Meld forventet antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand

65 Oppgave pre-a): Forstå domenet To lag: N/S og Ø/V 13 kort pr. spiller Meld forventet antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6

65 Oppgave pre-a): Forstå domenet To lag: N/S og Ø/V 13 kort pr. spiller Meld forventet antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf>

65 Oppgave pre-a): Forstå domenet To lag: N/S og Ø/V 13 kort pr. spiller Meld forventet antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding

65 Oppgave pre-a): Forstå domenet To lag: N/S og Ø/V 13 kort pr. spiller Meld forventet antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding Få for mange stikk: overstikk.

65 Oppgave pre-a): Forstå domenet To lag: N/S og Ø/V 13 kort pr. spiller Meld forventet antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding Få for mange stikk: overstikk. Få for få stikk: beit.

66 Oppgave a) To lag: N/S og Ø/V 13 kort pr. spiller Meld forventet antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding Få for mange stikk: overstikk. Få for få stikk: beit.

66 Oppgave a) To inn, en ut. To lag: N/S og Ø/V 13 kort pr. spiller Meld forventet antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding Få for mange stikk: overstikk. Få for få stikk: beit.

66 Oppgave a) To inn, en ut. Returner har man klart meldingen To lag: N/S og Ø/V 13 kort pr. spiller Meld forventet antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding Få for mange stikk: overstikk. Få for få stikk: beit.

66 Oppgave a) To inn, en ut. Returner har man klart meldingen Melding: forventet antall stikk oppgitt som trekk. To lag: N/S og Ø/V 13 kort pr. spiller Meld forventet antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding Få for mange stikk: overstikk. Få for få stikk: beit.

66 Oppgave a) To inn, en ut. Returner har man klart meldingen Melding: forventet antall stikk oppgitt som trekk. Å klare en melding: få minst det forventede antall stikk. To lag: N/S og Ø/V 13 kort pr. spiller Meld forventet antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding Få for mange stikk: overstikk. Få for få stikk: beit.

67 Oppgave b) To lag: N/S og Ø/V 13 kort pr. spiller Meld antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding For mange stikk: overstikk. For få stikk: beit*.

67 Oppgave b) To inn, én ut To lag: N/S og Ø/V 13 kort pr. spiller Meld antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding For mange stikk: overstikk. For få stikk: beit*.

67 Oppgave b) To inn, én ut Returner er det en utgang laget har klart? To lag: N/S og Ø/V 13 kort pr. spiller Meld antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding For mange stikk: overstikk. For få stikk: beit*.

67 Oppgave b) To inn, én ut Returner er det en utgang laget har klart? To lag: N/S og Ø/V 13 kort pr. spiller Meld antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding For mange stikk: overstikk. For få stikk: beit*. Utgang: 3+ grand, 4+ spar/hjerter, 5+ kløver/ruter

67 Oppgave b) To inn, én ut Returner er det en utgang laget har klart? Er utgang meldt? To lag: N/S og Ø/V 13 kort pr. spiller Meld antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding For mange stikk: overstikk. For få stikk: beit*. Utgang: 3+ grand, 4+ spar/hjerter, 5+ kløver/ruter

67 Oppgave b) To inn, én ut Returner er det en utgang laget har klart? Er utgang meldt? Er meldingen klart? To lag: N/S og Ø/V 13 kort pr. spiller Meld antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding For mange stikk: overstikk. For få stikk: beit*. Utgang: 3+ grand, 4+ spar/hjerter, 5+ kløver/ruter

68 Oppgave c) To lag: N/S og Ø/V 13 kort pr. spiller Meld antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding For mange stikk: overstikk. For få stikk: beit*. Utgang: 3+ grand, 4+ spar/hjerter, 5+ kløver/ruter

68 Oppgave c) To lag: N/S og Ø/V 13 kort pr. spiller Meld antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding For mange stikk: overstikk. For få stikk: beit*. Utgang: 3+ grand, 4+ spar/hjerter, 5+ kløver/ruter I beit: -50*<antall trekk unna>

68 Oppgave c) To lag: N/S og Ø/V 13 kort pr. spiller Meld antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding For mange stikk: overstikk. For få stikk: beit*. Utgang: 3+ grand, 4+ spar/hjerter, 5+ kløver/ruter I beit: -50*<antall trekk unna> Ellers: <poeng pr trekk>*<antall trekk> + <bonus>

68 Oppgave c) To lag: N/S og Ø/V 13 kort pr. spiller Meld antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding For mange stikk: overstikk. For få stikk: beit*. Utgang: 3+ grand, 4+ spar/hjerter, 5+ kløver/ruter I beit: -50*<antall trekk unna> Ellers: <poeng pr trekk>*<antall trekk> + <bonus> <poeng per trekk> varierer med trumf

68 Oppgave c) To lag: N/S og Ø/V 13 kort pr. spiller Meld antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding For mange stikk: overstikk. For få stikk: beit*. Utgang: 3+ grand, 4+ spar/hjerter, 5+ kløver/ruter I beit: -50*<antall trekk unna> Ellers: <poeng pr trekk>*<antall trekk> + <bonus> <poeng per trekk> varierer med trumf <bonus> varierer med utgangstype og grand

69 Oppgave d) To lag: N/S og Ø/V 13 kort pr. spiller Meld antall stikk (et tall) og trumf (en tekst) Gyldige meldinger: 1 kløver - 7 grand Antall stikk = antall trekk + 6 Meldingsformat: <trekk> <trumf> Kontrakt: høyeste melding For mange stikk: overstikk. For få stikk: beit*. Utgang: 3+ grand, 4+ spar/hjerter, 5+ kløver/ruter I beit: -50*<antall trekk unna> Ellers: <poeng pr trekk>*<antall trekk> + <bonus> poeng per trekk varierer med trumf bonus varierer med utgangstype og grand