Programmieren lernen Kapitel 3 Variablen & Operatoren

Tutorials zu verschiedenen Softwarenutzungen

Moderator: Moderatoren

Benutzeravatar
Jaegerfeld
Tribunus Angusticlavius
Tribunus Angusticlavius
Beiträge: 3571
Registriert: 10. November 2010 21:15
Wohnort: AudiCity
:
Pfeiler der Community Gewinner Userwahl

Programmieren lernen Kapitel 3 Variablen & Operatoren

Beitragvon Jaegerfeld » 24. November 2010 21:43

Kapitel 3
Variablen & Operatoren


Nachdem wir jetzt unser erstes Programm zum Laufen gebracht haben, wollen wir diesmal echte Funktionalität und Interaktion erreichen.

Im Grunde tut jedes Programm das Gleiche: Es nimmt irgendwelche Daten und verarbeitet sie.

Wenn man dies tun will, stellt sich eine Frage: Wie merkt sich der Computer eigentlich die Daten? Und wie erkläre ich ihm was was ist?

Prinzipiell kennt ein Rechner nur drei Dinge, 0, 1 und +. Alles andere ist eine geschickte Kombination dieser drei Dinge.

Nicht einmal abziehen kann er, von komplexen Dingen wie selber denken ganz zu schweigen.

Wie im letzten Kapitel bereits erwähnt, ist es aber für Menschen schon ein großer Unterschied ob man zwei Zahlen addiert oder zwei Wörter. Wenn nun der Rechner aber eh nur EIN (1) und AUS (0) versteht, muss man sich etwas einfallen lassen, um ihm den Unterschied zwischen dem Zeichen 0 und der Zahl 0 zu erklären.

Die Lösung sind Datentypen, man einigt sich einfach darauf, dass es bestimmte Schlüsselwörter gibt, die einen ganz klare Bedeutung haben. So bedeutet das Schlüsselwort int zum Beispiel, dass das nächste Wort eine Variable (ein Platzhalter / Merker, siehe Mathe) vom Typ INTEGER benennt. Wenn wir also so etwas schreiben:


Code: Alles auswählen

int x = 1;



so bedeutet dies für den Rechner:

Ich will einen Variable vom Typ Ganzzahl (Schlüsselwort: int) einführen, sie wird den Namen x erhalten und hat den Wert 1.

Den Rest, wie einen freien Platz im Speicher suchen, den Namen und Wert in einen Kombination von 0 und 1 übersetzen, sich den Speicherort merken usw. übernimmt der Rechner. Wir brauchen uns darum nicht zu kümmern.

Wann immer wir jetzt x schreiben, bedeutet dies eigentlich 1. SOLANGE wir damit rechen. Wenn wir den Inhalt von x als Buchstaben nutzen wollen müssen wir das erst umständlich konvertieren, dazu später mehr.



Genau so läuft das mit einer Zeichenkette (auf deutsch: einem Wort):


Code: Alles auswählen

string wort = "ICH kann auch mehr als ein Wort fassen";


Sagt dem Rechner:

Ich will eine Variable vom Typ Zeichenkette (Schlüsselwort: string) einführen, sie erhält den Namen wort und bedeutet eigentlich ICH kann auch mehr als ein Wort fassen. Bei strings setzen wir den Wert immer in Anführungszeichen "". Sie sagen dem Rechner, dass hier einen Zeichenkette kommt und er das mit den Sonderzeichen und Zahlen am Anfang (siehe letztes Kapitel) mal kurz vergessen soll.



Es gibt eine ganze Fülle von Datentypen, die wichtigsten will ich hier kurz aufführen und ein paar Takte dazu verlieren:

int bezeichnet eine Ganzzahl, also so etwas wie 1,2,3,4,5,6 usw. nur ganze Zahlen eben.

float bezeichnet eine Gleitkommazahl, das ist einfach ausgedrückt so etwas 1,23456.

double sind Gleitkommazahlen mit doppelter Genauigkeit.Sie können mehr Stellen nach dem Komma haben(sehr einfach ausgedrückt)

string Buchstaben, von fast beliebiger Anzahl. Es können also ganze Sätze in einem string stehen.

bool Ein Wahrheitswert, ein bool ist entweder TRUE (wahr, 1) oder FALSE (falsch, 0). SEHR wichtiger Datentyp.

Den Rest sehen wir uns bei Bedarf an.

Will man eine Variable verwenden muss man bei fast jedem Datentyp gleich vorgehen:

1. Die Variable deklarieren

Wir müssen dem Rechner sagen von welchem Typ die Variable sein soll.

Code: Alles auswählen

int x;
deklariert eine Variable x vom Typ int.

Wenn der Compiler (das Ding, was aus unserem Code ein echtes Programm macht) das liest, bedeutet dies für ihn:

Kümmer dich mal darum, dass im Speicher genug Platz für eine Integer Variable reserviert wird und merk dir wo das ist.

Jetzt haben wir zwar einen Namen für unsere Variable, aber sie hat keinen Wert !



Genau genommen kennt ein Rechner nämlich noch etwas, und das ist der Feind eines jeden Programmierers:

