IT 2 - Teori

Programmering

Løsningsskisser

19.04.12

Forslag til løsninger er farvet rødt.

1)

Deklarer variabler som skal inneholde:

  1. Teksten: (Med linjeskift)
    Å deklarere en variabel vil i praksis si å be datamaskinen
    om å sette av plass til variabelens innhold i minnet og gi
    denne plassen navnet til variabelen.
  2. Tallet 3.14159
  3. En tabell som inneholder tallene 3, 11, 14, 23, 49, 31
  4. En todimensjonal tabell som inneholder:
    3 11 14 23
    49 31 77 17

a)

var tekst: String = "Å deklarere en variabel vil i praksis si å be datamaskinen\n" +

                    "om å sette av plass til variabelens innhold i minnet og gi\n" +

                    "denne plassen navnet til variabelen.\n";

b)

var pi: Number = 3.14159;

c)

var tabell: Array = [3,11,14,23,49,31];

d)

var tabell2d: Array = [ [3,11,14,23],

                        [49,31,77,17] ];

2)

Skriv en for-sløyfe som finner det minste av tallene i tabellen i 1 c)

var min: Number = Number.MAX_VALUE;

for (i = 0; i < tabell.length; i++) {

   if (tabell[i] < min) {

      min = tabell[i];

   }//if

}//for

trace("Minimum var: "+min); 

3)

Fyll ut det som mangler i koden som følger, hvis hensikten er å finne gjennomsnittet av tallene i den todimensjonale tabellen i 1d:

var sum: Number = 0.0; 			// Sum som oppdateres etter hvert. (Beklager trykkfeil her!)

for(var rad: int = 0; rad <2; rad++) {  // For hver rad

   for(var kolonne: int = 0; kolonne < 4; kolonne++) { //for hver kolonne

      sum += tabell2d[rad][kolonne];

   }//for hver kolonne

}//for hver rad

trace("Gjennomsnittet ble: "+sum/8);

4)

Vi har deklarert variablene:


var a: Number = 3.22;

var b: Number = 4.54;

var c: String = "3.22";

var d: String = "4.54";
Beskriv nøyaktig hva som blir tilordnet variabelen resultat hvis disse instruksjonene utføres:
a) resultat = a + b;		resultat blir 7.76
b) resultat = int(b);           resultat blir 4
c) resultat = "" + a;           resultat blir "3.22"
d) resultat = c + d;            resultat blir "3.224.54"
e) resultat = a.toFixed(1);     resultat blir "3.2"

4)

Body Mass Index, BMI er definert som BMI = vekt/høyde2, der vekt regnes i kg. og høyde i meter.

Skriv en instruksjon som regner ut BMI hvis høyden ligger i en variabel hoyde og vekten i en variabel vekt.
Resultatet skal legges i en variabel med navnet bmi.

var bmi: Number = vekt/(hoyde*hoyde);

5)

I et program som brukes på et helsestudio blir utregningen av BMI (se 4) )gjort mange steder i programmet, så det ville være en fordel å legge den koden du laget i 4) i en egen funksjon.

(En funksjon/metode er et delprogram som tar imot en eller flere variabler, gjør noe med dem og returnerer et resultat.
La oss si at vi skulle finne ut hvilken av to tall-variabler som inneholder det største tallet. Da kunne vi laget denne funksjonen:

function maks( vartall1: Number, tall2: Number): Number {

   if( tall1>=tall2) {

      return tall1;

   }else {

      return tall2;

   }//if

}//maks()

    

Skriv en funksjon, med navnet beregnBMI, som tar imot parameterne hoyde og vekt og returnerer BMI.

function beregnBMI(hoyde: Number, vekt: Number ): Number {

    return vekt/(hoyde*hoyde);

}//beregnBMI

6)

La oss si at vi har laget et program BMI med et brukergrensesnitt som ser omtrent slik ut:

Vi forutsetter at dette allerede er laget ferdig:

Inntastingsfeltene er av typen TextInput og har navnene vektTi og hoydeTi.
Resultatfeltet er av typen TextField og har navnet bmiTf.
Beregnknappen er av typen button og har navnet beregnBtn.

a) Skriv kode som henger lytterfunksjonen beregnKlikket på knappen beregnBtn.

beregnBtn.addEventListener(MouseEvent.CLICK,beregnKlikket);

b) Skriv koden for lytterfunksjonen beregnKlikket. Denne lytterfunksjonen skal hente vekt og høyde fra brukergrensesnittet, regne ut BMI ved hjelp av funksjonen beregnBMI (se 5) ) og legge en melding i bmiTf.
Denne meldingen skal være en av disse tre:
Hvis BMI er mindre enn 18.5, skal meldingen være "Undervektig".
Hvis BMI er større enn 25, skal meldingen være "Overvektig".
Hvis BMI er mellom 18.5 og 25, skal meldingen være "Normalvekt".

function beregnKlikket(evt: Event): void {

    var vekt: Number = Number(vektTi.text);     // Konverterer til tall

    var hoyde: Number = Number(hoydeTi.text);   // Konverterer til tall

    var bmi: Number = beregnBMI(hoyde, vekt);   // Bruker funksjonen beregnBMI(...)

    if(bmi < 18.5) {                            // Velger blandt tre muligheter

        bmiTf.text = "Undervektig";             // Setter resultatfeltet

    } else if(bmi >25) {

        bmiTf.text = "Overvektig";

    } else {

        bmiTf.text = "Normalvekt";

    }//if

}//beregnKlikket()

