K-EL: Variablen und Datentypen (2)

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
= Einführung =
Wir wollen mit diesen ersten Übungen in die Welt der Programmierung eintauchen. 

= Nutzen von Variablen =

== Variablen deklarieren, definieren und mit ihnen rechnen ==
Wir haben gesehen, dass es meist sinnvoll ist, nicht direkt mit den Werten zu arbeiten, sondern mit Variablen. Wir wollen uns anschauen, wie Variablen in der Programmiersprache festgelegt werden.

Dazu benötigen wir die Datentypen, denn, wir erinnern uns, jeder Variable muss gesagt werden, von welchem Typ sie ist, beziehungsweise, welche Werte sie aufnehmen kann.

Das folgende Beispiel erzeugt eine Variable $x$ vom Typ Integer, also eine natürliche Zahl. 
<code id="4f8f15db3f43c">int x;</code>
Nachdem die Variable deklariert wurde, kann ihr ein Wert zugewiesen werden, hier $5$.
<code id="4f8f15db3f4aa">x = 5;</code>
Um sehen zu können, ob der Computer uns auch verstanden und die Variable richtig deklariert und definiert hat, können wir uns den Wert der Variable ausgeben lassen, also uns anzeigen lassen. Um dies zu tun, nutzen wir folgendes Kommando:
<run id="4f8f15db3f5f1">System.out.println(x);</run>
Nachdem wir nun die Variable definiert und mit einem Wert belegt haben, können wir mit ihr rechnen.

'''Hinweis''' Damit der Rechner weiß, wann ein Kommando aufhört und ein neues anfängt, muss man hinter jeden Befehl ein Semikolon setzen.

<run id="4f8f15db3f672">
double rechnung = x + x + x + x;
System.out.println(rechnung);
</run>


'''Übungen zu obigem Beispiel'''
* Weise der Variable $x$ einen anderen Wert zu und lass den letzten Ausdruck neu berechnen
* Was passiert, wenn du das Semikolon am Ende der ersten Zeile "double rechnung = ..."  weglässt/löschst? 
* Berechne statt $4x$ den Term $x^2+3x-10$ für verschiedene Werte $x$ $(-3,4,5,100,123456)$ [Nur Grundrechenoperationen $+|-|*|/$].


Wir können der Variable auch erneut Werte zuweisen, der alte Wert wird dann überschrieben.
Der Wert der Variable $rechnung$ ist zunächst $17$, da $2 * g + 3 = 2 * 7 + 3 = 17$. 
Direkt danach wird $rechnung$ dann aber auf 5 gesetzt, und danach auf $rechnung / 2$, also $5 / 2 = 2.5$.
<run>
double g = 7;
double rechnung = 2*g + 3;
rechnung = 5;
rechnung = rechnung / 2;
System.out.println(rechnung);
</run>

== Strings ==
Neben Zahlen als Inhalt für Variablen haben wir Strings kennengelernt. Im folgenden Beispiel wird die Variable text vom Typ String erzeugt und ihr der Wert "Hallo Welt!" zugewiesen:

<code id="4f8f15db3f525">String text = "Hallo Welt!";</code>

Mehrer Strings können, ähnlich wie Sätze, die aneinandergereiht einen Text ergeben, mittels + miteinander verkettet werden. Der Zusammengesetzte Text kann wiederum einer neuen Variable zugewiesen werden:

<run id="4f8f15db3f700">
String satz1 = "Es war einmal vor langer, langer Zeit in einem Land weit entfernt.";
String satz2 = "Dort wohnte Marie, eine junge Bäuerin.";
String satz3 = "Und wenn Sie nicht gestorben ist, so lebt sie dort noch heute";

String maerchen = satz1 + satz2 + satz3;

System.out.println( maerchen );
</run>

== Kommentare verwenden ==
Damit jemand, der den Code liest, besser verstehen kann, was der Code machen soll, kann man überall im Code Kommentare hinterlassen.

Man schreibt einfach zwei Schrägstriche (//). Alles, was dahinter steht, ignoriert der Computer einfach.

<run id="4f8f15db3f77e">
// Hallo! Ich bin ein Kommentar!
int a = 3; // Ich kann auch hinter einer Anweisung stehen.
int b = 5; // So kann ich dem Leser erklären, was ich vorhabe.

// In diesem Fall: nix sinnvolles. :)

System.out.println(a);
</run>

Selbst recht einfache Programme sind für den Leser nur noch sehr schwer nachzuvollziehen, wenn erklärende Kommentare fehlen.

== Ausgabe von Texten ==

Mithilfe von System.out.println() können wir auch Texte und Werte von Variablen kombiniert ausgeben:

<run id="4f8f15db3f7fc">
int a = 2; // Länge des Rechtecks
int b = 3; // Breite des Rechtecks

// Berechnung des Flächeninhalts
int A = a * b;

System.out.println("Der Flächeninhalt eines Rechtecks mit den Seitenlängen " + a + "cm und " + b + "cm beträgt " + A + "cm²")
</run>
Wir müssen also z.B. den String "Der Flächeninhalt eines Rechtecks mit den Seitenlängen " nicht erst in einer Variablen speichern.
= Erstes 'größeres' Programm =

Es soll der Flächeninhalt* des Nikolaushauses berechnet werden. Hier eine Skizze:

[[Bild:Elephan_HausNikolaus.png]]

Wie können wir den Flächeninhalt berechnen?
* berechnen den Flächeninhalt des Rechtecks
* berechne den Flächeninhalt des Dreiecks
* addiere Flächeninhalt Rechteck und Flächeninhalt Dreieck

Das folgende Struktogramm veranschaulicht, wie unser Programm den Flächeninhalt des Hauses berechnen soll:

[[Bild:Elephan_HausFlaecheninhalt_einfach.png]]

'''Aufgabe''' 
* Lies dir den Quelltext einmal komplett durch.
* An den interessanten Berechnungsstellen steht stets '''0.0'''. Trage statt der 0.0 an diesen Stellen den entsprechenden Term zur Berechnung der jeweiligen Größe ein

<run id="4f8f15db3fac2">
double a = 5; // Breite des Hauses in m
double b = 4; // Höhe des Hauses ohne Dach in m
double h = 3; // Dachhöhe in m

// Flächeninhalt des Hauses ohne Dach
double rechteck = 0.0;

// Flächeninhalt des Dachs
double dach = 0.0;

// Gesamtfläche
double gesamt = 0.0;

System.out.println('Der Flächeninhalt des Hauses beträgt ' + gesamt + 'm².');
</run>

<popup name="*)">
Streng genommen, ist ein Haus ja ein Körper im dreidimensionalen Raum, besitzt also ein Volumen. Da der Nikolaus aber nur auf dem Papier existiert, somit nur 2D ist, reicht ihm auch ein 2D Haus aus, welches natürlich nur einen Flächeninhalt und kein Volumen besitzt. ;)
</popup>