Lag kode med for-løkke som skriver ut dette mønsteret i Output-dialogen i Flash:
*********** ********* ******* ***** *** *
Se String-funksjoner side 127:var stjerner: String = "***********"; var blanke: String = ""; var i: int = 0; for(i=0;i<6;i++) { //For hver linje, 6 linjer stjerner= //Fjern to siste for hver linje stjerner.substring(0,11-2*i); blanke += " "; //Legg til blanke for hver linje trace(blanke+stjerner); }//for
Vi har en variabel:
var navneliste: Array = ["Ferkenberg", "Woxholt", "Hattek", "Luresen", "Snytenstrup", "Hansen", "Jensen", "Olsen"];
Brukeren av et program med denne tabellen har skrevet et navn
som programmet har lagt i variabelen navn.
Skriv en instruksjon som finner plasseringen av det skrevne
navnet i tabellen navneliste
og legger resultatet i variabelen indeks.
Se array-funksjoner side 97:indeks = navneliste.indexOf(navn);
Vi har en variabel:
var talltabell: Array = [17.0, 17.5, 18.0, 18.5,19.0];a) Lag en funksjon som returnerer største tall i en slik tall-tabell, på formen
function maksimum(tabell: Array): Numberb) Lag en funksjon som returnerer summen av tallene i en slik tall-tabell, på formen
function sum(tabell: Array): Number
Mulige løsninger, med feilsjekking:function maksimum(tabell: Array): Number { var maks: Number = Number.MIN_VALUE; for(var i: int = 0; i < tabell.length; i++) { if( !isNaN(tabell[i]) ) { //Sjekker om vi har et tall if( tabell[i]>maks) { maks = tabell[i]; }//if ny maks //Hvis ikke ignoreres cellen }//if tall }//for return maks; }//maksimum()b)function sum(tabell: Array): Number { var s: Number = 0.0; for(var i: int = 0; i < tabell.length; i++) { if( !isNaN(tabell[i]) ) { //Sjekker om vi har et tall s += Number(tabell[i]); //Number() for å takle tall som String }//if //Hvis ikke tall ignoreres cellen }//for return s; }//sum()
Lag en funksjon som skal brukes i et krypteringsprogram, som
omformer en oppgitt String-variabel til en kryptert
String der bokstavene erstattes med indeksen til bokstavene i
denne tabellen:
var bokstaver: Array = ["i","j","k","l","m","n","o","p","q","r","a","b","c","d","e", "f","g","h","s","t","u","v","w","x","y","z","æ","ø","å"];(Vi ser bort fra store og små bokstaver.)
Funksjonen skal være på formen:
function omformMelding(melding: String): String
(Eksempelvis skal omformMelding("obama") returnere en String: "6,11,10,4,10".)
Se krypteringseksempel side 129:function omformMelding(melding: String): String { var resultat: String = ""; for(var i:int=0;i<melding.length;i++){ resultat += bokstaver.indexOf(melding.charAt(i)); if(i<(melding.length-1)){resultat += ",";} }//for alle bokstaver i melding return resultat; }//OmformMelding()
Vi har en variabel som har blitt laget av en bruker som har
bestillt en Dippedutt, en Duppeditt,
fem Dingser, tre Ting og to Greier, tilsvarende tabellen under:
var bestillinger: Array = [ {varenavn: "Dippedutt", pris: 77.99, antall: 1}, {varenavn: "Duppeditt", pris: 27.99, antall: 1}, {varenavn: "Dings" , pris: 24.99, antall: 5}, {varenavn: "Ting" , pris: 56.99, antall: 3}, {varenavn: "Greie" , pris: 22.99, antall: 2} ];
Lag en funksjon som finner totalprisen på en slik bestilling, på formen
functon beregnTotalPris( b: Array): Number
(Eksempelvis skal beregnTotalPris(bestillinger) returnere tallet: 447.88 )
Se assosiative arrayer side 100:function beregnTotalPris( b: Array): Number { var resultat: Number = 0.0; for(var i:int=0;i<b.length;i++){ resultat += b[i].pris*b[i].antall; }//for alle bestillinger return resultat; }//beregnTotalPris()
Leveres i It's Learning-mappen "Leveringsoppgave 24.01.2013" - Alle hjelpemidler
Vi skal lage en applikasjon som skal gi oss total
poengsum på en skihopper hvis brukeren av
programmet
oppgir stilkarakterer og lengde
for hopperen, og kritisk punkt og meterverdi
for hoppbakken.
I hopprenn gies det 5 stilkarakterer, høyeste og laveste
strykes, deretter summeres de tre gjenstående og summen blir
stilpoeng.
Antall meter hopperen hopper over kritisk punkt multipliseres med
en meterverdi, dette blir lengdepoeng.
Total poengsum blir summen av lengdepoeng og stilpoeng.
Lag applikasjonen med brukergrensesnitt og det hele.
(Eksempelvis skal stilkarakterene 15.5, 16, 16, 15, 14,
lengden 97, meterverdi 1.2 og kritisk punkt 60
gi poengsummen 90.9.)
import flash.events.MouseEvent; /* Utregning av poengsum i hopp-konkurranse Komponenter i GUI: Input: txtKritiskPunkt txtMeterVerdi txtLengde txtDommer1,txtDommer2, ..., txtDommer5 Output: txtTotalPoengSum */ /// --- Konstanter og variabler --- /// const KRITISK_PUNKT: Number = 92.0; //Default verdi const METER_VERDI: Number = 1.7; //Default verdi var meterverdi: Number = METER_VERDI; var kritiskpunkt: Number = KRITISK_PUNKT; var lengde: Number = 0.0; var stilkarakterer: Array = [0.0,0.0,0.0,0.0,0.0]; /// --- Oppsett av GUI --- /// txtMeterVerdi.text = String(METER_VERDI); txtKritiskPunkt.text = String(KRITISK_PUNKT); btnBeregnPoengSum.addEventListener(MouseEvent.CLICK,beregnPoengSum); /// --- Tabell - Funksjoner --- /// // Klippet og limt fra www.ulven.biz/it2/kompendium/kap5/funksjoner.html: function sum(tabell: Array): Number { var s: Number = 0.0; for(var i: int = 0; i < tabell.length; i++) { if( !isNaN(tabell[i]) ) { //Sjekker om vi har et tall s += Number(tabell[i]); //Number() for å takle tall som String }//if }//for return s; }//sum() function maksimum(tabell: Array): Number { var maks: Number = Number.MIN_VALUE; for(var i: int = 0; i < tabell.length; i++) { if( !isNaN(tabell[i]) ) { if( tabell[i]>maks) { maks = tabell[i]; }//if ny maks }//if tall }//for return maks; }//maksimum() function minimum(tabell: Array): Number { var min: Number = Number.MAX_VALUE; for(var i: int = 0; i < tabell.length; i++) { if( !isNaN(tabell[i]) ) { if( tabell[i]<min) { min = tabell[i]; }//if ny min }//if tall }//for return min; }//minimum() /// --- Hovedfunksjonene i programmet --- /// /* Utregning av poengsum: */ function totalPoengSum(kp: Number, mv: Number, l: Number, sk: Array): Number { var r: Number = (l-kp)*mv; //Lengdepoeng r += sum(sk)-minimum(sk)-maksimum(sk); //+Stilpoeng return r; }//totalPoengSum() /* Lytterfunksjon for btnBeregnPoengSum: */ function beregnPoengSum(evt: MouseEvent):void { var tall: Number = 0.0; // Henter input fra GUI: meterverdi=Number(txtMeterVerdi.text); kritiskpunkt=Number(txtKritiskPunkt.text); lengde = Number(txtLengde.text); stilkarakterer[0]=Number(txtDommer1.text); stilkarakterer[1]=Number(txtDommer2.text); stilkarakterer[2]=Number(txtDommer3.text); stilkarakterer[3]=Number(txtDommer4.text); stilkarakterer[4]=Number(txtDommer5.text); /* Bør egentlig sjekke brukerinput og konvertering til tall, eksempelvis slik: (Tekstfeltet txtMeterVerdi har satt egenskapen restrict lik ",.0-9") tall = Number(txtMeterVerdi.text.replace(",",".")); if( isNaN(tall) ) { meterverdi=0.0; }else{ meterverdi=tall; } ... */ // Regner ut poengsum: var resultat: Number = totalPoengSum(kritiskpunkt,meterverdi, lengde,stilkarakterer); // Viser poengsum i GUI: txtTotalPoengSum.text = String( resultat ); }//beregnPoengSum() |
Når det gjelder å finne maksimum, minimum og sum i tall-tabeller, så er det en nødvendig kunnskap å kunne lage slike funksjoner.
Det går an å "jukse" litt med maksimum og minimum, omtrent slik:
tabell.sort(Array.NUMERIC); min = tabell[0]; maks = tabell[tabell.length-1];
men på eksamen risikerer du å måtte finne maksimum, minimum
og summer også på sammensatte
tabeller,
hvor sort() ikke virker, for eksempel en assosiativ tabell inne i
en vanlig tabell, og da må du
forstå og kunne lage
slike
funksjoner. Summering må du kunne lage uansett, da det ikke
finnes noen sum() - metode for Array.
(Math.sum(tall1, tall2, ...) virker på enkelttall, men blir
håpløs å bruke på større tabeller, da det ville bli slik:
Math.sum( tabell[0], tabell[1], tabell[2], ...)