Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste


C - Programmierung am Raspberry  Schaltpläne und Bauteilbeschreibungen  Adapterkabel  Mechanik  EDV-Literatur deutsch 



    FIAN Österreich     Marktplatz Natur    
    Bäckerei Freitag

capt02

Kapitel zwei - Variable & Rechnen

In C echte Arbeit leisten: Variablen erstellen und mathematische Operationen an ihnen ausführen.

In einigen Sprachen können Sie im Laufe des programmierens Variablen erstellen und beliebige Daten in diese einfügen. C ist nicht so. Um eine Variable in C zu verwenden, müssen Sie sie zuerst erstellt haben, und zum Zeitpunkt der Erstellung müssen Sie festlegen, welche Art von Wert gespeichert werden soll. Auf diese Weise kann der Compiler einen Speicherblock mit der richtigen Größe für die Variable zuweisen. Dieser Vorgang zum Erstellen einer Variablen wird als Deklaration bezeichnet.

Integer

Es gibt mehrere grundlegende Datentypen in C, aber wir werden uns zunächst einen der am häufigsten verwendeten ansehen: den int-Typ, der zum Speichern eines ganzzahligen Werts verwendet wird.

#include <stdio.h>
 
void main (void)
{
  int a;       // Dies sind Variablen - Deklarationen
  int b = 3;   // in C. Eine Variable muss deklariert
  int c;       // werden, bevor man sie verwenden kann.
 
  a = 2;
  c = a + b;
  printf ("Die Summe der Addition von %d und %d ist %d\n", a, b, c);
}
[MEHRFACHE DEKLARATIONEN]
Sie können mehrere Variablen desselben Typs in einer durch Kommas getrennten Zeile deklarieren. Für das Beispiel hier könnten Sie anstelle von drei separaten int-Deklarationen int a, b = 3, c in einer Zeile eingeben.

Die obersten drei Zeilen innerhalb der Hauptfunktion sind hier Deklarationen. Sie teilen dem Compiler mit, dass wir Variablen mit den Bezeichnungen a, b und c verwenden möchten und dass jede vom Typ int ist, d.h. eine Ganzzahl. In der zweiten Zeile sehen wir ein Beispiel für eine Initialisierung gleichzeitig mit einer Deklaration. Diese speichert einen Anfangswert von 3 in der Variablen b. Beachten Sie, dass die Werte von a und c zu diesem Zeitpunkt undefiniert sind. Sie können davon ausgehen, dass eine Variable, in der kein Wert gespeichert ist, immer 0 ist. Dies ist jedoch in C nicht der Fall. Bevor Sie den Wert aus einer Variablen lesen oder in einer Berechnung verwenden, müssen Sie einen Wert in ihr speichern. Das Lesen einer Variablen vor dem Initialisieren ist ein häufiger Fehler in C.

[ARITHMETISCHE KURZFORMEN]
C erlaubt Verknüpfungen für einige allgemeine Operationen. Anstatt beispielsweise a = a + 1 einzugeben, können Sie einfach a++ eingeben, oder für a = a * 3 können Sie a* = 3 eingeben

Die nächsten beiden Zeilen arbeiten mit den von uns deklarierten Variablen.

  a = 2;

Hier wird der Wert 2 in der Variablen a gespeichert, die diesen Wert nun hat, bis sie geändert wird. Der Grund, warum a als Variable bezeichnet wird besteht darin, dass sie variieren kann. Sie können ihren Wert beliebig oft ändern, jedoch nur in eine andere Ganzzahl. Der Wert einer Variablen kann sich ändern, ihr Typ wird jedoch beim Deklarieren festgelegt.

  c = a + b;

Diese Zeile addiert a und b und speichert das Ergebnis in c.

  printf ("Die Summe der Addition von %d und %d ist %d\n", a, b, c);

Dies ist eine weitere Verwendung der formatierten Druckfunktion, die wir im vorherigen Kapitel gesehen haben. Beachten Sie die drei %d-Symbole in der Zeichenfolge. Dies sind Formatbezeichner, und so geben Sie Zahlen in C aus. Wenn die Funktion printf ausgeführt wird, wird jedes %d durch eine Dezimaldarstellung (d für Dezimalzahl) der Variablen an der entsprechenden Stelle in der Liste nach der Zeichenfolge ersetzt. Das erste %d wird also durch den Wert von a ersetzt, das zweite durch den Wert von b und das dritte durch den Wert von c.

Kompilieren Sie das obige Programm und führen Sie es dann aus. Das sollte etwa so aussehen:

$ ./myprog
Die Summe der Addition von 2 und 3 ist 5
$

