Step 04 - Variablen und Konstanten

Spendenaufruf des DRK Ortsvereins Spielberg e.V.

16. April 2023

 

Hallo liebe Besucherin, hallo lieber Besucher!

In einem ganz anderen Kontext möchte ich hier nun bewerben:
Der Verein, für den ich auch einstehe, benötigt Spenden:


Bitte bei der Überweisung den Verwendungszweck beachten!

Der neuste Stand gibt es hier zu sehen!

Wer anderen hilft, hilft sich selbst. (Konfuzius)

 

 

Was sind Variablen überhaupt?

Eine Variable ist, wie aus der Mathematik bekannt, ein Feld, das gewisse Werte annehmen kann. In Delphi, werden diese Werte durch einen bestimmten Variablentyp bzw. Wertebereich eingegrenzt. Als Variablenname sollte man möglichst sprechende Namen nehmen, die dann einen sprechenden Text ergeben lassen, so dass man auch später wieder leicht in das Projekt reindenken kann.
 

Variablentypen für Zahlen:

Typ Wertebereich Beispiel
Byte (Ganzzahl) von 0 bis 255 3
Smallint (Ganzzahl) von -32768 bis 32767 -30000
Word von 0 bis 65535 60000
Integer von -2147483648 bis 2147483647 65536
Cardinal von 0 bis 4294967295 300000
Int64 von -9223372036854775808 bis 9223372036854775807 4294967296
Real or Double (Kommazahl) 5.0 x 10324 bis 1.7 x 10308 1.53
Extended von -3,6 x 104951 bis 1,1 x 104932 6.74E4000
 

Nun zu den Variablentypen, die Zeichenketten speichern:

Typ Wertebereich Beispiel
Char Buchstabe 'a' (Zeichen und Zeichenketten werden mit einfachem Anführungszeichen abgegrenzt)
oder: #[Zahl] gibt die Codierung des Zeichens an. Beispiel:
#13 ist ein Zeilenumbruch.
String Viele Buchstaben-> Zeichenkette 'Dies ist eine Zeichenkette'
PChar Wie ein String, nur - sagen wir mal - anders von Delphi verarbeitet. 'Diese Zeichenkette geht auch als PChar'
'Diese hier'+' nicht!'
 
  • PChar: PChar steht für "Pointer to Char" und ist ein Zeiger auf eine Zeichenkette im Speicher. Es wird häufig verwendet, um mit Zeichenketten zu arbeiten, insbesondere wenn es um die Interaktion mit C-basierten APIs oder um die effiziente Manipulation von Zeichenketten geht. PChar ist ein Zeiger auf den Anfang einer Zeichenkette und kann verwendet werden, um auf den Speicherbereich zuzugreifen, der die Zeichenkette enthält.
  • String: String ist ein dynamischer Datentyp in Delphi, der eine Zeichenkette repräsentiert. Im Gegensatz zu PChar handelt es sich bei String um einen komplexen Datentyp, der viele integrierte Funktionen und Methoden zur Manipulation von Zeichenketten bietet. String ist im Grunde ein Array von Char-Zeichen, das automatisch Speicher verwaltet und eine flexible Länge hat. Delphi bietet eine hohe Abstraktionsebene für die Arbeit mit Zeichenketten durch den String-Typ.
  • Char: Char steht für einen einzelnen Zeichenwert in Delphi. Es repräsentiert einen einzelnen Buchstaben oder ein Symbol. Ein Char-Wert kann in einem String oder PChar verwendet werden, um ein einzelnes Zeichen darzustellen. Es ist wichtig zu beachten, dass Char ein festes Zeichenformat hat und nicht automatisch Speicher für die Zeichenkette verwaltet wie String.
Zusammenfassend lässt sich sagen, dass PChar ein Zeiger auf eine Zeichenkette ist, String eine dynamische Zeichenkette repräsentiert und Char einen einzelnen Zeichenwert darstellt.
 

Konstanten

Konstanten sind im Grunde auch verwendbar wie Variablen mit dem Unterschied, dass sie nicht verändert, sondern nur gelesen werden können. Konstanten werden in der Regel KOMPLETT GROSS geschrieben. Konstanten-Typen werden nicht benötigt. Die Werte nehmen automatisch den kleinstmöglichen Speicher an.
 