7)

Deklarer en assosiativ tabell med navnet varelager, som inneholder informasjonen i denne tabellen:

  Hammer Skrutrekker
Varenummer 1013 1014
Pris 97.50 47.50
var varelager: Object = {

                          Hammer:      { Varenummer: 1013, Pris: 97.50 },

                          Skrutrekker: { Varenummer: 1014, Pris: 47.50 }

                        }//varelager

8)

Innholdet i tabellen

  Spidsbergseter Rondablikk RondaneSPA
epost post@sgh.no post@rondablikk.no post@rondane.no
tlf 61 28 40 00 61 29 49 40 61 20 90 90
temp [-5,-3,-5, -3, -2, 0] [-8, -5, -5, -3, -3, -3] [-10, -8, -8, -5, -5, -4]

kan legges i en xml-fil:

<data>

   <hotell navn="Spidsbergseter">

      <epost>post@sgh.no</epost>

      <tlf>61 28 40 00</tlf>

      <tmp>-5</tmp>

      <tmp>-3</tmp>

      <tmp>-5</tmp>

      <tmp>-3</tmp>

      <tmp>-2</tmp>

      <tmp>-0</tmp>

   </hotell>

   <hotell navn="Rondablikk">

      <epost>post@rondablikk.no</epost>

      <tlf>61 29 49 40</tlf>

      <tmp>-8</tmp>

      <tmp>-5</tmp>

      <tmp>-5</tmp>

      <tmp>-3</tmp>

      <tmp>-3</tmp>

      <tmp>-3</tmp>

   </hotell>

   ...                              //Her fortsetter det med flere hoteller

</data>

eller direkte i en variabel på denne måten:

var hotellinfo: XML =
<data>

   <hotell navn="Spidsbergseter">

      <epost>post@sgh.no</epost>

      <tlf>61 28 40 00</tlf>

      <tmp>-5</tmp>

      <tmp>-3</tmp>

      <tmp>-5</tmp>

      <tmp>-3</tmp>

      <tmp>-2</tmp>

      <tmp>-0</tmp>

   </hotell>

   <hotell navn="Rondablikk">

      <epost>post@rondablikk.no</epost>

      <tlf>61 29 49 40</tlf>

      <tmp>-8</tmp>

      <tmp>-5</tmp>

      <tmp>-5</tmp>

      <tmp>-3</tmp>

      <tmp>-3</tmp>

      <tmp>-3</tmp>

   </hotell>

   ...                              //Her fortsetter det med flere hoteller

</data>

Skriv kode som går inn i XML-strukturen og

a) skriver ut epost-adressen til hotellet med navn RondaneSPA

trace( "E-post: " + hotellinfo.hotell.(@navn=="RondaneSPA").epost );

b) skriver ut telefon-nummeret til hotellet med navn RondaneSPA.

trace( "Telefon: " + hotellinfo.hotell.(@navn=="RondaneSPA").tlf );

c) skriver ut gjennomsnittet av de seks oppgitte temperaturene (siste 6 dager) til hotellet med navn RondaneSPA.

var sum: Number = 0.0;

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

   sum += hotellinfo.hotell.(@navn=="RondaneSPA").tmp[i];

}//for

trace("Gj.sn. temperatur: " + (sum/6) );

 

9)

Skriv en klasse Tabelloperasjoner som skal finne største, minste, sum, antall, gjennomsnitt av en oppgitt tabell slik dette UML diagrammet viser:

( Poenget er at når denne klassen er laget, så kan vi gjøre for eksempel dette:

var temperaturer: Array = [13,13,14,14,14,15,15,16,16,17,16,15];
tabop: Tabelloperasjoner = new Tabelloperasjoner();
trace( "Summen ble: "+tabop.getSum(temperaturer) );

trace( "Makstemperaturen er: "+tabop.getMaksimum(temperaturer) );        )
package {

	

	/*  Klasse med interface:

		        getMaximum(tab:Array):Number

			getMinimum(tab:Array):Number

			getSum(tab:Array):Number

			getGjennomsnitt(tab:Array):Number

	*/

	

	public class  Tabelloperasjoner {

		

		private var n:int	= 0;

		private var i:int 	= 0;

		

		public function getMaximum(tab: Array):Number {

			n = tab.length;

			var maks:Number = Number.MIN_VALUE;

			for (i = 0; i < n; i++) {

				if (tab[i] > maks) {

					maks = tab[i];

				}//if

			}//for

			return maks;

		}//getMaximum()

		

		public function getMinimum(tab: Array):Number {

			n = tab.length;

			var min:Number = Number.MAX_VALUE;

			for (i = 0; i < n; i++) {

				if (tab[i] < min) {

					min = tab[i];

				}//if

			}//for

			return min;

		}//getMinimum()

		

		public function getSum(tab: Array):Number {

			n = tab.length;

			var sum: Number = 0.0;

			for (i = 0; i < n; i++) {

				sum += tab[i];

			}//for

			return sum;			

		}//getSum()

		

		public function getGjennomsnitt(tab: Array): Number {

			return getSum(tab)/n;	

		}//getGjennomsnitt()

	

	}//class

	

}//package