NULL

Null bedeutet nicht einfach nur 0(also NICHTS), sondern ist viel schlimmer. Es bedeutet: Wir wissen es nicht!

Für eine streng logisch agierende Maschine ist das ein unhaltbarer Zustand (eben KEINER).

Wir mit unseren schwabbeligen Gehirnen mögen so etwas ignorieren können, eine Maschine kann es nicht und das führt dann unweigerlich zum Absturz.

Also gewöhnt euch daran einer Variable immer SOFORT einen Wert zuzuweisen. Heutzutage sind die Programmiersprachen zwar zu schlau um dauernd auf so etwas hereinzufallen, aber sicher ist sicher.

Was uns zu Punkt zwei führt.

2. Die Variable initialisieren

belegt die Variable mit dem Wert 2. Damit steht das jetzt an der Stelle im Speicher, die wir uns gerade reserviert haben und wir können die Variable immer wieder benutzen.

Mit unserem Wissen können wir uns jetzt daran machen einen einfachen Taschen(naja: Schreibtisch-)rechner zu erschaffen.

Unser neues Programm soll folgendes können:

1. Den User nach zwei Zahlen a und b fragen

2. Die Zahlen addieren (also a+b = c)

3. Das Ergebniss c ausgeben

Toller Rechner, nicht wahr? Ist aber gar nicht mal so einfach.

Startet ein neues Konsolenprojekt (wie in Kapitel 2) und schon gehts los.

Um un die beiden Operanden a und b merken zu können führen wir am Besten glleich zu Anfang zwei gleichnamige Variablen ein.

schreibt also einfach in der main methode

Code: Alles auswählen

int a = 0;
int b = 0;


Da Programmierer vom Grundsatz her faul sind und man (im Gegensatz zu meinem Geschwafel oben) int NICHT unbedingt initialisieren muss, kann man auch folgendes schreiben:


Code: Alles auswählen

int a,b;


Schöner ist aber die erste Variante.

Jetzt müssten wir den User nach den Werten der zwei Variablen fragen, also was er eigentlich addieren will.

Wer aufgepasst hat ahnt vielleicht schon was jetzt kommt.

Der Rest denkt mal kurz darüber nach was wir genau machen wollen........

Genau: User tippt Zahl in Konsole, wir fragen Konsole was da steht und merken uns Zahl.

also könnten wir doch einfach schreiben:

Code: Alles auswählen

a = Console.ReadLine();
??????

also sagen: "Konsole nimm was in der Zeile steht und schreib das in a".

Übrigens: Anweisungen werden von rechts nach links befolgt, in der Hinsicht ist C# ein Araber. :-)

LEIDER, leider geht das nicht so einafch.

Es gibt zwar hganz klar die methode ReadLine(), aber die liefert uns einen string und keine int.

Ist auch logisch, in der Konsole stehen schließlich auch Buchstaben und keine Zahlen

Also müssen wir uns erst mal eine Zeichenkette geben lassen und die dann zu 'ner Zahl konvertieren.

Das geht recht einfach:


Code: Alles auswählen

Console.WriteLine("Bitte den ersten Operanden eingeben");

string aString = Console.ReadLine();

a = Convert.ToInt32(aString);



Wer hätte gedacht, dass sich hinter der Klasse Convert ein allgemeingültiger Konvertiere verbirgt :-) ?

Wir schreiben das aus der Konsole also erst mal in einen string und konvertieren das anschließend in ein int.

Der Konvertiere bietet uns sogar drei verschiedene int an, int16, int32 und int64. Hinter den Zahlen verbirgt sich die Länge eines int in Bit. int32 kan eine 32 bit lange Ganzzahl fassen. das geht von grob - 2 Mrd bis + 2 Mrd.

Sollte also erstmal reichen. int64 sind übrigens nicht doppelt soviele Zahlen sondern 4294967296 (2^32) mal soviel.

DAS sollte dann echt reichen. Wenn wir einfach int schreiben bekommen wir eine 32bit lange Ganzzahl.


Dasselbe mit dem Operand b und dann können wir addieren:

Code: Alles auswählen

int c = a + b;



Wie wir sehen kann man auch mit dem Ergebniss einer Operation eine Variable initialisieren. Programmierer sind schon arg faule Hunde.

Zum Schluß geben wir das Ganze noch aus:


Code: Alles auswählen

Console.WriteLine(" Das Ergebnis lautet: c = " + c);



Einseltsames Konstrukt, aber eigentlich ganz einfach.

Zuerst schreiben wir den TEXT, den wir ausgeben wollen also: " Das Ergebnis lautet: c = " , danach kommt ein + um klarzumachen, das wir etwas an den text anhängen wollen (wir addieren sozusagen zwei Texte), und die variable, die den text enthält, als + c.

Das lässt sich beliebig fortsetzen.

Sowas geht zum Beispiel auch:


Code: Alles auswählen

Console.WriteLine(" Ergebnis: c =  " + a + "+" + b + " = " c);


probiert es aus!.


Der ganze Code sieht dann so aus:

Code: Alles auswählen


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

 

