230 likes | 398 Views
Uppgift 3 från Tenamen 2000-10-28 http://www.nada.kth.se/~vahid/prgm00/ovning6. class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num ]; //vattenflödet i vattenfallen Vector v = new Vector(); Vattenfall ettFall;
E N D
Uppgift 3 från Tenamen 2000-10-28 http://www.nada.kth.se/~vahid/prgm00/ovning6 class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num];//vattenflödet i vattenfallen Vector v = new Vector(); Vattenfall ettFall; // Koden i a-, b- och c-delen hamnar här. } } class Vattenfall{ int flöde; String namn; public Vattenfall(int flöde, String namn){ this.flöde = flöde; this.namn = namn; } }//class Vattenfall
a) Skriv kod som summerar alla vattenflöden (dvs alla värden i fall). a) Skriv kod som summerar alla vattenflöden (dvs alla värden i fall). Index: 0 1 …..……… 148 149 fall 23 20 40 50 length 150 b) totflöde=0; for(i=0;i<fall.length();i++) totflöde += fall[i]; a) totflöde=0; for(i=0;i < fall.length;i++) totflöde += fall[i]; c) totflöde=0; for(i=0;i<fall.length;i++) totflöde= fall.elementAt(i); d) totflöde=0; for(i=0;i<fall.length-1;i++) totflöde += fall[i];
En till FEL lösning: totflöde=0; i=0; While(i<fall.length){ i++; totflöde += fall[i]; } varför? Betrakta koden ovan kan man ändra genom att byta plats mellan två rader så att det blir en RÄTT lösning? totflöde=0; while(i < fall.length){ totflöde += fall[i]; i++; }
b) Skriv kod som skriver ut alla flöden i omvänd ordning (dvs det sista flödet i fall skaskrivas ut först). Index: 0 1 …..……… 148 149 fall 100 20 40 50 length 150 a) for(i=fall.length;i>0;i--) System.out.println(… …fall[i]); b) for(i=fall.length-1;i>=0;i--) System.out.println(… …fall[i]); c) System.out.println(… …fall[bakvänd]); d) for(i=0;i > fall.length-1;i++) System.out.println(… …fall[i]);
c) Anta att flera element (av typen Vattenfall) lagts in i vektorn v. Skriv kod som skriver ut namnet på Vattenfallet på den första positionen i vektorn. a) ettFall = v[0]; System.out.println(… …ettFall.namn); v Instanse av Vector 0 1 …..……… 148 149 b) ettFall=v.elementAt(0); System.out.println(ettFall.namn); c) ettFall=(Vattenfall)v.elementAt[0]; System.out.println(ettFall.namn); flöde 100 flöde 20 namn namn ”vf1” ”vf1” ”vf1” ”vf4” d) ettFall=(Vattenfall)v.elementAt(0); System.out.println(ettFall.namn); flöde 50 namn flöde 60 ”vf3” ”vf9” namn
Uppgift 4 från Tenamen 2000-10-28 class Faarskallen{ public static void main(String[] args){ FaarHage hagen = new FaarHage(200); if (hagen.klipp(40)) System.out.println("Klipp fåren!!!"); } }//class Faarskallen class FaarHage{ public Faar[] bä; private int antal; public FaarHage(int n){ /*konstruktor som ger värden till instansvariablerna och somläser ininformation från en fil om fåren ochfyller bä med får*/ } double medelUllLängd(){ /* Metod som beräknar medelullängden på alla fåren i hagen*/ } boolean klipp(int gräns){ /*metod som jämför medelullängden med gräns ochreturnerar true om fåren ska klippas. Om medellängenöverstiger gränsvärdet ska fåren klippas.*/ } }//class FaarHage class Faar{ double ullängd; int födelseÅr; Faar(double ullängd, int år){ /* Konstruktor som ger instansvariablerna värden*/ } }//class Faar
a) Skriv den kod som saknas i konstruktorn i klassen Faar class Faar{ double ullängd; int födelseÅr; Faar(double ullängd, int år){ /* Konstruktor som ger instansvariablerna värden*/ } }//class Faar b) this.ullängd=ullängd; födelseÅr=år; a) ullängd=ullängd; födelseÅr=år; d) ullängd=this.ullängd; födelseÅr=år; c) ullängd=år; födelseÅr=ullängd;
b) Skriv den kod som saknas i metoden klipp(). … double medelUllLängd(){ /* Metod som beräknar medelullängden på alla fåren i hagen*/ } … boolean klipp(int gräns){ /*metod som jämför medelullängden med gräns och returnerar true om fåren ska klippas. Om medellängen överstiger gränsvärdet ska fåren klippas.*/ } a) medelUllLängd == gräns; b) if(medelUllLängd==this.gräns) return true; else return false; d) if(medelUllLängd()==gräns) return true; else return false; c) if(this.medelUllLängd==gräns) return true; else return false;
Uppgift 5 från Tenamen 2000-10-28 class Fem{ public static void main(String[] args){ Vulkan krafla = new Vulkan(true, 1984, 97.3); krafla.snartUtbrott(); } }//class Fem fortsätter…
... fortsättning class Vulkan{ public static final double GRÄNSVÄRDE = 103; public static int numAktiv = 0; boolean aktiv; int utbrottsÅr; //årtal för senaste utbrott double tryck; //inre tryck i vulkanen public Vulkan(boolean aktiv, int utbrottsÅr, double tryck){ this.aktiv = aktiv; this.utbrottsÅr=utbrottsÅr; this.tryck = tryck; if (aktiv) numAktiv++; //a } public void snartUtbrott(){ double kvot = tryck/GRÄNSVÄRDE; if (kvot>1) System.out.println("Vulkanen har ett utbrott NU!!"); else if (kvot>0.7) System.out.println("Troligtvis utbrott snart"); else System.out.println("Ta det LUNGT..."); //b } }//class Vulkan
Klasser och klassvariabler Metodanrop och lokala variabler Objekt (instans ) och instansvariabler
class Fem{ … … }//class Fem class Vulkan{ … … }
Klasser och klassvariabler Metodanrop och lokala variabler Objekt (instans ) och instansvariabler class Fem class Vulkan
class Fem{ … }//class Fem class Vulkan{ public static final double GRÄNSVÄRDE = 103; public static int numAktiv =0; … … }//class Vulkan
Klasser och klassvariabler Metodanrop och lokala variabler Objekt (instans ) och instansvariabler class Fem class Vulkan int GRÄNSVÄRDE: 103 int numAktiv : 0
class Fem{ public static void main(String[] args){ Vulkan krafla = new Vulkan(true, 1984, 97.3); HÄR BLIR DET EN ANROP TILL KONSTRUKTOREN FÖR KLASSEN VULKAN, OBSERVERA ATT VÄRDENA TRUE, 1984 OCH 97.3 SKICKAS TILL KONSTRUKTOREN SOM PARAMETER:
class Fem{ public static void main(String[] args){ class Fem{ public static void main(String[] args){ numAktiv 0 1 Vulkan krafla Vulkan krafla = new Vulkan(true, 1984, 97.3); = new Vulkan(true, 1984, 97.3); GRÄNSVÄRDE 103 class Vulkan{ class Vulkan{ public static final double GRÄNSVÄRDE = 103; public static int numAktiv = 0; boolean aktiv; boolean aktiv; main int utbrottsÅr; int utbrottsÅr; args double tryck; double tryck; public Vulkan(boolean aktiv, int utbrottsÅr,… public Vulkan(boolean aktiv, int utbrottsÅr,… krafla vulkan …double tryck){ …double tryck){ boolean aktiv true this.aktiv = aktiv; this.aktiv = aktiv; int utbr… 1984 this.utbrottsÅr=utbrottsÅr; this.utbrottsÅr=utbrottsÅr; bouble tryck this.tryck = tryck; this.tryck = tryck; 97.3 if (aktiv){ numAktiv++; } if (aktiv){ numAktiv++; } this: aktiv true false //a //a Utbrt… 1984 0 }… 97.3 tryck 0.0 … }
a) Klasser och klassvariabler Metodanrop och lokala variabler Objekt (instans ) och instansvariabler class Fem Main args krafla aktiv false true vulkan class Vulkanint GRÄNSVÄRDE: 103 int numAktiv : 1 Utbrt… 1984 0 boolean aktiv true 97.3 tryck 0.0 int utbr… 1984 bouble tryck 97.3 this:
class Fem{ public static void main(String[] args){ numAktiv 1 0 Vulkan krafla = new Vulkan(true, 1984, 97.3); GRÄNSVÄRDE 103 class Vulkan{ public static final double GRÄNSVÄRDE = 103; public static int numAktiv = 0; main boolean aktiv; args int utbrottsÅr; double tryck; krafla public Vulkan(boolean aktiv, int utbrottsÅr,… vulkan …double tryck){ boolean aktiv true this.aktiv = aktiv; int utbr… 1984 this.utbrottsÅr=utbrottsÅr; bouble tryck this.tryck = tryck; 97.3 if (aktiv){ numAktiv++; } this: aktiv false true //a Utbrt… 1984 0 }… }… 97.3 tryck 0.0 … }
class Fem{ public static void main(String[] args){ numAktiv 1 0 Vulkan krafla = new Vulkan(true, 1984, 97.3); GRÄNSVÄRDE 103 class Vulkan{ public static final double GRÄNSVÄRDE = 103; public static int numAktiv = 0; boolean aktiv; main int utbrottsÅr; args double tryck; public Vulkan(boolean aktiv, int utbrottsÅr,… krafla …double tryck){ this.aktiv = aktiv; this.utbrottsÅr=utbrottsÅr; this.tryck = tryck; if (aktiv){ numAktiv++; } aktiv true false //a Utbrt… 1984 0 }… }… 97.3 tryck 0.0 … }
class Fem{ public static void main(String[] args){ numAktiv 1 0 Vulkan krafla = new Vulkan(true, 1984, 97.3); krafla.snartUtbrott(); krafla.snartUtbrott(); GRÄNSVÄRDE 103 class Vulkan{ public static final double GRÄNSVÄRDE = 103; main public static int numAktiv = 0; args int utbrottsÅr; double tryck; krafla public Vulkan(boolean aktiv, int utbrottsÅr,… snartUtbrott …double tryck){…} double kvot 0.94 public void snartUtbrott(){ public void snartUtbrott(){ double kvot = tryck/GRÄNSVÄRDE; double kvot = tryck/GRÄNSVÄRDE; if (kvot>1) if (kvot>1) this: System.out.println("Vulkanen harett utbrottNU!”); else if (kvot>0.7) else if (kvot>0.7) System.out.println("Troligtvutbrott snart"); System.out.println("Troligtvutbrott snart"); else aktiv false true System.out.println("Ta det LUNGT..."); Utbrt… 1984 0 //b //b 97.3 tryck 0.0 } } }
b) Klasser och klassvariabler Metodanrop och lokala variabler Objekt (instans ) och instansvariabler Main class Fem args aktiv false true krafla class Vulkanint GRÄNSVÄRDE: 103 int numAktiv : 1 Utbrt… 1984 0 97.3 tryck 0.0 vulkan Double kvot 0.94 this: