Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

1 - Rechnen mit Variablen

Variablen sind für uns mit bestimmten Namen belegte Speicher, in denen zum Beispiel Zahlen abgelegt werden können, mit denen man später Berechnungen ausführt. In der Mathematik benutzt man Variable um allgemeine mathematische Zusammenhänge darzustellen.


Im folgenden Programm A02_01, werden die Variablen a, b und c definiert. Die Variable a enthält den Wert 25, b den Wert 17 und das Ergebnis der Addition von a und b wird in der Variablen c abgelegt.

 

 

Übung 1

 

Zwei Zahlen a und b, denen die Werte a = 25 und b = 17 zugeordnet sind, sollen addiert werden. Das Ergebnis wird in der Variablen c abgelegt und auf im Terminal ausgegeben.

  • Gib das unten stehende Programm ein.
  • Speicher es anschließend unter dem Namen A02_01 ab.
  • Versuche vorherzusagen, was das Programm auf dem SimpleIDE Terminal anzeigen wird, indem du beschreibst, was in jeder Programmzeile passiert.
  • Starte das Programm mit Run with Terminal und vergleiche deine Vorhersage mit der tatsächlichen Terminalausgabe.

 

 

Das Programm A02_01.bs2

 

Wie arbeitet das Programm A02_01.bs2?

 

Zeile 9
Das Programm deklariert über int a eine ganzzahlige  Variable a (int steht für integer) und weist ihr mit dem Zeichen = den Wert 25 zu.


Zeile 10
Der zweiten ganzzahligen Variable b wird über int b = 17 der Wert 17 zugewiesen.


Zeile 11
Der dritten ganzzahligen Variable c wird über die Zuweisung int c = a + b das Ergebnis der Addition von a und b übergeben.


Zeile 12
Mit der print-Anweisung print("c = %d ",c) wird zunächst der Text oder String c = ausgegeben, gefolgt vom Wert von c. Das Steuerzeichen %d ist ein Formatierungszeichen, das festlegt, wie der Wert der Variablen c angezeigt werden soll; in diesem Fall als Dezimalzahl. Die Zahl 42 wird auf dem Terminal ausgegeben.

 

Was du wissen solltest!

Das Zeichen + ist ein sogenannter binärer Operator, d.h., er benötigt zwei Eingabegrößen, die er in diesem Fall miteinander additiv verknüpft. 

Beispiele binärer Operatoren sind:

+      Addition
-      Subtraktion
*      Multiplikation
/      Division
%n     Modulo n (es wird der Rest bei einer Division durch n ausgegeben).

Beispiel 13%5 ergibt den Wert 3, da 13 geteilt durch 5 den Rest 3 hat.
Jede C-Anweisung wird mit einem Strichpunkt (;) abgeschlossen.

Beispiel
     …
     print(„Hallo\n“);
     …

 

Übung 2

 

Zwei Zahlen a und b werden die Werte 25 und 17 zugewiesen; anschließend werden sie addiert und subtrahiert. Die Variablenwerte sowie die Ergebnisse werden im Terminal ausgegeben.

Beachte, dass beim zweiten Aufruf von c  die Variable nicht mehr mit int deklariert werden muss und dass sich im print-Befehl mehr als nur eine Stringausgabe unterbringen lässt; jeder Aufruf wird durch Komma getrennt in Klammern angegeben.

  • Speicher das Programm über Save Project As unter dem Namen A02_02.
  • Veränder die Hauptfunktion wie unten gezeigt.
  • Starte das Programm erneut und überprüfe die Ergebnisse.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abbildung 2.2  Programm A02_02.bs2

 

 

 

 

 

Terminalausgabe

Jetzt kommst du!

 

Aufgabe A02_03

Erweiter das Programm A02_02 so, dass alle fünf binären Operatoren getestet werden und nenne das neue Programm A02_03. Setze für a den Wert 36 und für b den Wert 7 fest. Überlege vorher welche Rechenergebnisse auf dem Terminal angezeigt werden müssen und starte erst dann das Programm.

 

