HØGSKOLEN I SØR-TRØNDELAG

Like dokumenter
HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring AITeL

Visual Basic. Repetisjon fra onsdag

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG

TDT4100 Objektorientert programmering

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.

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Algoritmer og Datastrukturer

HØGSKOLEN I SØR-TRØNDELAG

Øvingsforelesning 1 Python (TDT4110)

Obligatorisk oppgave 1 INF1020 h2005

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

HØGSKOLEN I SØR-TRØNDELAG

Løsningsforslag Eksamen i Programmering i Visual Basic høsten 2003 Laget av Runar Munkhaug

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

1. Rullende navn, s 3 2. Smilefjes, s 5 3. Skritteller, s 7 4. Orakel, s 9 5. Stein, saks og papir, s Kompass, s 14

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Abaris-notat Teknisk beskrivelse av kodeverkskomponent for ICPC-2

Øvingsforelesning TDT4105

Løpende strekmann Erfaren Videregående Python PDF

Fasit til eksamen høst 2002, applikasjonsutvikling

Eksamen i. Høst 2013

GUI («Graphical User Interface») del 2

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

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.

Høgskoleni østfold EKSAMEN. Emne: Innføring i programmering

GUI («Graphical User Interface») del 2

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

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

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG

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

Informasjon Eksamen i IN1000 høsten 2017

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG

1. NetBeans IDE: Lage en enkel mobilapplikasjon

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Innføring i bruk av CGI4VB

UNIVERSITETET I OSLO

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

PGZ - Hangman Ekspert Python Lærerveiledning

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

EKSAMEN ITF Webprogrammering 1 Dato: Eksamenstid: Hjelpemidler: 2 A4 ark (4 sider) med egenproduserte notater (håndskrevne/maskinskrevne)

Hjelpemidler: 4 A4-sider (2 to-sidige ark eller 4 en-sidige ark) med egenproduserte notater (håndskrevne/maskinskrevne)

HØYSKOLEN I OSLO, AVDELING FOR INGENIØRUTDANNING

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID:

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

Informasjon Prøveeksamen i IN1000 høsten 2018

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

lfæ~~~~:::j~~:~l -.~=:~-t::-d I Alle trykte og håndskrevne EKSAMENSOPPGA VE Side l av 5 Eksamenstid:

HØGSKOLEN I SØR-TRØNDELAG

Forkurs i informatikk Python. Andreas Færøvig Olsen

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Steg 1: Tekst på flere linjer

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Finne ut om en løsning er helt riktig og korrigere ved behov

Høgskoleni østfold EKSAMEN

Innføring i bruk av CGI4VB

Algoritmer og Datastrukturer

HØGSKOLEN I SØR-TRØNDELAG

Visual Basic. Repetisjon fra mandag

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

Sprettball Erfaren ComputerCraft PDF

Transkript:

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 15.desember 2006 Varighet: Fagnummer: Fagnavn: 09.00 13.00 (4 timer) LO116D og LN116D Programmering i Visual Basic Klasse(r): FU 1BABED Studiepoeng: 6 Faglærer: Svend Andreas Horgen tlf: 73 55 92 69 Grethe Sandstrak, tlf: 73 55 95 61 Kursassistent: Siri Wæhre Lien tlf: 73 55 91 54 Hjelpemidler: Oppgavesettet består av: Alle skriftlige hjelpemidler 3 oppgaver og totalt 4 sider (inkludert forsiden). Viktig: Planlegg tiden godt (4 timer). Dersom noe virker uklart i oppgavene, må du selv gjøre de nødvendige antakelser og få med disse i besvarelsen. Det står angitt vekting på hver oppgave. Det skal hjelpe deg med å prioritere og fordele tiden riktig. Innenfor de ulike oppgavene kan det være ulik vekting på delspørsmålene. Denne interne vektingen er ikke oppgitt. Lykke til! Side 1 av 5

Oppgave 1 Litt teori (10%) Hva legger vi i begrepene hendelse, egenskap og datatype? Oppgave 2 Et større program (60%) Du skal lage et lite spill som heter Tripp-trapp-tresko. Dette spillet har et grensesnitt hvor brukeren kan klikke i en rute, og da settes en X ut. Neste gang brukeren klikker, settes en O ut (altså annenhver gang X og O). En kan enten spille mot seg selv, eller sitte ved siden av en venn og klikke annenhver gang. Hensikten er å få tre på rad, der både horisontal og vertikal retning aksepteres (men ikke skrå). Dersom ingen får tre på rad, blir det uavgjort. Figur 1: Etter å ha tenkt seg lenge om, setter spiller X sitt tredje kryss i øverste venstre hjørne og er i ferd med å utklasse O. Stakkars O... Anta at grensesnittet er laget. Dette består av 9 tekstbokser, navngitt fortløpende som rute1, rute2, rute3, rute4 og så videre, der rute4 er første rute i andre rad. Du skal nå svare på spørsmålene: a) Beskriv med egne ord hva du ville gjort for å få til at en X blir plassert ut når det er X sin tur, og en O plassert ut når det er O sin tur (annenhver gang)? Det skal heller ikke være lov å endre en verdi som allerede er plassert ut (det er juks :-) Diskuter implementasjonen så detaljert du mener det er nødvendig, men du trenger ikke å skrive noe kode i denne deloppgaven. SVAR: Boolsk variabel som bytter for hvert klikk som plasseres ut. Må være global. Onclick i hver rute kjører en if-test som sjekker tilstand i boolsk variabel, og deretter sørger for at riktig tegn plasseres ut. Må altså skrive 9 onclick-prosedyrer som er helt like. Bør lage en generell funksjon finntegn() som finner ut hvilket tegn som skal plasseres ut. Da slipper en å gjenta koden for alle 9 hendelsesprosedyrene. Side 2 av 5

