Prøve IT 2 - 23.01.2014


Del 1 - Uten hjelpemidler:

1.

Skriv kode som summerer alle tallene fra og med 1 til og med 1500.

/* 23.01.14 - Del 1 - Oppgave 1 */
var sum: int = 0;

for(var i:int = 1; i <= 1500; i++) {

	sum += i;

}

trace("Summen 1+2+...+1500 = " + sum);



// Output:

// Summen 1+2+...+1500 = 1125750

2.

Skriv kode som simulerer 600 terningkast og regner ut gjennomsnittlig antall øyne i de 600 kastene.

/* 23.01.14 - Del 1 - Oppgave 2 */
var sum: Number = 0.0;

for(var i: int = 0; i < 600; i++) {

	sum += int(Math.random()*6)+1;

}

var gs: Number = sum/600;

trace("Gjennomsnitt 600 terningkast: " + gs);



// Output:

// Gjennomsnitt 600 terningkast: 3.4766666666666666  

3.

Skriv kode med for-løkke som skriver ut dette mønsteret i Output-dialogen i Flash:

***********

 *********

  *******

   *****

    ***

     *
Se String-funksjoner side 127:
/* 23.01.14 - Del 1 - Oppgave 3 */
var stjerner: String = "***********";

var blanke:   String = "";



var i: int = 0;



for(i=0;i<6;i++) {	//For hver linje, 6 linjer

	stjerner=       //Fjern to siste for hver linje

              stjerner.substring(0,11-2*i);	

	blanke += " ";	//Legg til blanke for hver linje

	trace(blanke+stjerner);

}//for

4.

Vi har en tabell (Array) med navn personer som har innhold tilsvarende deklarasjonen:

var personer: Array = ["Woxholdt", "Ferkenberg", "Snytenstrup", "Dusterud", "Luresen", "Freksnes"];

Brukeren av et program med denne tabellen har skrevet et navn som programmet har lagt i variabelen navn.
Skriv en instruksjon som finner plasseringen av det skrevne navnet i tabellen personer og legger resultatet i variabelen indeks.

Se array-funksjoner side 97:
var indeks:int = personer.indexOf(navn);

5.

Vi har en variabel som inneholder stilkarakterene til fem dommere i en skihopp-konkurranse:

var stilkarakterer: Array = [17.0, 17.5, 18.0, 18.5,19.0];

a) Skriv kode som sorterer tabellen stilkarakterer i stigende rekkefølge.

b) Skriv kode som etter sorteringen i a) finner største og minste verdi i stilkarakterer og legger verdiene
i variablene minst og storst.

I hoppsporten gir fem dommere stilkarakter og stilpoengene er summen av stilkarakterene
etter at laveste og høyeste gitte stilkarakter er trukket fra.

d) Skriv kode som legger ferdig utregnet stilpoeng i variabelen stilpoeng.

/* 23.01.14 - Del 1 - Oppgave 5 */
// a:

stilkarakterer.sort(Array.NUMERIC); 
// b:

var minst: Number = stilkarakterer[0];

var storst: Number = stilkarakterer[4]; 
// c:

var stilpoeng: Number = stilkarakterer[1]+stilkarakterer[2]+stilkarakterer[3];
// Eventuelt:
var sum: int = 0.0;
for(var i: int = 0; i < stilkarakterer.length; i++) {

   sum += stilkarakterer[i];

}
var stilpoeng: Number = sum - minst - storst;

6.

Vi har en variabel bestillinger, som inneholder assosiative array-er med informasjon om bestillinger.

Etter at kundene Ferkenberg, Woxholdt, Snytenstrup, Freksnes og Dusterud har bestilt det de skal ha,
ser tabellen slik ut:

var bestillinger: Array =  [ 

	

	{kunde: "Ferkenberg",  varenavn: "Dippedutt", pris: 77.99, antall: 1},

	{kunde: "Woxholdt",    varenavn: "Duppeditt", pris: 27.99, antall: 1},

	{kunde: "Snytenstrup", varenavn: "Dings"    , pris: 24.99, antall: 5},

	{kunde: "Freksnes",    varenavn: "Ting"     , pris: 56.99, antall: 3},

	{kunde: "Dusterud",    varenavn: "Greie"    , pris: 22.99, antall: 2}

	];