Aufgabe A02_04

Deklariere die Variablen x, m und b mit den Werten x = 12, m = -3 und b = 45. Berechne anschließend den Term y = m*x + b und gib den Wert von y auf dem Terminal aus. Speicher das fertige Programm unter A02_04 ab.

 

Aufgabe A02_05

Schreibe ein Programm, das das Volumen eines Quaders berechnet und im Terminal anzeigt. Die Kantenlängen des Quaders sind: a = 14 cm, b = 12 cm und c = 24 cm. Speicher das fertige Programm unter A02_05 ab.

 

 

Mögliche Programmlösungen für die Aufgaben A02_03, A02_04 und A02_05  sind auf den folgenden Seiten mit zugehöriger Terminalausgabe wiedergegeben. Versuche jede Programmzeile in ihrer Wirkung  zu erklären.

 

 

 

Programmlösungen

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Lösungsvorschlag zurAufgabe A02_03

 

 

 

 

 

Terminalausgabe

 

 

 

 

 

 

 

 

 

 

 

 

Lösungsvorschlag zu Aufgabe A02_04

 

 

 

Terminalausgabe

 

 

 

 

 

 

 

 

 

 

Lösungsvorschlag zu Aufgabe A02_05

 

 

Terminalausgabe

In allen Berechnungen kamen bisher nur ganze Zahlen vor. Wir haben in Aufgabe A02_03 gesehen, dass die einfache Division von 36 geteilt durch 7 als Ergebnis 5, statt wie zu erwarten 5,142… ergab.  Die Erklärung liegt in der Definition des Zahltyps begründet. Wenn als Ergebnis eine reelle Zahl herauskommen kann, dann muss die entsprechende Variable auch so deklariert sein.
Auf den folgenden Seiten werden wir uns die reellen Zahlen, und wie sie in der Sprache C aufgerufen werden, genauer anschauen.

2 - Rechnen mit reellen Zahlen

Bisher haben wir uns mit ganzen Zahlen (integer) beschäftigt, die die negativen und positiven Zahlen umfassen. In der Sprache C lassen sich aber auch Fließkomma-Zahlen mit einer endlichen Anzahl von Nachkommastellen ansprechen, ähnlich wie wir es vom Taschenrechner kennen. Die Anzahl der Stellen rechts und links vom Komma sind flexibel, der Dezimalpunkt verschiebt damit dauernd seine Position, er scheint zu "fließen".

Übung 3

 

Berechne mit Hilfe des Taschenrechners den Kreisumfang eines Kreises mit Radius 1,0 LE.
Gib das unten stehende Programm A03 ein und speicher es anschließend unter dem Namen A03_01 ab.

Um mit Fließkommazahlen arbeiten zu können, muss vor der Eingabe des Programms SimpleIDE voreingestellt werden.

  • Öffne über Show Project Manager  den Project-Manager.
  • Wähle den Registereintrag Linker.
  • Aktiviere Math lib deaktiviere Tiny lib.
  • Schließe den Project Manager

 

Damit hat SimpleIDE die Math-Bibliotheksfunktionen dem Projekt hinzugefügt.

  • Starte Run with Terminal  und vergleiche die Ergebnisse des Propeller Mikrocontrollers (dargestellt auf dem SimpleIDE Terminal) mit den Ergebnissen deines Taschenrechners).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Programm A03_01

Wie arbeitet das Programm A03_01?

 

Das Programm kennt die Zahl PI = 3,1415926..., die bereits in der simpletools-Bibliothek hinterlegt ist.

  • Zeile 10  Innerhalb der Hauptfunktion wird eine Fließkommazahl r mit float r = 1.0 initialisiert.
  • Zeile 11  Im Anschluss daran wird der Kreisumfang über 2.0 * PI * r berechnet und c zugewiesen.
  • Zeile 12  Der Befehl print("Umfang = %f \n", c) gibt den in c hinterlegten reellen Zahlenwert aus. Beachte den neuen Formatierungsbefehl %f für eine Fließkommazahl.  

 

