Wie merke ich mir was? – Computerspeicher und das Konzept der Variablen

Keylearnings:

  • Wie verwende ich Variablen zum Speichern von Daten?
  • Was sind Datentypen?

Ich erinnere mich noch gut an eine Fernsehsendung aus den Neunzigern.

Sie hatte den Namen „Das Familienduell“.

Im Vorfeld der Sendung wurden Menschen befragt, welche Wörter ihnen zu bestimmten Begriffen einfallen. Bei dem Begriff Affe sagten die Leute z.B. Banane, Zoo, Ehemann 😉 und Schimpanse.

In der Sendung traten dann zwei Familien gegeneinander an und mussten die zu einem Begriff am meisten genannten Wörter erraten.

Die Familie, die als erstes die Top 5 der am häufigst genannten Wörter erraten hatte, hatte gewonnen.

Computerspeicher das Konzept Variablen

Lass uns dieses Spiel mit dem Begriff Computer spielen. Was fällt dir ein?

Vielleicht Tastatur, Bildschirm, Bill Gates oder Steve Jobs?

Mir fällt als erstes Speicher ein. Ein Computer ohne Speicher ist wie ein Auto ohne Motor, ein Vogel ohne Flügel oder eine Barbie ohne Blond.

Deshalb sollten wir uns, als große Programmierer in spe, dem Speicher möglichst bald zu wenden. Nämlich jetzt!

Ich habe eine gute und eine schlechte Nachricht!

Die schlechte Nachricht ist, dass es ziemlich kompliziert ist den Speicher eines Computers so gut zu organisieren (rede mal mit einem C Programmierer über Zeiger), dass man die gespeicherten Dinge schnell wieder findet.

Die gute Nachricht ist, dass wir uns glücklicherweise mit der internen Organisation des Speichers nicht beschäftigen brauchen, da es das Konzept der Variablen gibt.

Was ist eine Variable?

Eine Variable ist grob gesagt ein von dir gewählter Name für einen Speicherplatz, der einen bestimmten Typ von Daten aufnehmen kann, die du zu einem späteren Zeitpunkt verarbeiten kannst. So etwa wie eine beschriftete Flasche für Flüssigkeiten oder eine Kiste mit Etikett für Gemüse.

Wie sieht das in der Praxis aus?

Ein gutes Beispiel ist Franka. Franka möchte eine Bohrmaschine im Internet kaufen und die Bezahlung über ihren Online Banking Account abwickeln.

Colored shopping bags

Damit die Überweisung funktioniert, muss Franka unterschiedliche Daten wie Name, Kontonummer und Überweisungsbetrag angeben, die zur späteren Verarbeitung zwischengespeichert werden müssen.

Und genau das können wir mit Variablen bewerkstelligen!

Wir müssen lediglich drei Variablen einführen (der Fachmann spricht von Deklaration) NameVonFranka, KontonummerVonFranka und ÜberweisungsbetragVonFranka, in denen wir diese Informationen speichern (Wie das in JAVA aussieht sehen wir uns in Kürze an).

Worin unterscheiden sich diese Eingabedaten?

Nun offensichtlich ist Franka’s Name ein Text, die Kontonummer eine ganze Zahl (Kontonummer mit führender Null ausgenommen) und der Überweisungsbetrag eine Dezimalzahl.

Genau wie man Gemüse nicht in einer Trinkflasche lagern kann, können wir beispielsweise einen Text nicht in einen Speicher für eine Zahl schreiben.

Zum einen benötigen Texte und Zahlen eine unterschiedliche Größe von Speicherplatz und zum anderen müssen diese unterschiedlich verarbeitet werden.

Was ist das Ergebnis von 5+6?

Ja, bitte lauter! Ich habe 11, 3588.77 und 56 gehört. Wie bitte? 3588,77?? Nein, das ist falsch. Aber 11 und 56 das ist richtig.

Wie jetzt? Wie kann das denn angehen?

Nun wir haben nicht festgelegt, ob 5 und 6 Textzeichen oder Zahlen sind.

Wenn wir 5 und 6 als Zahlen interpretieren, dann ist richtig, was uns in der Schule beigebracht wurde. Das Ergebnis ist 11.

Interpretieren wir 5 und 6 allerdings als Textzeichen, dann führt das Pluszeichen zu einer Aneinanderreihung (fachmännisch Konkatination) der Zeichen 5 und 6 und wir erhalten 56.

Kim, was ist wenn 5 eine Zahl und 6 ein Zeichen ist?

Sehr gute Frage! In diesem Fall kann Java die Anweisung nicht verarbeiten und es wird ein Fehler geworfen.

Genauso führen die Operatoren für die Multiplikation und der Division zu einem Fehler, wenn 5 und 6 als Textzeichen interpretiert werden (Sorry C++ Programmierer ein Überladen von Operatoren ist nicht möglich).

Gut Kim, aber wie lege ich denn fest wie die Daten interpretiert werden sollen?

Zu diesem Zweck gibt es die sogenannten Datentypen. Immer dann, wenn wir eine Variable einführen, müssen wir festlegen, ob ganze Zahlen, Texte, Dezimalzahlen oder anderes darin gespeichert werden soll.