Skriv kode som finner totalverdien av disse bestillingene og legger i variabelen totalverdi.

 

/* 23.01.14 - Del 1 - Oppgave 6 */
var totalverdi: Number = 0.0;



for(var i:int = 0; i < bestillinger.length; i++) {

	totalverdi += bestillinger[i]["pris"] * bestillinger[i]["antall"];   

}

trace("Totalverdi: " + totalverdi);

// Output:

// Totalverdi: 447.88

Del 2 - Med hjelpemidler:

Du skal lage en vin-lotteri applikasjon, hvor vi forutsetter at hver deltager bare får lov til å kjøpe et lodd.

Første skjermbilde skal se omtrent slik ut og brukes til å registrere navn på de som har kjøpt et lodd:

Brukeren skriver inn navn og trykker på knappen "OK".

For å gå videre til trekningen trykker brukeren på knappen "OK", når tekstfeltet er blankt.

Andre skjermbilde skal vise resultatet trekningen applikasjonen skal gjøre automatisk og se omtrent slik ut:

Løsningsskisse:

Komponenter og rammer i Flash:

txtLoddtager: TextInput
btnOK: Button
txtResultat: TextArea (Kunne også bruke tre tekstfelt; txt1gevinst, txt2gevinst og txt3gevinst)
Resultat: Keyframe nummer 2

Planlegging av brukergrensesnitt:

Planlegging av datastruktur:

loddtagere: Tabell som lagrer registrerte navn i registreringsskjermbildet.

vinnere: Tabell som får tilført uttrukne vinnere i trekningen og brukes til å presentere resultatet i resultatskjermbildet.

Planlegging av programstruktur:

Pseudokode:

Lytterfunksjoner:

btnOk -> regLoddtager()	//Lytterfunksjon
regLoddtager():

   hvis txtLoddtager er tomt

      trekning()

      visResultat()

   ellers

      registrer loddtager

      rens txtLoddtager

Alternativ:

Ha lytter både på txtloddtager som lytter på ENTER og lytter på en Videre-knapp, slipper da if-testen på blankt felt:

txtLoddtager -> registrer()

btnVidere -> videre()
   registrer()

      registrer loddtager

      rens txtLoddtager
   videre()

      trekning()

      visResultat()

Undrprogrammer:

trekning(): 

   gjenta 3 ganger

      indeks = tilfeldig tall fra 0 til antall loddtagere-1

      legg navn fra trukket indeks i vinnere

      fjern celle med indeks fra loddtagere
visResultat():

   Gå til resultatskjermbilde

   Sett tekstfeltet med vinnernavn fra vinnere[0], vinnere[1] og vinnere[3]

Kode:

stop();


// Tabell med navn på loddtagere og vinnere:

var loddtagere: Array = [];

var vinnere: Array = [];
// Lytter på OK knapp:

btnOK.addEventListener(MouseEvent.CLICK,regLoddtager);
// Lytterfunksjon registrerer loddtager eller går videre

function regLoddtager(evt: Event): void {

   if(txtLoddtager.text.length == 0) {     // Hvis tekstfelt er tomt?

      trekning();	                          // Trekk vinnere

      visResultat();

   } else {

      loddtagere.push(txtLoddtager.text);  // Lagre inntasting i tabell

      txtLoddtager.text = "";              // Tøm tekstfelt

   //if

}//regLoddtager()
// Trekk ut de tre vinnerne uten tilbakelegging:

function trekning(): void {

   for(var i: int = 0; i <= 2; i++) {

      var indeks: int = int( Math.random()*loddtagere.length);   // Trekker en indeks 

      vinnere.push(loddtagere[indeks]);                          // Slår opp og lagrer vinner  

      loddtagere.splice(indeks,1);                               // Fjerner dette loddet

   }//for

}//trekning()
// Gå til resultatskjermbilde og vis resultatene

function visResultat(): void {

  gotoAndStop("Resultat");

   txtResultat.text = 

      "Første gevinst:   " + vinnere[0] + "\n"+   

      "Andre gevinst:    " + vinnere[1] + "\n"+

      "Tredje gevinst:   " + vinnere[2] + "\n";

}//visResultat()