athena.gif (7242 Byte)

  PÜ6: Dreiecksanalyse
Downloads:  dreieck1.exe (fertiges Programm)
dreieck1.zip (vorgefertigtes Projekt mit Grafik-Funktion)

Aufgabenstellung
Algorithmisch-programmiertechnische Grundlagen
    Struktogramm der Abfragesituation
    Verknüpfung von Bedingungen durch boolesche Operatoren (AND / OR)
    Vorschlag zur Oberflächengestaltung
    Verwendung von TListBox-Komponenten
    Verwendung von TPaintBox-Komponenten

Aufgabenstellung:

Die Seitenlängen eines Dreieckes sind einzulesen. Stellen Sie fest, 
  • ob mit diesen Angaben ein Dreieck konstruiert werden kann und wenn ja, 
  • ob es sich um ein gleichseitiges, ein gleichschenkliges oder ein ungleichschenkliges Dreieck handelt und 
  • ob das Dreieck einen rechten Winkel besitzt. 
a)  Gegeben ist ein Struktogramm in Grobform. 
Formulieren Sie die abzufragenden Bedingungen verbal bzw. durch mathematische Aussagen aus!
Beispiel: Konstruierbarkeit
b) In den Abfragen sind offensichtlich mehrere Einzelbedingungen miteinander zu verknüpfen.
Machen Sie sich mit der Verwendung der Boolschen Operatoren AND und OR vertraut!
c) Erstellen Sie unter Delphi eine geeignete Oberfläche für Ihr Programm! (Vorschlag)
Da die Ausgabe des "Analyseergebnisses" mehrzeilig ausfällt, sind die bisher bewährten Edit-Felder hierzu nicht geeignet - es empfiehlt sich die Verwendung einer ListBox-Komponente.

Seitenanfang

 Algorithmisch-programmiertechnische Grundlagen:

Struktogramm der Abfragesituation

Struktogramm DreieckstestKonstruierbarkeit eines Dreiecks:

Ein Dreieck mit den Seiten a, b und c ist dann konstruierbar, wenn gilt:
(a+b>c) und (a+c>b) und (b+c>a)

Anmerkung:  Die obige Vorgehensweise widerspiegelt eine typisch informatische Problemlösestrategie, die sog. Top-Down-Methode (Methode der schrittweisen Verfeinerung), nach der ein komplexer Sachverhalt schrittweise in überschaubare Teilkomplexe zerlegt wird. 
Mit anderen Worten: Es wäre verwirrend, wollte man gleich bei der Struktogrammerstellung die konkreten Abfragebedingungen für Konstruierbarkeit usw. fertig ausformulieren. 

Seitenanfang

Verknüpfung mehrerer Bedingungen in Auswahlstrukturen durch Boolesche Operatoren

Oft ist die Fortsetzung eines Programms von mehreren Bedingungen abhängig, von denen entweder nur eine oder einige oder aber alle gleichzeitig erfüllt sein müssen.

Verknüpfung mit AND:

IF (Beding1) AND (Beding2) AND (Beding n) THEN Anweisung;

- Anweisung wird nur dann ausgeführt, wenn alle aufgeführten Bedingungen erfüllt sind!

Verknüpfung mit OR:

IF (Beding1) OR (Beding2) OR (Beding n) THEN Anweisung;

- Anweisung wird immer dann ausgeführt, wenn mindestens eine der Bedingungen erfüllt ist!

Beispiel: Von drei Zahlen (a, b, c) ist das Maximum zu ermitteln.

IF (a>b) AND (a>c) THEN max := a
ELSE
  IF (b>a) AND (b>c) THEN max := b
  ELSE
    IF (c>a) AND (c>b) THEN max := c
    ELSE ShowMessage ('Die Zahlen sind nicht verschieden !');


Seitenanfang

Vorschlag zur Oberflächengestaltung:

dreiana1.gif (14733 Byte)Zur "optischen Aufwertung" der Programmoberfläche empfiehlt sich der Einbau einer Grafikkomponente (PaintBox), in welcher für den Fall der Konstruierbarkeit das Dreieck zur Anzeige gelangt. Hierbei sollte eine Art Zoom-Funktion einprogrammiert werden, so dass ein Dreieck der Größe 3; 4; 5 ebenso groß erscheint wie eines der Größe 3000; 4000; 5000.

Methodische Varianten:
a) die entsprechende Prozedur wird von erfahreneren Schülern entwickelt (Hilfestellung) und dann für alle verfügbar gemacht oder
b) es wird vom Lehrer eine vorgefertigtes Projekt zur Verfügung gestellt, in dem bereits die zum Zeichnen notwendigen Komponenten nebst Prozedur enthalten sind. 
(Download von dreieck1.zip)


Seitenanfang

Verwendung von TListBox-Komponenten:

Komponenten vom Typ TListBox werden auch als Windows-Listenfenster bezeichnet. Als zentrale Eigenschaft steht "Items" zur Verfügung, welche die Einträge der Liste vom Typ String enthält.
Da wir uns in einer folgenden Aufgabenstellung noch ausführlich mit TListBox-Komponenten beschäftigen, erfolgen hier nur zwei elementare Hinweise zur unmittelbaren Nutzung im Programmbeispiel:


Seitenanfang

Verwendung von TPaintBox-Komponenten:

Die Komponente TPaintBox bietet eine Möglichkeit, in einem definierten rechteckigen Bereich des Formulars zu zeichnen, dies jedoch außerhalb des Zeichenfelds zu unterbinden - quasi eine definierte Zeichenfläche im Formular. Das Zeichenfeld enthält Koordinaten, wobei der Punkt P1(0,0) die linke obere Ecke und P2(PaintBox1.Height, PaintBox1.Width) die rechte untere Ecke darstellt.
Hinweise zur Verwendung:

Beispiel:  In eine quadratische PaintBox soll ein gleichseitiges Dreieck gezeichnet werden, dessen Spitze nach oben zeigt

procedure Gleichseitiges_Dreieck;
  var a,b,c: TPoint;
      seitenlaenge: Integer;
  begin
    with PaintBox1 do begin
      {Bestimmen der Koordinaten für a,b,c}
        a.x := 1;
        a.y := height-1;
        b.x := width-1;
        b.y := a.y;
        seitenlaenge := b.x-a.x;
        c.x := a.x + seitenlaenge DIV 2;
        c.y := a.y - trunc(sqrt(3/4*sqr(seitenlaenge)));
      {Zeichnen durch Verbinden der Eckpunkte}
        canvas.moveto(a.x, a.y);
        canvas.lineto(b.x, b.y);
        canvas.lineto(c.x, c.y);
        canvas.lineto(a.x, a.y);
    end;{of with}
end;