Løsningsskisser
I alle oppgavene skriver dere nødvendig kode og tekst-svar og legger i .txt-filer.
Deklarer variabler som skal inneholde:
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} }// infoDa 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
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);
Skriv kode som lister ut innholdet i tabellen i 1d) omtrent slik:
Navn: Telefon: Olsen 90111111 Hansen 90222222 Ferkenberg 90333333var 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
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);
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()
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
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.
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
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 SPAhotellinfo.hotell.(@navn=="Rondablikk").epost //gir epost til Rondablikkfor(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
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