Deklaration und Initialisierung von Variablen

Beim Benennen der Variablen sollte kleingeschrieben angefangen und ggf. Binnenmajuskel gebildet werden. Variablen deklarieren (= einführen/festlegen) :
var
  s            : String;
  a,b,i        : Integer;
  r,s,t        : Extended;
  durchschnitt : Integer;
  kleinOtto    : Word;
  vorname,
  nachname     : String;
Allgemein: [Name der Variable] : [Variablentyp];
Immer eingeleitet mit dem Wort "var", wie im Beispiel oben gezeigt.

Ein guter Stil.

Was man sich wirklich gleich zu Beginn aneignen sollte, ist der "gute" Programmierstil. Im Grunde könnte man ein Programm in nur einer Zeile schreiben, aber um den maximalen Überblick zu haben, empfiehlt es sich, eine gewisse Ordnung einzuhalten. Wie in dem obigen Beispiel, kann es sehr hilfreich sein, die Variablen und ihre Typ-Zuweisungen sichtlich zu trennen. Bei einer Zuweisung, wie wir es als nächstes kennenlernen, empfiehlt sich auch immer ein Leerzeichen mehr einzutippen.
Siehe dazu folgendes Code-Beispiel:
Variablen initialisieren (einen Wert erstmalig zuweisen) :
begin
  s := 'Meine Zeichenkette';
  i := 20;
end;
Das ":=" weist einer Variable einen Wert zu. Der Wert muss auch in der Definitionsmenge des Variablen-Types liegen.
 

Deklaration von Konstanten

Konstanten deklarieren (Den Namen der Konstante festlegen UND einen Wert zuweisen) :
const
  APP_NAME = 'Mein Programm';
  VERSION = 1170;
Allgemein: Name der Konstante = Wert;
 

Rechenoperatoren

Die "normalen" Rechenoperatoren (+,-,*) sind auf alle Zahlentypen anwendbar. Kritisch ist es aber bei der Division. Da z.B. die Rechnung 7/3 für Integer-Werte lösbar ist, muss hierfür ein spezieller Operator eingeführt werden: DIV
Dieser Operator gibt an wie oft die 3 in die 7 passt (2).
Nun ist aber je nach dem auch die Information über den bei der Division entstandenen Rest brauchbar.
Lösung: Der Operator MOD
7 MOD 3 = 1
Beispiele:
// Nebenbei: Mit zwei Slashes wird ein einzeiliger Kommentar eingeleitet
// Kommentare werden vom Compiler beim Übersetzen des Quellcodes in Binärcode ignoriert.

// Beispiel 1 - Integer:
var
  a,b,r,q : Integer;
[..]
  a := 7 * 5;
  b := 5 - 3 + 1;
  q := a DIV b; // q ist hiernach = 11

  r := a MOD b; // r ist hiernach = 2
[..]
{
   Ganz nebenbei:
       Es gibt auch mehrzeilige Kommentare ;-)
       Auch diese dienen dazu den Code zu kommentieren und werden vom Compiler ignoriert :o)
       Wichtig ist, dass diese dann aber auch mit
                                         dem "Gegenstück" beendet werden: }



// Beispiel 2 - Real:
const
  E = 2.71828183;
  {
    VORSICHT!
              In Delphi wird Groß und Kleinschreibung
              Nicht berücksichtigt! Wird irgendwo eine lokale
              Variable auch e genannt, so kann auf E nichtmehr
              zugegriffen werden.
              Näheres hierzu kommt später in OOP ;)
  }

  // Es bietet sich also eher an, "Sprechendere Namen" zu verwenden:
  EULER_EXP = 2.71828183;


[..]
var
  a, b, q : Real;
begin
  a := EULER_EXP*2;
  b := 20*EULER_EXP/4;
  q := a/b; // q ist hiernach 0.4
[..]


// Beispiel 3 - Strings:
var
  s1, s2, hallo_welt : String
[..]
  s1:='Hallo ';
  s2:='Welt';
  hallo_welt:=s1+s2;  // Strings addieren -> Strings werden so zusammengefügt
                      // Subtraktion, Multiplikation und Division sind logischerweise nicht möglich ;)