For å hindre juks, kan en sjekke at ruten ikke har innhold, typisk if rute1.text <> then msgbox( ruten har allerede innhold ) b) Det er ønskelig å representere tilstanden på spillbrettet i en matrisestruktur. Hvilken matrisestruktur vil du bruke i dette tilfellet? Hvorfor? Skriv kode for å opprette valgt struktur og begrunn/forklar hvor i programmet du vil plassere denne koden. SVAR: todimensjonal matrise. Private mat(2,2) as String Global, plasseres øverst fordi mange knapper og prosedyrer skal gjøre bruk av matrisen c) Lag en prosedyre som leser tilstanden på spillbrettet slik det er akkurat nå og fyller matrisestrukturen din med tilsvarende innhold. Skriv koden og navngi prosedyren lesbrett. SVAR: Private Sub lesbrett() mat(0,0) = rute1.text mat(0,1) = rute2.text og så videre... End Sub d) Hva må du gjøre for å sikre at matrisestrukturen din til enhver tid har nøyaktig samme innhold som spillbrettet brukeren ser? SVAR: Kalle prosedyren lesbrett() i hver av de 9 onclick-prosedyrene. e) Se på følgende kode: Private Function vinner(type as String) as Boolean Dim vinn as Boolean = false For i = 0 to 2 If sjekkrad(i, type) OR sjekkkolonne(i, type) Then vinn = true End If Next i Return vinn End Function Private Sub Button_Vinner_Click(...) If vinner("x") Then MsgBox ("Spiller X vant") ElseIf vinner("o") MsgBox ("Spiller O vant") Else MsgBox ("Ingen vinner enda") End If End Sub Skriv nå koden for funksjonene sjekkrad og sjekkkolonne slik at klikk på knappen Button_Vinner_Click(...) sjekker hvem som har vunnet spillet (hvis noen). SVAR: Må forstå koden og klare å lage riktig kode i funksjonene. Det ser lett ut men tester forståelsen på et dypere plan. Sjekk argumentene. Må forstå at det er matrisen som skal gjennomgås, det er der symbolene ligger. Koden for rad og kolonne er nesten lik. Side 3 av 5

Oppgave 3 Langtidslagring av informasjon (30%) Du kan gjøre oppgave 3 uten å få til oppgave 2, men må i så fall sette deg inn i problemstillingen først (se oppgave 2). I programmet hvor du skulle lage din versjon av Tripp-trapp-tresko, ble spillbrettet lagret i en matrisestruktur. Anta at Per spiller mot sine venner, både Lise, Ole, Anton og Berit. Av og til er Per spiller X, og av og til er Per spiller O. Før spillet begynner, velger Per hvem han vil være (X eller O), og den personen han spiller mot, blir selvsagt den andre spillertypen. Du skal nå lage kode som gjør det mulig å bruke systemet over tid. Implementer koden din slik at følgende krav er oppfylte. a) Anta at begge spillerne skriver inn navnet sitt før hvert spill begynner. Når en person vinner, skal informasjon om vinneren registreres på en fil eller i en database (du velger selv om du vil kode mot fil eller database i denne oppgaven). Du må ta vare på navn på personen som vant, om personen var X eller O, hvem personen spilte mot, og tidspunkt (bruk enkel dato-funksjonalitet). Lag kode for dette og skisser (tegn) hvordan lagringsstrukturen din ser ut. Svar: Typisk må Ole X Kari 5.jan.2007 Ole vant lagres Lagring på fil (sekvensiell) vises her: 'antar at spiller og motstander og spillertype (typexo) 'ligger i globale variabler som er 'lest inn av en annen rutine rett før spillet startet Dim dagens_dato As Date Dim info as String info = spiller & " " & typexo & " " & motstander info = info & " " & dagens_dato & " " if vinner(typexo) then info &= spiller & " vant" else info &= motstander & " vant" end if 'Åpner fil for skriving: FileOpen(1, "resultater.txt", OpenMode.Append) 'skriver informasjon til fil PrintLine(1, info) 'Fil lukkes når vi er ferdig med den. FileClose(1) b) En skal kunne velge navn og type spiller (X eller O) fra to ulike nedtrekkslister, og deretter skal systemet kunne finne ut hvor mange ganger valgt kombinasjon av person+type har vunnet (f.eks hvor mange ganger Lise har vunnet som X). Lag kode for dette. Side 4 av 5

Svar: Pseudokode: Les navn fra nedtrekksliste (Lnavn) Les spillertype fra nedtrekksliste (Ltype) Åpne fil Gå gjennom fil linje for linje Trekk ut informasjon fra fil, for eksempel med split Hvis navn = Lnavn OG spillertype = Ltype Øk teller Skriv ut resultatet: Lnavn vant som Ltype teller ganger c) Tekstspørsmål: Hva må til for å lage en grafisk statistikk over hvor mange ganger totalt de ulike personene har vunnet? Beskriv såpass detaljert at det er kort vei til implementasjon med VB-kode. Svar: Pseudo som er mye mindre detaljert enn det de skulle gjøre (anse dette som rettledning, ikke fullstendig løsning) Må gjennomløpe fil for hver person, for eksempel 3 gjennomløpinger dersom det er 3 personer totalt i systemet Samle opp antall seire (uavhengig av X og O). Tegn grafikk som tilsvarer antallet, enten med grafiske kommandoer eller ved å skalere et bilde eller liknende Alternativt kan en gjennomløpe filen én gang og bygge opp en matrise assosiativt, men dette har de ikke lært i faget og det kan være vanskelig å forstå. Side 5 av 5