Prøve IT2 - Gruppe D

Fokus på kapitlene 3, 4, 5, 6 og 9.

15.03.13

Løsningsskisser


Teoretisk del av prøven:

Leveres på papir - Ingen hjelpemidler

1.

String.klassen har metodene, substr(fra-indeks,antall) og substring(fra-indeks, til-indeks) som kan plukke ut deler av en streng, med syntaksen:

substr(fra-indeks, antall tegn)
substring(fra-indeks, til-indeks)

Hvis variabelen streng inneholder tekststrengen "abcdefghijklmnopqrstuvwxyzæøå", vil eksempelvis

streng.substr(5,7) gi tekststrengen "fghijkl"
streng.substring(5,7) gi tekststrengen "fg"

Bruk en eller begge disse metodene og en for-sløyfe til å skrive kode som lager mønsteret:

*---------

**--------

***-------

****------

*****-----

******----

*******---

********--

*********-

**********
var stjerner: String = "**********";

var streker:  String = "----------";
for(var i:int = 0; i < 10; i++ ) {
   trace( stjerner.substr(0,i+1) + streker.substr(10-(i+1)) );    
}//for

2.

Bruk en av metodene substring eller substr til å lage en funksjon som returnerer endelsen i et filnavn.
Funksjonen skal starte slik:

function filEndelse(s: String): String 

og variabelen endelse skal etter instruksjonen:

var endelse: String = filEndelse("bilde017.jpg");

inneholde tekststrengen "jpg".

 

function filEndelse(s: String): String{

   var l: int = s.length;

   return s.substr(l-3,3);

}//filEndelse()

Eksempel på bruk/test:
var filnavn: String = "bilde017.jpg";
trace("Endelsen var: "+filEndelse(filnavn) );

3.

Deklarer en sammensatt tabell, med navn varelager, som inneholder informasjon som angitt i figuren:

Svarte ruter med skarpe hjørner er Array, blå ruter med avrundede hjørner er objekter (assosiative tabeller).

var varelager: Array = 

  [

	{

		varenr: 1172,

		pris:   [

				 17,

				 19,

				 23

		        ],

		antall:  111

	},

	{

		varenr: 1213,

		pris:   [

				 11,

				 12,

				 13

	                ],

		antall:  97

	},

	{

		varenr: 1311,

		pris:   [

				 45,

				 50,

				 55

	       	 ],

		antall:  42

	}	

  ];

4.

Tabellen i 3 er starten på en tabell som vi forutsetter inneholder et komplett varelager for en nettbutikk.

Pris-tabellen i egenskapen pris angir forskjellige priser på varen, avhengig av om kunden bestiller en enkelt, fra 2 til 10 stykker , eller over 10 stykker i samme bestilling.

Skriv kode som finner samlet verdi av hele varelageret, hvis vi regner med den laveste prisen på hver vare.

var verdi: Number = 0.0;



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

   verdi += varelager[i].pris[0] * varelager[i].antall;   

}//for



trace( "Verdien ble: "+verdi);

Del 2 - Praktisk del av prøven

Leveres i It's Learning-mappen "Leveringsoppgave 15.03.2013" - Alle hjelpemidler

Lag en Flash - applikasjon hvor brukeren må gjette på ett av tallene 1, 2 og 3. Dette skal skje ti ganger etter hverandre.

De tre tallene presenteres i radioknapper og brukeren går videre med en Neste-knapp.

Til slutt vises antall ganger brukeren har gjettet riktig tall.

Gjør alt så enkelt som mulig.

Det riktige tallet velges ved hjelp av funksjonen Math.random(), på omtrent denne måten:

var tilfeldig:int = int(3*Math.random()+1);

Skisse av løsning:

Lager en nøkkelramme.

Lag et tekstfelt med navn txtMelding med teksten: Gjett på et tall!

Lag tre radioknapper med navn rbAlt1, rbAlt2, rbAlt3 og label-verdier: "0", "1" og "2".

Lag en neste-knapp med navn btnNeste.

Skriv kode omtrent slik:

/// --- Datastruktur --- ///



var nr:    int = 0; 		// Nummer på runde

var fasit: int = lagFasit();     // Fasitsvar: 1, 2 eller 3

var antallriktige: int = 0;      // Antall riktige så langt



/// --- Oppsett, lyttere og funksjoner --- ///

stop();



btnNeste.addEventListener(MouseEvent.CLICK,nesteKlikket);





function nesteKlikket(evt: MouseEvent):void {

   fasit = lagFasit();		trace("Vi trakk tallet "+fasit+" i runde "+nr);   

   nr++;

   if( nr == 10 ) {		//Hvis ferdig, gi resultat

      txtMelding.text = "Du fikk: " + antallriktige + " riktige svar";

      btnNeste.enabled = false; //Spill ferdig

   } else {                     // Hvis ikke gi poeng:

      var svar:int = int( rbAlt1.group.selection.label);

      if( svar == fasit ) {

         antallriktige++;

      }//if

   }//if

}//nesteKlikket()





function lagFasit(): int {

   return int(3*Math.random()+1);

}//lagFasit()