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