Den Datentyp, im welchem wir ganze Zahlen speichern können, nennt man Integer. Für Dezimalzahlen gibt es den Datentyp double und für Texte verwenden wir Variablen vom Typ String.

Welche Datentypen benötigt Franka?

Da die Kontonummer eine ganze Zahl ist, muss die Variable KontonummerVonFranka ein Integer sein. Franka’s Name ist ein Text, weshalb die Variable NameVonFranka ein String ist. Der Überweisungsbetrag ist eine Dezimalzahl was eine Variable vom Typ double notwendig macht. Für UeberweisungsbetragVonFranka verwenden wir also den Datentyp double.

Wie sieht das ganze jetzt in der Paxis aus?

Gut! Machen wir ernst und setzen die graue Theorie in ein buntes Java-Programm um.

String nameVonFranka = "Franka Mueller";
int kontoNummerVonFranka = 123456789;
double ueberweisungsBetrag = 199.50;
System.out.println("Name: "+nameVonFranka);
System.out.println("Kontonummer: "+kontoNummerVonFranka);
System.out.println("Überweisungsbetrag: "+ueberweisungsBetrag);

Und? Kannst du erraten was dieses Programm macht?

Nun in den ersten drei Zeilen deklarieren wir unsere drei Variablen und weisen diesen Werte zu. Wichtig sind zwei Dinge!

  1. Eine Wertzuweisung wird mit dem Gleichheitszeichen durchgeführt und zwar so, dass auf der rechten Seite der zuzuweisende Wert und auf der linken Seite der Name der Variablen steht. Die Seiten dürfen nicht vertauscht werden!! Das würde zu einem Kompilierungsfehler führen!
  2. Der Datentyp muss direkt vor dem Variablenname stehen. Bei Variablen vom Typ Integer wird abgekürzt und wir brauchen nur int zu schreiben.

In den letzten drei Zeilen verwenden wir eine Standardausgabe von Java, mit der wir die Inhalte der Variablen auf dem Bildschirm ausgeben.

Yes! You are damn right! Das Programm liefert wirklich keinerlei funktionalen Mehrwert. Macht aber nix,  ist wie früher in der Schule dient nur dem Verständnis.

Kann ich die Variablen benennen wie ich möchte?

Bei der Bezeichnung von Variablen hast du viele Freiheiten. Allerdings dürfen Variablen nicht mit Sonderzeichen oder Zahlen beginnen.

Außerdem dürfen wir Variablen nicht mit Schlüsselwörtern der Programmiersprache benennen.

Ich weiß Schlüsselwort klingt kryptisch ist aber ganz einfach. Jede Progammiersprache hat Anweisungen. In unserem Beispielprogramm oben verwenden wir für die Ausgabe auf den  Bildschirm z.B. die Java Anweisung System.out.println.

Würden wir jetzt eine Variable System.out.println nennen, dann könnte der Compiler nicht zwischen der Variablen und der Java-Anweisung unterscheiden.

Wir müssen außerdem darauf achten, dass Java  zwischen Groß- und Kleinschreibung unterscheidet. Bei namevonfranka und nameVonFranka handelt es sich um zwei verschiedene Variablen.

Das waren bereits die Musskriterien, die du unbedingt beachten musst. Du solltest dir aber außerdem unbedingt gleich von Beginn an angewöhnen die Variablen sprechend zu benennen.

Ein Programm besteht oft aus vielen tausend Zeilen, wenn du dann deine Variablen variable1,variable2 usw. oder ähnlich benennst, dann hast du bei eventueller Fehlersuche schon von Anfang an verloren.

Übertreibe bitte auch nicht mit Abkürzungen. Habe keine Angst Variablen mit zehn oder fünfzehn Zeichen zu benennen. Mit namePerson ist viel mehr anzufangen als mit der Abkürzung nP.

Das ist insbesondere wichtig, wenn du mal in einem Team programmierst, denn dann müssen auch deine Kollegen deinen Programmcode lesen können.

So, so viel erstmal zu dem Konzept der Variablen. Im nächste Teil geht es dann um Kontrollstrukturen, mit denen wir „Bewegung“ in unsere Programme bringen können.

Ich freue mich über deine Fragen im Kommentarbereich!

Hat dir der Artikel gefallen?

Hallo ich bin Kim und ich möchte ein großer Programmierer werden. Machst du mit?

Kommentare (4)

  • Antworte

    Super Betrag und sehr leicht nachzuvollziehen. Weiter so!

    • Danke dir!

  • Antworte

    WOW echt genial, alles was ich in diese Richtung gelesen habe, hat mich nicht lange halten können, aber du machst das Super, man will dabei bleiben und wissen wie es weiter geht. Bitte Weiter SO !!!!! (vor allen deine vereinfachten Bsp. dazu echt Klasse)

    • Hallo Norbert, vielen Dank für dein Lob. Ich freue mich sehr darüber. Ich hoffe, dass ich schon bald wieder neue Inhalte liefern kann. Viele Grüße Kim

Hinterlasse ein Kommentar