Informatik: Einführung in Java Gierhardt Kara legt Muster!(Lsg.) Aufgaben: 1. Kara soll ein mit Kleeblättern gefülltes Quadrat mit variabler Seitenlänge ablegen. Der Methodenaufruf quadratzeichnen(5) soll demnach ein Quadrat mit der Seitenlänge 5 erzeugen. 3 public c l a s s Quadrat extends JavaKaraProgram 6 { kara. t urnleft ( ) ; kara. t urnleft ( ) ; 8 } 9 10 void legex ( int anzahl ) 11 { // S t a r t auf erstem B l a t t ; Ende h i n t e r l e t z t e m B l a t t 1 for ( int i =1; i<=anzahl ; i++) 13 { kara. putleaf ( ) ; 14 kara. move ( ) ; 15 } 16 } 1 18 void gehex ( int anzahl ) 19 { for ( int i =1; i<=anzahl ; i++) kara. move ( ) ; 0 } 1 void quadratzeichnen ( int s e i t e n l a e n g e ) 3 { // In der l i n k e n oberen Ecke des Quad. nach r e c h t s s t a r t e n 4 for ( int i = 1 ; i<=s e i t e n l a e n g e ; i++) 5 { legex ( s e i t e n l a e n g e ) ; // K l e e b l a t t z e i l e a b l e g e n 6 turnaround ( ) ; gehex ( s e i t e n l a e n g e ) ; // und Z e i l e z u r u e c k l a u f e n 8 kara. t u rnleft ( ) ; // In naechste Z e i l e 9 kara. move ( ) ; 30 kara. t u rnleft ( ) ; 31 } 3 } 33 34 public void myprogram ( ) 35 { 36 quadratzeichnen ( 5 ) ; 3 } 38 } // Ende von Quadrat 1
. Kara soll ein mit Kleeblättern gefülltes Rechteck mit variabler Breite und Höhe ablegen. Der Methodenaufruf rechteckzeichnen(5,3) soll demnach ein Rechteck mit der Breite 5 und der Höhe 3 erzeugen. 3 public c l a s s Rechteck extends JavaKaraProgram 8 void legex ( int anzahl ) 9 {... } 10 11 void gehex ( int anzahl ) 1 {... } 13 14 void rechteckzeichnen ( int b r e i t e, int hoehe ) 15 { // In der l i n k e n oberen Ecke des R. nach r e c h t s s t a r t e n 16 for ( int i = 1 ; i<=hoehe ; i ++) 1 { 18 legex ( b r e i t e ) ; // K l e e b l a t t z e i l e a b l e g e n 19 turnaround ( ) ; 0 gehex ( b r e i t e ) ; // und Z e i l e z u r u e c k l a u f e n 1 kara. t u rnleft ( ) ; // In naechste Z e i l e kara. move ( ) ; 3 kara. t u rnleft ( ) ; 4 } 5 } 6 public void myprogram ( ) 8 { 9 rechteckzeichnen ( 5, 3 ) ; 30 } 31 } // Ende von Rechteck
3. Kara soll ein mit Kleeblättern gefülltes gleichschenkliges Dreieck mit variabler Seitenlänge ablegen. Eine Seite des Dreiecks soll waagerecht liegen. 3 public c l a s s GSDreieck extends JavaKaraProgram 8 void legex ( int anzahl ) 9 {... } 10 11 void gehex ( int anzahl ) 1 {... } 13 14 void gsdreieckzeichnen ( int s e i t e ) 15 { // In der l i n k e n unteren Ecke des g l e i c h s c h. 16 // Dreiecks nach r e c h t s s t a r t e n 1 int a k t B r e i t e ; 18 a k t B r e i t e = s e i t e ; 19 while ( a k t B r e i t e > 0) 0 { 1 legex ( a k t B r e i t e ) ; // K l e e b l a t t z e i l e a b l e g e n turnaround ( ) ; 3 gehex ( aktbreite 1); // und Z e i l e z u r u e c k l a u f e n 4 kara. turnright ( ) ; // In naechste Z e i l e 5 kara. move ( ) ; 6 kara. turnright ( ) ; a k t B r e i t e = a k t B r e i t e ; 8 } 9 } 30 31 public void myprogram ( ) 3 { 33 gsdreieckzeichnen ( ) ; 34 } 35 } // Ende von GSDreieck 3
4. Kara soll ein mit Kleeblättern umrandetes Rechteck mit variabler Breite und Höhe ablegen. 3 public c l a s s RechteckOffen extends JavaKaraProgram 5 void legex ( int anzahl ) 8 void rechteckoffenzeichnen ( int b r e i t e, int hoehe ) 9 { // In der rechten oberen Ecke des Rechtecks s t a r t e n 10 kara. move ( ) ; 11 for ( int i =1; i <= ; i++) 1 { 13 legex ( b r e i t e 1); // K l e e b l a t t z e i l e waagerecht 14 kara. turnright ( ) ; // a b l e g e n. 15 kara. move ( ) ; 16 kara. turnright ( ) ; 1 kara. move ( ) ; 18 kara. t u rnleft ( ) ; 19 legex ( hoehe 1); // K l e e b l a t t z e i l e s e n k r e c h t 0 kara. turnright ( ) ; // a b l e g e n. 1 kara. move ( ) ; kara. turnright ( ) ; 3 kara. move ( ) ; 4 kara. t u rnleft ( ) ; 5 } 6 } 8 public void myprogram ( ) 9 { 30 rechteckoffenzeichnen (, 5 ) ; 31 } 3 } // Ende von RechteckOffen 4
5. Kara soll ein mit Kleeblättern gefülltes Quadrat mit variabler Seitenlänge in Kegelaufstellung ablegen. Die Seiten des Quadrates sind Diagonalen in der Kara-Welt. Dazu soll eine Methode legekegelreihe(int anzahl) entwickelt werden, die eine diagonale Kegelreihe ablegt. Eine weitere Methode zurnaechstenreihe() ist ebenso zu programmieren. 3 public c l a s s KegelQuadrat extends JavaKaraProgram boolean rechtsum = true ; 5 6 void l e g e K e g e l r e i h e ( int anzahl ) { // S t a r t auf erstem B l a t t ; Ende h i n t e r l e t z t e m B l a t t 8 for ( int i =1; i<=anzahl ; i++) 9 { kara. putleaf ( ) ; 10 kara. move ( ) ; 11 kara. t u rnleft ( ) ; 1 kara. move ( ) ; 13 kara. turnright ( ) ; 14 } 15 } 16 1 void zurnaechstenreihe ( ) 18 { i f ( rechtsum ) 19 { kara. turnright ( ) ; 0 kara. move ( ) ; 1 kara. move ( ) ; kara. turnright ( ) ; 3 } 4 else { kara. t urnleft ( ) ; 5 kara. t urnleft ( ) ; 6 kara. move ( ) ; kara. move ( ) ; 8 } 9 rechtsum =! rechtsum ; 30 } 31 3 void kegellegen ( int s e i t e ) // In l i n k e r Ecke des 33 { for ( int i =1; i <= s e i t e ; i++) // Quadrates s t a r t e n. 3 l e g e K e g e l r e i h e ( s e i t e ) ; 35 zurnaechstenreihe ( ) ; 36 } 3 } 38 39 public void myprogram ( ) 40 { kegellegen ( 3 ) ; } 41 } // Ende von KegelQuadrat 5