Prøve IT2 - Kapittel 3,4 og 5

Løsningsskisser

26.01.15

1.

Deklarer en tabell-variabel (array) med navn navne_tabell som inneholder navnene:

Ferkenberg, Woxholdt, Snytenstrup, Hattek og Dusterud.

 

var navne_tabell: Array = 
   ["Ferkenberg", "Woxholdt", "Snytenstrup", "Hattek", "Dusterud"];

2.

Skriv instruksjonen som sorterer tabellen i oppgave 1 alfabetisk.

 

navne_tabell.sort();
(Obs: Hvis numerisk må vi bruke ...sort(Array.NUMERIC); )

3.

En tabell med navn temperaturer inneholder måledata med datatype Number.

Skriv kode som finner gjennomsnittsverdien av måleverdiene i tabellen og legger resultatet
i en variabel med navn gjennomsnittstemperatur.

 

var sum: Number = 0.0;
for(var i: int = 0; i<temperaturer.length; i++) {
   sum += temperaturer[i];
}//for
gjennomsnittstemperatur = sum/temperaturer.length;

4.

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

1
2 2
3 3 3
4 4 4 4
5 5 5 5 5

 

var s: String = "";
for(var i: int = 1; i <= 5; i++) {
	s = "";
	for(var j:int = 1; j <= i; j++){
		s += i + " ";
	}// for j
	trace(s);
}//for i

5.

I en quiz-applikasjon har vi en tabell (array),

var svar_tabell: Array = [true, true, false, ..., true];

tabellen svar_tabell inneholder Boolske verdier som angir om en bruker har svart riktig eller ikke
på et spørsmålsnummer.
(Første element i tabellen gjelder første spørsmål, andre element i tabellen gjelder andre spørsmål, osv.)

Skriv kode som er nødvendig for å finne ut hvor mange riktige svar en bruker har ut fra en slik tabell
og legg antall riktige svar i en variabel med navn antall_riktige.

 

var sum: int = 0;
for(var i: int = 0; i < svar_tabell.length; i++) {
   if( svar_tabell[i] ) { 
      sum++;
   }// if
}// for
antall_riktige = sum;
Kommentar:
Ser litt klønete ut å skrive:
	if (svar_tabell[i]==true) {...

 

6.

Skriv en while-løkke som multipliserer alle like tall (partall) fra og med 2 til og med 1000 med hverandre
og skriver ut resultatet med trace()-kommandoen.

 

// Bruker Number, da produktet fort blir større enn int.MAX_VALUE:
var produkt: Number = 1;	// Må være 1, ikke 0!
var partall: uint = 2;
// Bruker 100, da 1000 gir produkt større enn Number.MAX_VALUE:
while( partall <= 100) { 
	produkt *= partall;
	partall += 2;
}// while
trace(produkt);		// Gir verdien: 3.42 e+79 !

7.

Gitt tabellen

var bruktbiler: Array =
	[ { merke: "Volvo", farve: "Blå", pris: 110},
	  { merke: "Fiat" , farve: "Rød", pris: 160},
	  { merke: "Lada" , farve: "Rustrød", pris: 68},
	  { merke: "Renault", farve: "Hvit", pris: 100} ];

Skriv kode som endrer prisen på Lada-en til 55.

Skriv kode som sorterer denne tabellen alfabetisk på merkenavn.

Skriv kode som finner samlet verdi av alle bilene i en slik tabell

 

a) bruktbiler[2]["pris"] = 55;	
	Eller: bruktbiler[2].pris = 55;
b) bruktbiler.sortOn("merke");
c) 
var verdi: int = 0;
for(var i: int = 0; i < bruktbiler.length; i++) {
   verdi += bruktbiler[i]["pris"];  
          // eller: verdi += bruktbiler[i].pris;
}//for
trace(verdi);	// gir: 438 (etter endringen i a) )

8.

Gitt en todimensjonal avstandstabell:

0 22 41 71 113
22 0 21 51 93
41 21 0 30 72
71 51 30 0 43
113 93 72 43 0

og en endimensjonal tabell:

   var sted: Array = ["arendal", "grimstad", "lillesand", "kristiansand","mandal"];

der "arendal" har indeks 0, "grimstad" har indeks 1 osv. i avstandstabellen. (Helt likt eksemplet i kapittel 5 Arrayer i læreboken.)

Skriv kode som finner avstanden mellom to av disse stedene, der stedsnavnene er hentet fra brukergrensesnittet og ligger i
variabler med navn fra_sted og til_sted

var fra_indeks: int = sted.indexOf(fra_sted);
var til_indeks: int = sted.indexOf(til_sted);
var avstand: int = 0;
if ( (fra_indeks >= 0) && (til_indeks >= 0) ){ //Bør sjekke litt...
   avstand = avstandstabell[fra_indeks][til_indeks];
} else {
   avstand = -1;
}//if

Del 2 - Praktisk

Leveres i It's Learning-mappen "Prøve 26.01.15 - Praktisk" - Alle hjelpemidler

Sjakk-entusiastene Ferkenberg, Woxholdt og Snytenstrup har hatt en sjakk-turnering
og IT-entusiasten Ferkenberg har laget et Flashprogram der resultatene ligger i tabellen:

var resultater: Array = [ [ "","H","R"],
                          ["S","","S"],
                          ["S","R",""] ];

Som figur:

"" "H" "R"
"S" "" "S"
"S" "R" ""

og navnene i tabellen:

var deltagere: Array = ["Ferkenberg", "Woxholdt", "Snytenstrup" ];

Eksempelvis betyr første raden i tabellen resultater at:

Ferkenberg har hatt hvite brikker mot Woxholdt og Snytenstrup og har
vunnet mot Woxholdt og spilt remis (uavgjort) mot Snytenstrup.

Andre raden betyr at:

Woxholdt har hatt hvite brikker mot Ferkenberg og Snytenstrup og har
tapt mot begge.

Lag et program med grensesnitt omtrent som i figuren:

hvor brukeren oppgir navnet på spiller med hvite brikker, spiller med sorte
brikker og resultatet.
Når brukeren trykker knappen "Legg inn", skal programmet legge resultatet
inn i tabellen resultater.

Hvis du rekker det kan du også skrive kode som regner sammen poengsummene
til en av spillerne, der spilleren får 0 for tap, 1 for remis (uavgjort) og 2 for seier.

/*
   GUI:
      hvit_tf, sort_tf, resultat_tf : TextField
      legg_inn_btn: Button
*/
/// --- GUI --- ///
legg_inn_btn.addEventListener(MouseEvent.CLICK, legg_inn_btn_Trykket); 
function legg_inn_btn_Trykket(evt: MouseEvent):void {
   var spiller_hvit: String = hvit_tf.text;
   var spiller_sort: STring = sort_tf.text;
   var hvit_indeks: int = deltagere.indexOf(spiller_hvit);
   var sort_indeks: int = deltagere.indexOf(spiller_sort);
   resultater[hvit_indeks][sort_indeks] = resultat_tf.text;
   trace(resultater);
}//legg_inn_btn_Trykket()
/// --- Datastruktur --- ///
var resultater: Array = 
      [[ "", "H", "R"],
       ["S", "", "S"],
       ["S", "R", ""]];
var deltagere: Array = 
      ["Ferkenberg", "Woxholdt", "Snytenstrup"];
Utregning av poengsum: (Legger dette i en funksjon, siden vi for tiden holder på med funksjoner)
function finnPoeng(spiller: String): int {
   var poeng: int = 0;
   var spiller_indeks = deltagere.indexOf(spiller);
   // Poeng som hvit:
   for(var kol: int = 0; kol < resultater[spiller_indeks].length;kol++) { 
      if(resultater[spiller_indeks][kol]=="H") {
         poeng+=2;
      }else if(resultater[spiller_indeks][kol]=="R") {
         poeng+=1;
      }// if
   }// for kolonner/motspillere med svart
   // Poeng som sort:
   for(var rad: int = 0; rad < resultater.length; rad++) {  
      if(resultater[rad][spiller_indeks]=="S") {
         poeng+=2;
      }else if(resultater[rad][spiller_indeks]=="R") {
         poeng+=1;
      }// if
   }// for rader/motspillere med hvit
   return poeng;
}// finnPoeng()