Es lassen sich in C verschiedene Zahltypen deklarieren, die unterschied- lich große Zahlenbereiche verwalten.

signed char                -127 to 127    
char                          0 to 255    
int              -2,147,483,647 to 2,147,483,647    
unsigned int                  0 to 4,294,967,295    
long                    Identisch mit "int"    
unsigned long           Identisch mit "unsigned int"    
float            approx 3.4X10-38 bis 3.4X1038 (mit 6-st. Genauigkeit)    

 

Übung 4

 

Berechne die Fläche eines Kreises. Die Formel lautet:   A = PI * r * r

 

  • Speicher die vorherige Übung unter dem neuen Namen A03_02 ab.
  • Verändere das Programm so, wie unten dargestellt.
  • Vergleiche die Ergebnisse auf dem Terminal mit den Ergebnissen deines Taschenrechners.
  • Setze den Wert des Radius auf 3 und berechne erneut.

 

 

Programm A03_02.bs2

Programm A03_02.c

 

 

Übung 5

 

Erweitere das Programm A03_02.c so, dass auch das Volumen und die Oberfläche einer Kugel bestimmt und auf dem Terminal ausgegeben werden. Informiere dich in einer Formelsammlung über die entsprechenden Formeln.

 

 

Programm A03_02a.c

Programm A03_02a.c
Terminalausgabe zum Programm A03_02a.c

Wir haben jetzt verschiedene Variablentypen kennengelernt und wissen, wie man sie in einem C-Programm aufruft. Eine weitere Gruppe von Variablen, die man auch Feldvariablen nennt, werden wir uns jetzt genauer ansehen.

3 - Feldvariable

Unter Feldvariablen versteht man eine Gruppe von Variablen, die alle den gleichen Namen tragen und sich nur durch einen Index voneinander unterscheiden. Ein Beispiel soll das verdeutlichen.

 

Wir haben eine große Kiste mit 100 Fächern. Die Kiste bezeichnen wir mit K. In jedem der 100 Fächer der großen Kiste liegt ein bestimmter Geldbetrag; zum Beispiel im Fach 21 ein Betrag von 150. Alle 100 Fächer der Kiste werden von Null beginnend durchnummeriert.

 

Dann trägt das erste Fach z. B. die Bezeichnung K[0], das zweite K[1] usw. und das letzte K[99]. Wenn ich mitteilen möchte, dass im Fach 21 der Geldbetrag 150 liegt, schreibe ich kurz: K[21] = 150.

 

Die folgende Deklaration initialisiert ein Feld mit dem Namen P mit insgesamt 6 Speicherplätzen. Jedes Feldelement ist durch einen Namen (in diesem Beispiel P) und einen Indexwert eindeutig bestimmt.
Nummeriert man die Speicherplätze durch, dann trägt der erste Speicherplatz die Feldnummer 0, der letzte die Feldnummer 5.
 
int P[] = {1, 2, 3, 5, 7, 11};

Im Beispiel oben sind sechs Primzahlen im Array enthalten und jede einzelne lässt sich über eine Arrayvariable ansprechen. Der Name des Arrays ist hier P. Die Zahl 3 würde dann als Arrayelement mit P[2] angesprochen werden. P deshalb, weil die Zahl dem Array P per Definition angehört und 2 deshalb, weil die Zahl 3 an der 2. Stelle im Feld steht (bei Null wird angefangen zu zählen). Die Zahl 1 hat also die Position 0, die Zahl 2 die Position 1 usw.

 

Übung 6

 

Gib das unten stehende Programm A04_01 in den SimpleIDE Editor ein und speicher es über Save Project As auf der Festplatte ab.

 

Schau dir das Programm genau an und versuche durch Überlegung herauszufinden, was auf dem SimpleIDE Terminal angezeigt wird.

  • Starte danach mit Run with Terminal das Programm und vergleiche deine Vorhersagen mit dem tatsächlichen Resultat.

 

 

