26_Tree

Code-Dateien

DateinameAktion
CODECode_Baum.zipDownload
CODECode_Baum2.zipDownload
CODECode_Tree.zipDownload

PDF-Dokumente

DateinameAktion
PDFFolie_Baum_D_Teil1.pdfÖffnen
PDFFolie_Baum_D_Teil2.pdfÖffnen
PDFFolie_Tree_E.pdfÖffnen
PDFUebung_Baum.pdfÖffnen
PDFUebung_Baum2.pdfÖffnen

Videos

DateinameAktion
VIDEOVideo_Baum_D_Teil1Abspielen
VIDEOVideo_Baum_D_Teil2Abspielen
VIDEOVideo_Tree_E_Part1Abspielen
VIDEOVideo_Tree_E_Part2Abspielen

Lernmaterialien

Vorbereitung

Erstellen Sie ein Excel-Sheet mit Zeilen und Spaltennummerierung:

001.png

Definieren des benötigten Bereiches:

002.png
    public void printBaum(int hohe)
    {
        for (int z=0; z<hohe; z++)
        {
            for (int s=0; s<(2*hohe-1); s++)
            {
                System.out.print("*");
            }
            System.out.println();
        }
    }

System.out.print("*");

Gibt das Zeichen * aus OHNE Zeilenvorschub

System.out.println();

Gibt DEN Zeilenvorschub

2*hohe-1

Berechnet die Breite des “Blocks”

003.png

Baum

004.png

Die Ausgabe besteht aus 3 Linien:

  • z == 6 … das ist die untere Linie.

  • z+s == 6 … das ist die linke Linie

  • s-z == 6 … das ist die rechte Linie

Nun bringen wir die Linien in eine allgemeine Formel:

  • z == hohe-1 … das ist die untere Linie.

  • z+s == hohe-1 … das ist die linke Linie

  • s-z == hohe-1 … das ist die rechte Linie

    public void printBaum(int hohe)
    {
        for (int z=0; z<hohe; z++)
        {
            for (int s=0; s<(2*hohe-1); s++)
            {
                if ((z == hohe-1) || (z+s == hohe-1) || (s-z == hohe-1))
                    System.out.print("*");
                else
                    System.out.print(" ");
            }
            System.out.println();
        }
    }

Es werden 2 unterschiedliche Zeichen ausgegeben:

  • *

  • _

if ((z == hohe-1) || (z+s == hohe-1) || (s-z == hohe-1)) System.out.print("*"); else System.out.print(" ");

Die drei Bedingungen (unter, linke und rechte Linie) werden mit ODER verknüpft und ein * ausgegeben.

Wenn keine Bedingung zutrifft, dann wird ein _ ausgegeben.

005.png

Kugel

006.png

Wir haben anstelle des _ ein o gezeichnet! Daher ist die blaue Codezeile zu ersetzten.

007.png

Die Füllung ist innerhalb der 3 Linien:

  • z < 6 … die o ist über der unteren Linie.

  • z+s > 6 … die o ist rechts von der linken Linie

  • s-z < 6 … die o ist links von der rechten Linie

Nun bringen wir die Bedingungen in eine allgemeine Formel:

  • z < hohe-1 … die o ist über der unteren Linie.

  • z+s > hohe-1 … die o ist rechts von der linken Linie

  • s-z < hohe-1 … die o ist links von der rechten Linie

Wir sind “über der unteren Linie” UND “rechts von der linken Linie” UND “links von der rechten Linie”.

    public void printBaum(int hohe)
    {
        for (int z=0; z<hohe; z++)
        {
            for (int s=0; s<(2*hohe-1); s++)
            {
                if ((z == hohe-1) || (z+s == hohe-1) || (s-z == hohe-1))
                {
                    System.out.print("*");
                }
                else
                {
                    if ((z < hohe-1) && (z+s > hohe-1) && (s-z < hohe-1))
                    {
                        System.out.print("o");
                    }
                    else
                    {
                        System.out.print(" ");
                    }
                }
            }
            System.out.println();
        }
    }
008.png

Kerzen

009.png

In jeder 2. Zeile sollen am Rand Kerzen sein!

Bedingung:

  • z%2 == 1

Diese Codezeile gehört durch die Bedingung erweitert.

010.png
    public void printBaum(int hohe)
    {
        for (int z=0; z<hohe; z++)
        {
            for (int s=0; s<(2*hohe-1); s++)
            {
                if ((z == hohe-1) || (z+s == hohe-1) || (s-z == hohe-1))
                {
                    if (z%2 == 1)
                        System.out.print("I");
                    else
                        System.out.print("*");
                }
                else
                {
                    if ((z < hohe-1) && (z+s > hohe-1) && (s-z < hohe-1))
                    {
                        System.out.print("o");
                    }
                    else
                    {
                        System.out.print(" ");
                    }
                }
            }
            System.out.println();
        }
    }
011.png