namespace Taschenrechner
{
  class Program
  {
    static void Main(string[] args)
    {
    Console.WriteLine("Bitte den ersten Operanden eingeben");
    string a = Console.ReadLine();
    Console.WriteLine("Bitte den zweiten Operanden eingeben");
    string b = Console.ReadLine();
    Console.WriteLine( (a +  " + " +  b +  " = " + (Convert.ToInt32(a) + Convert.ToInt32(b)) ));
    System.Threading.Thread.Sleep(10000);
    }
  }
}



Warum das anders aussieht als bei euch? Weil ich faul bin :-). Schaut euch die Änderungen genau an und lernt.

Wenn wir Kommazahlen benutzen wollen, müssen wir double oder float als Typ verwenden.

Es können die üblichen Operatoren verwendet werden:

+

-

*

/

zusätzlich gibt es noch %, das ist die Modulo Operation. SEHR nützlich, ihr kennt die aus der Grundschule vom schriftlichen dividieren. % gibt den REST einer Division zurück.

5%2 = 1 (5 geteilt durch 2 ist 2, Rest bleibt 1)

Bedenkt, dass int GANZZAHLEN sind, es gibt also keine Stellen nach dem Komma (es gibt nicht mal ein Komma).

Das ist wörtlich gemeint, es wird NICHT gerundet. 1/2 ist also 0, denkt daran.


Natürlich existieren noch weitere Operatoren, zu denen kommen wir im nächsten Kapitel.

Versucht euch mal an den anderen Operationen, im nächsten Kapitel pimpen wir unseren Rechner.
„Ich schätze mal, das kann jeder Online-Community passieren. Irgendwann stellen die höflichen und vernünftigen Leute fest, dass sie sich in dieser Gruppe nicht mehr aufhalten wollen. Also verschwinden die. Und diejenigen die übrig bleiben, erfahren nur noch die Leute die genau so wie sie drauf sind.“

=== David Gaider, Bioware ===

Benutzeravatar
pogotorte
Praefectus Fabrum
Praefectus Fabrum
Beiträge: 4805
Registriert: 4. November 2010 18:19
Wohnort: beim Stronomenkönig
:
Modder Team-SZ Gründer/Eigentümer der SZ

Re: Programmieren lernen Kapitel 3 Variablen & Operatoren

Beitragvon pogotorte » 10. Dezember 2010 22:32

Da geht das Elend schon los... Ich bekomme Fehlermeldungen und sehe grade gar nicht, wo es hakt :strategie_zone_41:

Und dann noch was anderes: Was genau machen die "+" bei der Ausgabe vom Ergebnis? ( ...bla" + a + "blub...)
Bild
Forenregeln.......................................................................................Wer Hunde liebt, der wird auch Menschen mögen

Benutzeravatar
Jaegerfeld
Tribunus Angusticlavius
Tribunus Angusticlavius
Beiträge: 3571
Registriert: 10. November 2010 21:15
Wohnort: AudiCity
:
Pfeiler der Community Gewinner Userwahl

Re: Programmieren lernen Kapitel 3 Variablen & Operatoren

Beitragvon Jaegerfeld » 10. Dezember 2010 23:07

du hast in der vorletzten Zeile ein + zwischen "=" und c vergessen.
Immer da gucken wo's ringelt.

Nicht grämen, ich hab heute auf Arbeit eine Stunde 'nen Fehler gesucht um dann zu erkennen das ich eine Klammer zu früh zugemacht hatte.
Es sind meist die kleinen Dinge
„Ich schätze mal, das kann jeder Online-Community passieren. Irgendwann stellen die höflichen und vernünftigen Leute fest, dass sie sich in dieser Gruppe nicht mehr aufhalten wollen. Also verschwinden die. Und diejenigen die übrig bleiben, erfahren nur noch die Leute die genau so wie sie drauf sind.“

=== David Gaider, Bioware ===

Benutzeravatar
Jaegerfeld
Tribunus Angusticlavius
Tribunus Angusticlavius
Beiträge: 3571
Registriert: 10. November 2010 21:15
Wohnort: AudiCity
:
Pfeiler der Community Gewinner Userwahl

Re: Programmieren lernen Kapitel 3 Variablen & Operatoren

Beitragvon Jaegerfeld » 10. Dezember 2010 23:23

Und dann noch was anderes: Was genau machen die "+" bei der Ausgabe vom Ergebnis? ( ...bla" + a + "blub...)


Die + sind hier als Operator zu verstehen. Sie bedeuten ADDIERE. Im Kontext "Zeichenkette" bedeutet dies: Schreib den Text hintereinander.

Ich füge das morgen oben mit ein.

Wenn man so etwas schreibt :

string a = "abra" + "kada" + "bra"; steht am schluss in a : "abrakadabra";
„Ich schätze mal, das kann jeder Online-Community passieren. Irgendwann stellen die höflichen und vernünftigen Leute fest, dass sie sich in dieser Gruppe nicht mehr aufhalten wollen. Also verschwinden die. Und diejenigen die übrig bleiben, erfahren nur noch die Leute die genau so wie sie drauf sind.“

=== David Gaider, Bioware ===