Oben: C kann die Ergebnisse der Berechnungen in den von Ihnen gewählten Formaten auf das Terminal drucken.

Gleitkommazahlen

Wir können also zwei ganze Zahlen addieren. Was können wir sonst noch tun? Eine Sache, die wir vielleicht tun möchten, ist die Verwendung von Gleitkommazahlen. Zahlen mit einem Dezimalpunkt. Diese haben einen anderen Typ, float genannt. Versuchen Sie, den obigen Code so zu ändern, anstatt:

  int a;

verwenden Sie

  float a;

Dies teilt dem Compiler mit, dass a jetzt ein Gleitkommawert und keine Ganzzahl mehr ist. Kompilieren Sie Ihr Programm und führen Sie es aus. Was geschieht?

Hoppla! Das sieht nicht richtig aus, oder? Was passiert ist, ist, dass die printf-Anweisung jetzt falsch ist, obwohl die Mathematik noch korrekt ist. Sie weisen es an, einen Gleitkommawert als Dezimalzahl zu drucken. Um dies zu beheben, ändern Sie wie folgt alle %d in der Funktion printf in %f. Dies ist der Formatbezeichner für eine Gleitkommazahl:

#include <stdio.h>
 
void main (void)
{
  float a;
  float b = 3.641;
  float c;
 
  a = 2.897;
  c = a + b;
  printf ("Die Summe der Addition von %f und %f ist %f\n", a, b, c);
}

Oben: Vergessen Sie nicht, %f anstelle von %d als Druckspezifizierer zu verwenden, wenn Sie die int-Werte im Beispiel in float-Werte ändern

[NACHKOMMASTELLEN]
Sie können die Anzahl der Dezimalstellen festlegen, die für einen Gleitkomma-Typbezeichner in printf angezeigt werden sollen, indem Sie einen Dezimalpunkt und die Anzahl der Stellen zwischen % und f setzen. %.3f zeigt also einen Gleitkommawert mit drei Ziffern nach dem Dezimalpunkt.
  printf ("Die Summe der Addition von %f und %d ist %d\n", a, b, c);

Das sollte etwas viel Sinnvolleres hervorbringen, wenn Sie es ausführen. Dies ist eine wichtige Lektion in C. Es wird genau das tun, was Sie ihm sagen, auch wenn es keinen Sinn ergibt. Sie haben ihm gesagt, er soll Ihnen eine Gleitkommazahl anzeigen, als wäre es eine Dezimalzahl, und der Compiler hat angenommen, dass dies das ist, was Sie wollten, obwohl das Ergebnis Unsinn war. Wenn Sie mit Variablen arbeiten, behalten Sie immer im Auge, welche Werte Sie in welche Typen eingeben, da es leicht ist, Fehler einzufügen, wenn Sie davon ausgehen, dass eine Variable von einem Typ ist, und es sich tatsächlich um einen anderen handelt. Ein häufiger Fehler besteht darin, die Ergebnisse einer Berechnung von Gleitkommawerten in eine Ganzzahl zu setzen.

Versuchen Sie Folgendes: Machen Sie b aus dem obigen Beispiel ebenfalls zu einem Gleitkomma (nicht zu vergessen, dass der Formatbezeichner im printf geändert wird), belassen Sie jedoch c als int und setzen Sie die beiden Gleitkommazahlen auf Werte mit Dezimalstellen wie folgt:

  float a;
  float b = 3.641;
  int c;
 
  a = 2.897;
  c = a + b;
  printf ("Die Summe der Addition von %f und %f ist %d\n", a, b, c);

Das Ergebnis wird wie Folgt aussehen:

  Die Summe der Addition von 2.897000 und 3.641000 ist 6

6? Das ist nicht richtig! Aber genau darum haben Sie gebeten. Der Compiler addierte die beiden Gleitkommawerte und erhielt die Antwort 6.538. Anschließend forderten Sie den Compiler auf, diesen Wert in c, eine ganzzahlige Variable, einzufügen. Also hat der Compiler einfach alles nach dem Dezimalpunkt weggeworfen! Wenn Sie c nach float ändern und das endgültige %d in %f ändern, werden Sie feststellen, dass dies die richtige Antwort ergibt.

Das gibt Ihnen eine Vorstellung davon, wie C mit Zahlen umgeht und wie Sie es für die Arithmetik verwenden können. Im nächsten Kapitel werden wir uns ansehen, wie Sie die Ergebnisse von Berechnungen verwenden, um Entscheidungen zu treffen.


Zurück zum Inhalt    Vorige Seite    Nächste Seite

capt02.txt · Zuletzt geändert: 2020/10/29 10:38 von administrator