IT 2 - Teori

Programmering

Løsningsskisser

15.03.12

I alle oppgavene skriver dere nødvendig kode og tekst-svar og legger i .txt-filer.

1)

Deklarer variabler som skal inneholde:

  1. Teksten:
    Å 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 10.32
  3. En tabell som inneholder tallene 1,6,3,4,9,8,7,2
  4. En assosiativ tabell som inneholder:
navn: Olsen Hansen Ferkenberg
epost: lorang.olsen@gmail.com ronny.hansen@online.no ernst.ferkenberg@stfk.no
tlf: 90111111 90222222 90333333
var tekst: String = "Å 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.";

var tall: Number = 10.32;

var talltabell: Array = [1,6,3,4,9,8,7,2];

var info: Object = {

                      Olsen:     { epost: "lorang.olsen@gmail.com",   tlf: 90111111},

                      Hansen:    { epost: "ronny.hansen@online.no",   tlf: 90222222},

                      Ferkenberg:{ epost: "ernst.ferkenberg@stfk.no", tlf: 90333333}  

                   }// info
Da kan man slå opp informasjon med:

    info["Hansen"]["epost"]             (eller: info["Hansen"].epost )

    info["Ferkenberg"]["tlf"]           (eller: info["Ferkenberg"].tlf )

    osv.

For å liste ut må man vite navnene på forhånd, se oppgave 3).
En annen mulighet (hvis utlisting er viktigere enn oppslag):
var info2: Array = [

                      {navn: "Olsen",      epost: "lorang.olsen@gmail.com",   tlf: 90111111},

                      {navn: "Hansen",     epost: "ronny.hansen@online.no",   tlf: 90222222},

                      {navn: "Ferkenberg", epost: "ernst.ferkenberg@stfk.no", tlf: 90333333} 

                   ]// info2



Lettere å liste ut med info2, se oppgave 3).

Må søke gjennom alle for å finne riktig navn og slå opp informasjon.

var n: int = info2.length;

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

   var o: Object = info2[i]; 

   if( info2[i].navn == "Hansen") {

      trace("n: "+o.navn+"ve: " + o.epost + " t: " + o.tlf);

   }//if

}//for

2)

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

var n: int = talltabell.length;

var sum: Number = 0.0;

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

   sum+=talltabell[i];

}//for

var gs: Number = sum/n;			trace("Gjennomsnitt: "+gs);

3)

Skriv kode som lister ut innholdet i tabellen i 1d) omtrent slik:


Navn:          Telefon:

Olsen          90111111

Hansen         90222222

Ferkenberg     90333333
var info: Object = {

                      Olsen:     { epost: "lorang.olsen@gmail.com",   tlf: 90111111},

                      Hansen:    { epost: "ronny.hansen@online.no",   tlf: 90222222},

                      Ferkenberg:{ epost: "ernst.ferkenberg@stfk.no", tlf: 90333333}  

                   }// info

trace("Navn:\t\tTelefon:");

trace("Olsen\t\t"+info["Olsen"]["tlf"]);

trace("Hansen\t\t"+info["Hansen"]["tlf"]);

trace("Ferkenberg\t\t"+info["Ferkenberg"]["tlf"]);

En annen mulighet (hvis utlisting er viktigere enn oppslag):

var info2: Array = [

                      {navn: "Olsen",      epost: "lorang.olsen@gmail.com",   tlf: 90111111},

                      {navn: "Hansen",     epost: "ronny.hansen@online.no",   tlf: 90222222},

                      {navn: "Ferkenberg", epost: "ernst.ferkenberg@stfk.no", tlf: 90333333} 

                   ]// info2

				  

var n: int = info2.length;

trace("Navn:\t\tTelefon:");

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

   var o: Object = info2[i]; 

   trace(info2[i].navn + "\t\t" + info2[i].tlf);

}//for

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( var tall1: 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.

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 resultatet i bmiTf.

beregnBtn.addEventListener(MouseEvent.CLICK,beregnBMI);



function beregnBMI(evt: Event): void {

   var vekt: Number = Number(vektTi.text);

   var hoyde: Number = Number(hoydeTi.text);

   bmiTf.text=""+beregnBMI(hoyde,vekt);

}//beregnBMI

7)

Hvis vi skal ha en nettbutikk som selger verktøy, vil det være en fordel å ha vareutvalget i en kstern xml-fil. Hvorfor er dette en fordel?

Endringer i varelager kan da ajourføres i den eksterne filen, uten å endre programmet.

8)

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

  Åpner Stenger
man_fre 08 23
lør 09 21
søn 10 18
var apningstider: Object = {

                              Åpner:   {man_fre: "08", lør: "09", søn: "10" },

                              Stenger: {man_fre: "23", lør: "21", søn: "18" }

                           }//apningstider

9)

Lag en xml-fil som inneholder informasjonen:

  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]
<hotellinfo>

   <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>

   <hotell navn="RondaneSPA">

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

      <tlf>61 20 90 90</tlf>

      <tmp>-10</tmp>

      <tmp>-8</tmp>

      <tmp>-8</tmp>

      <tmp>-5</tmp>

      <tmp>-5</tmp>

      <tmp>-4</tmp>

   </hotell>

</hotellinfo>
Eksempler på oppslag og beregninger (etter at filen er lastet til en variabel hotellinfo:XML):
hotellinfo.hotell.(@navn=="RondaneSPA").tlf	//gir telefon til Rondane SPA
hotellinfo.hotell.(@navn=="Rondablikk").epost	//gir epost til Rondablikk
for(var i:int = 0; i < hotellinfo.hotell.length(); i++) {

	trace(hotellinfo.hotell[i]);

	trace(hotellinfo.hotell[i].epost);

	trace(hotellinfo.hotell[i].tlf);

	for(var j:int=0;j<hotellinfo.hotell[i].tmp.length(),j++){

	   trace(hotellinfo.hotell[i].tmp[j]);

	}//for j

}//for i

10)

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