Programm A04_01.c

Programm A04_01.c

 

Wie arbeitet das Programm A04_01.c?

 

Zeile 10
int P[] = {1, 2, 3, 5, 7, 11} initialisiert ein Feld mit dem Namen P; den sechs Adressen im Feld wird jeweils ein Zahlenwert zugewiesen. Diese Zahlen stehen, durch Komma getrennt, in der geschweiften Klammer.
Wir wissen, dass in P[0] die Zahl 1, in P[1] die Zahl 2, in P[2] die Zahl 3, in P[3] die Zahl 5 und so weiter abgelegt sind.


Zeile 11
Der Aufruf print("P[0] = %d\n", P[0]) gibt dann den Inhalt des Speichers P[0] aus und das ist bekanntlich die 1.


Zeile 12
Ebenso wird mit print("P[3] = %d\n", P3]) die Zahl 5 ausgegeben.

 

Was du wissen solltest!

 

  • Ein Feld mit sechs Elementen lässt sich auch ohne Angabe von Zahlenwerten ganz allgemein mit dem Aufruf  int [b6] deklarieren.  
    
  • Der Inhalt eines Feldelementes lässt sich zu jeder Zeit über ein Programm verändern. Die Zuweisung  b[4] = 7  überschreibt zum Beispiel den Wert im angegebenen Feldelement mit der Zahl 7.
    

 

Versuch mal dies!

 

Hier wollen wir zeigen, wie man die Inhalte eines Speicherelementes neu belegt. Schau dir die Zeilen nach der Deklaration des Feldes genau an. Am Anfang sind den einzelnen Feldelementen folgende Zahlen zugewiesen:

 

  • p[0] = 1, p[1] = 2, p[2] = 3, p[3] = 5, p[4] = 7 und p[5] = 11.


In Zeile 4 des Hauptprogramms wird p[3] der neue Wert 101 zugewiesen und anschließend auch ausgedruckt.
Hier wollen wir zeigen, wie man die Inhalte eines Speicherelementes neu belegt. Schau dir die Zeilen nach der Deklaration des Feldes genau an. Am Anfang sind den einzelnen Feldelementen folgende Zahlen zugewiesen:

 

  • p[0] = 1, p[1] = 2, p[2] = 3, p[3] = 5, p[4] = 7 und p[5] = 11.


In Zeile 4 des Hauptprogramms wird p[3] der neue Wert 101 zugewiesen und anschließend auch ausgedruckt.

 

Übung 7

 

  • Speicher mit  Save Project As  das Programm A04_01 unter dem neuen Namen A04_02 auf der Festplatte ab.
  • Füge die beiden unten angegebenen Zeilen hinzu.
  • Starte das Programm mit Run Project with Terminal und bestätige, dass die Feldvariable p[3] zunächst die Zahl 5 und später 101 enthält

 

 

Programm A04_02.c

Programm A04_02.c

 

 

Jetzt kommst du!

 

Speicher mit  Save Project As  das Programm A04_01 unter dem neuen Namen A04_02 auf der Festplatte ab.
Füge die beiden unten angegebenen Zeilen hinzu.
Starte das Programm mit Run Project with Terminal und bestätige, dass die Feldvariable p[3] zunächst die Zahl 5 und später 101 enthält

 

Kommentar schreiben

Kommentare

  • olaf (Sonntag, 10. Dezember 2017 08:35)

    wow...die mit Abstand beste Site, die ich bisher zu diesem Thema gesehen habe :-))
    Vielen Dank dafür. Hilft super beim Erklären!!

  • David Eisenblätter (Sonntag, 11. Februar 2018 13:38)

    Sehr schön erklärt, und zufällig heute, wo ich nochmal nach einer detailierten Gedankenstütze diesbezüglich gesucht habe!

    Vielen vielen Dank!

    David.

Bitte geben Sie den Code ein
* Pflichtfelder
Druckversion Druckversion | Sitemap
© Reinhard Rahner - Gettorf