Wertetabellen

Das Berechnen von Wertetabellen an sich ist in Pascal das kleinere Problem. Allerdings muss man sich erst an die Ausgabe-Komponenten gewöhnen.  Der Komponenten-Typ TStringGrid stellt ein zweidimensionales Feld zur Verfügung, das man sich mit Hilfe des Objekt-Inspektors maßschneidern kann. Interessant sind dabei zunächst folgende Eigenschaften:

 

TStringGrid.ColCount  : Maximale Spaltenzahl
TStringGrid.RowCount  : Maximale Reihezahl
TStringGrid.FixedCols : fixiert für Überschriften
TStringGrid.FixedRows : fixiert für Überschriften
TStringGrid.Cell[x,y] : Inhalt der Zellen (strings)


Zählung der Zellen von links-oben nach
rechts-unten beginnend jeweils mit 0

Die Breite einer Spalte TStringGrid.ColWidth erscheint nicht im Objekt-Inspektor sondern, lässt sich nur während der Laufzeit ändern

 

procedure TForm1.Button1Click(Sender: TObject);
var n : integer;
begin
   for n:= 1 to 20 do begin
      Tabelle.Cells[0,n] := IntToStr(x);
      Tabelle.Cells[1,n] :=IntToStr(x*x);
    end;
end;

Die obige Prozedur ist aus verschiedenen Gründen sehr unflexibel:

1. Die Funktionswerte können nur für ganzzahlige x-Werte berechnet werden
2. Die x-Werte müssen auch noch mit dem Zeilenzähler übereinstimmen.

Dieses Problem lässt sich mit Hilfe eines anderen Schleifen-Konstrukts lösen und zwar mit einer sog. while ... do - Wiederholungsschleife. Zunächst  muss der x-Wert mit dem Startwert der Tabelle initialisiert werden. Der Zeilenzähler für die Tabelle wird mit  zz := 1 für die Zeile Nummer 1 initialisiert.

Bei jedem Schleifendurchgang müssen folgendes gemacht werden:

1.     Berechne y := x*x
2.     Gibt x in der ersten Spalte aus
3.     Gibt y in der zweiten Spalte aus
4.     Vorbereitung für den nächsten Durchgang:
        Erhöhe den x-Wert um einen festen Wert (z.B. 0,5)
        Erhöhe den Zeilenzähler.

Die Schleife wird abgebrochen, sobald die Bedingung  x < =10 nicht mehr erfüllt ist:

procedure TForm1.Button1Click(Sender: TObject);
var zz : integer;
    x,y : real;
begin
   zz := 1; x := 0;             // Initialisierung
   while x <= 10 do begin
      y := x*x;                // Berechnung der Funktionswerte
      Tabelle.Cells[0,zz] := FloatToStr(x);     // Ausgabe der x-Werte
      Tabelle.Cells[1,zz] := FloatToStr(y);     // Ausgabe der y-Werte
      x := x+0.5; inc(zz);    // Vorbereitung f. nächsten  Durchgang
   end;
end;

In dieser Prozedur sind x-Werte und Zeilenzähler getrennt. Man kann jetzt auch Start- und Endwert (xmin und xmax) sowie die jeweilige Erhöhung (deltax) während der Laufzeit festlegen.

Zurück zu Delphi

© Dietrich Praclik