Oppgaver i kapittel 5 - Gjentagelser
Løsningsskisser
Oppgave 1
/// --- ActionScript --- ///
/*
Kapittel 5 - Gjentagelser
Oppgave 1 - Skrive ut tabellverdier
*/
var tabell: Array = ["Olsen", "Karlsen", "Hansen", "Jensen","Ferkenberg","Fredriksen"];
var antall: int = tabell.length; // Alle tabeller har egenskapen length!
var i: int;
/* Med for-sløyfe */
trace("Lister opp:");
for(i=0;i<antall;i++) {
trace(tabell[i]);
}//for
/* Med while-sløyfe, omvendt rekkefølge for moro skyld */
trace("\nLister opp i omvendt rekkefølge:");
i=antall-1;
while( i>=0 ) {
trace(tabell[i]);
i--;
}//while
/// --- Output-vindu: ---///
Lister opp:
Olsen
Karlsen
Hansen
Jensen
Ferkenberg
Fredriksen
Lister opp i omvendt rekkefølge:
Fredriksen
Ferkenberg
Jensen
Hansen
Karlsen
Olsen
Oppgave 2
/// --- ActionScript --- ///
/*
Kapittel 5 - Valg og gjentagelser
Oppgave 2 - Trekantmønster
*/
var stjerner: String = "*"; // Variabel med varierende antall stjerner
for(var i:int=0;i<10;i++) { // For hver linje
trace(stjerner); // skriver vi ut stjerner
stjerner+="*"; // og legger til en mer i hver runde
}//for
/// --- Output-vindu: ---///
*
**
***
****
*****
******
*******
********
*********
**********
Oppgave 3
/// --- ActionScript --- ///
Tar ikke hele her, men lurt å lage en gjenta-funksjon:
/* Gjentar tegnet n ganger */
function gjenta(s:String,n:int):String {
var resultat: String = "";
for(var i:int=0;i<n;i++) {
resultat+=s;
}//for
return resultat;
}//gjenta(s,n)
// Første linje vil for eksempel bli:
var linje1: String = gjenta("* ",5)+"*"+gjenta("=",40);
Oppgave 4
/// --- ActionScript --- ///
/*
Kapittel 5 - Gjentagelser
Oppgave 4 - Tabell med omregning av temperaturer
*/
var c: int = 0;
/* Funksjon Celcius To Fahrenheit: c2f */
function c2f(c: Number):Number {
return c*9/5+32;
}//c2f(c)
trace("Celcius: Fahrenheit:"); // Overskrift
for(c=0;c<=100;c+=10) { // Linje for linje
trace(c+"\t\t\t"+c2f(c)); // \t er tabulator; et visst antall blanke
}//for
/// --- Output-vindu: ---///
Celcius: Fahrenheit:
0 32
10 50
20 68
30 86
40 104
50 122
60 140
70 158
80 176
90 194
100 212
Oppgave 5
/// --- ActionScript --- ///
/*
Kapittel 5 - Gjentagelser
Oppgave 5 - Tabellbehandling
Viktige oppgave og teknikker!!!
*/
var tall: Array = [22,33,12,32,25,44,9,7,17,43];
var antall: int = tall.length; //Alle tabeller har egenskapen length!
var sum: Number = 0.0; // Sum tall er null foreløpig
var i: int = 0; // Tellevariabel
for(i=0;i<antall;i++) { // Lister ut tallene
trace(tall[i]);
}//for
for(i=0;i<antall;i++) {
sum+=tall[i]; // Legger tall til summen i hver runde
}// for
trace("Summen av tallene er: "+sum);
trace("Gjennomsnittet av tallene er: "+sum/antall);
var maks: Number = Number.MIN_VALUE; // Største så langt, setter mindre enn alle tall
for(i=0;i<antall;i++) {
if( tall[i]>maks ) { // Hvis tall større,
maks=tall[i]; // så er tallet største hittil
}//if
}//for
trace("Det største tallet er: "+maks);
var min: Number = Number.MAX_VALUE; //Minste så langt, setter større enn alle tall
for(i=0;i<antall;i++) { // Hvis tall mindre,
if( tall[i]<min ) { // så er tallet minste hittil
min=tall[i];
}//if
}//for
trace("Det minste tallet er: "+min);
/// --- Output-vindu: ---///
22
33
12
32
25
44
9
7
17
43
Summen av tallene er: 244
Gjennomsnittet av tallene er: 24.4
Det største tallet er: 44
Det minste tallet er: 7
Oppgave 6
/*
Fibonacci følgen:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,...
Komponenter:
txtIndeks: TextField
txtFib: TextField
*/
stage.addEventListener(KeyboardEvent.KEY_DOWN, enterTrykket);
function enterTrykket(evt: KeyboardEvent): void {
var keycode: int = evt.keyCode;
if(keycode==Keyboard.ENTER) {
var tall1: Number = 1;
var tall2: Number = 1;
var fib: Number = 2;
var indeks: int = int(txtIndeks.text);
var i: int = 3;
while(i<=indeks){
tall1=tall2;
tall2=fib;
fib=tall1+tall2; trace(fib);
i++;
}//while
txtFib.text=String(fib);
}//if ENTER
}//enterTrykket()
Oppgave 7
/*
Sparing med faste beløp
Komponenter:
txtBelop: TextField
txtRente: TextField
txtAr: TextField
btnBeregn: Button
txtKonto: TextField
*/
btnBeregn.addEventListener(MouseEvent.CLICK, beregnTrykket);
function beregnTrykket(evt: MouseEvent): void {
var belop: Number = Number(txtBelop.text.replace(",",".")); trace(belop);
var rente: Number = Number(txtRente.text.replace(",",".")); trace(rente);
var antallar: Number = Number(txtAr.text.replace(",",".")); trace(antallar);
if(isNaN(belop) || isNaN(rente)|| isNaN(antallar)){
txtKonto.text = "Feil i inntasting av tall!";
}else{
var saldo: Number = belop;
var i: int = 0;
while(i<antallar){ trace(saldo);
saldo = saldo + saldo*rente/100;
saldo = saldo + 1000;
i++;
}//while
txtKonto.text = saldo.toFixed(0);
}//if
}//beregnTrykket()
Oppgave 8
/* Gangetabell
Enkel versjon uten finjustering av kolonner.
*/
var linje : String = "";
for(var r: int = 1; r <=10; r++) {
linje = "";
for(var k: int = 1; k<=10; k++) {
linje = linje + " "+r*k+" ";
}//for j
trace(linje);
}//for i
Oppgave 9
/*
Oppgave 9 - Tegne mønster med kvadrater
*/
graphics.lineStyle(5,0x000000,1); //linjetykkelse 5, farve svart, alpha=1
var pos: int = 50;
var diff: int = 10;
var side: int = 200;
for(var i:int=0;i<5;i++){
graphics.drawRect(pos,pos,side,side);
pos = pos+diff;
side = side-2*diff;
}//for