Sie sind auf Seite 1von 57

Prof. Dr.

Sönke Cordts

Programming Basics
Datentypen & Operatoren

c
1. Einführung & Motivation
2. Praktische Einführung - First Program
3. Datentypen & Operatoren
4. Fallunterscheidungen, Schleifen & Ausnahmebehandlung
5. Objektorientierung - Methoden & Eigenschaften

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
• Was sind Variablen und Datentypen?
• Welche Datentypen gibt es?
• Welche Operatoren können auf Datentypen angewendet werden?

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Was sind Variablen und Datentypen?

Variable = Ein Speicherplatz, in dem Daten gespeichert werden


können (Adresse im Hauptspeicher)
Hauptspeicher

Beze
ichne
r
Daten

https://www.iconfinder.com/iconsets/free-business-desktop-icons

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Was sind Variablen und Datentypen?

Datentyp = Über den Datentyp wird festgelegt, welche Werte in einer


Variablen gespeichert werden dürfen

Zahl
11

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Was sind Variablen und Datentypen?

Datentyp = Über den Datentyp wird festgelegt, welche Werte in einer


Variablen gespeichert werden dürfen

Zahl
ABC

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Welche Datentypen gibt es?
Typ Wertebereich Speicherplatz .NET-Klasse
byte 20-1 bis 28-1 1 Byte System.Byte
short -215 bis 215-1 2 Byte System.Int16
Ganzzahlig
int -231 bis 231-1 4 Byte System.Int32
long -263 bis 263-1 8 Byte System.Int64

float Kommastellen: 6 – 9 4 Byte System.Single


Kommazahlen double Kommastellen: 15 - 17 8 Byte System.Double
decimal Kommastellen: 28 - 29 16 Byte System.Decimal

Boolesch bool true / false 1 Byte System.Boolean


Zeichen char z.B. 'A', 'b', 'Z' 2 Byte System.Char
Zeichenkette string z.B. "Hello World!" System.String
Objekt object alle Werte System.Object
Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing
3. Datentypen & Operatoren
Wie werden konstante Werte dargestellt (Literale)?
Typ Literal, z.B.
byte 123
short 1_000_000
Ganzzahlig 0xF322
int
long 123L

float 3.552F
Kommazahlen double 3.552, 3.552D
decimal 3.552M

Boolesch bool true / false


Zeichen char 'A'
Zeichenkette string "Hello World!", "Hello \tWorld\n!",
@"c:\Windows\Micosoft.Net", $"Hello {benutzerName}!"

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Wie legt man eine Variable an?
Variable deklarieren = Anlegen einer Variablen

Variablen-
Datentyp = Ausdruck ;
bezeichner

,
z.B.
string name;
int geburtsjahr = 2000, groesse = 180;
Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing
3. Datentypen & Operatoren
Wie werden Datentypen in einen anderen umgewandelt?
Implizite Konvertierung byte

short char

int

long
z.B. int z1 = 123;
float decimal double z2 = z1;
double https://www.iconfinder.com/icons/61486/download/png/256

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Wie werden Datentypen in einen anderen umgewandelt?
Explizite Konvertierung byte

short char

int

long
z.B. double z1 = 0.123d;
float decimal int z2 = (int)z1;
int z2 = z1;
double
Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing
3. Datentypen & Operatoren
Wie werden Datentypen in einen anderen umgewandelt?
Explizite Konvertierung (Casting, Typkonvertierung)

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Wie werden Datentypen in einen anderen umgewandelt?
Explizite Konvertierung (Methoden)
Wird eine Konvertierung nicht durch Casting unterstützt, verwendet
man Methoden:
Convert.ToByte usw.
int.Parse, double.Parse usw.

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Was ist eine benannte Ganzzahl?

Enumeration (Aufzählungstyp) = Benennt die Werte einer Ganzzahl


mit semantischen Bezeichnern
Aufzählungs- semantische
enum { }
bezeichner Bezeichner

z.B. enum Farbe { Rot = 0, Gelb = 1, Gruen = 2 }


Farbe textFarbe = Farbe.Gelb

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Quiz

1) Sie wollen die Adressdaten ihrer Freunde speichern. Welche Datentypen


nehmen Sie für…

a) Vorname
b) Alter
c) BesteFreund(in)
d) Gewicht
e) Größe
f) AusgeliehenerBetragInEuro

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Quiz

2) Wie reagiert der Compiler auf folgende C#-Anweisungen:

double gewicht = 68.6;


int gewichtInKg = (int)gewicht;

a) Compilerfehler: Konvertierung von double in int nicht möglich


b) Laufzeitfehler: Abbruch in der zweiten Zeile wegen fehlerhafter
Konvertierung
c) Konvertierung erfolgreich, gewichtInKg enthält dann die Zahl 68

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Quiz

3) Was liefert folgender C#-Code

int gewicht = 68.6;


string gewichtInKg = gewicht;

a) gewichtInKg enthält als Zeichenkette das Gewicht „68.6“


b) Compilerfehler: int kann nicht implizit in string konvertiert werden
c) gewichtInKg enthält als Zeichenkette das Gewicht „68,6“

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Quiz

4) Enumerationen…

a) sind Folgen von fortlaufenden Ganzzahlen


b) geben Ganzzahlen sinnvolle Namen
c) ermöglichen lesbareren und verständlicheren Code

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Quiz

5) Welche der folgenden Variablendeklarationen ist korrekt

a) double erdradius = 6_378_137;


b) int erdradius = 0x61_5299;
c) string erdradius = 6378137.ToString();

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Fragen & Antworten

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Aufgaben

1) Führen Sie folgenden C#-Code aus und erläutern Sie die Ausgaben:
static void Main(string[] args)
{
decimal zahl1 = 0.12345689012345689012345689012345M;
float zahl2 = 0.12345689012345689012345689012345F;
double zahl3 = 0.12345689012345689012345689012345;
UInt16 zahl4 = 65535;
bool boolesch = true;
char zeichen = 'A';

Console.WriteLine(zahl1);
Console.WriteLine(zahl2);
Console.WriteLine(zahl3);

zahl4++; // erhöhen um 1
Console.WriteLine(zahl4);

Console.WriteLine(boolesch);
Console.WriteLine(Convert.ToInt32(false));
Console.WriteLine(Convert.ToInt32(true));
Projektein
Console.WriteLine(zeichen); ste llungen
Console.WriteLine(Convert.ToInt32(zeichen)); B uildErw
} eitert…

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Aufgaben

2) Schreiben Sie eine Konsolenanwendung, die den Benutzer nach einer


Postleitzahl fragt. Verwenden Sie die Methode
LearnProgrammingLibrary.ReadLocations, um alle Orte zu suchen. Die Methode
liefert das Ergebnis als Zeichenkette zurück.

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Welche Operatoren können auf Datentypen angewendet werden?

Operator = Mathematische Vorschrift über standardisierte


Operationen (z.B. +, -, *, /) oder Funktionen mit eigendefinierter
Vorschrift (z.B. Methoden wie Math.Pow)

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Was versteht man unter einem Ausdruck (Expression)?

Ausdruck = Sequenz, die aus einem oder mehreren Operanden und


keinem oder mehreren Operatoren besteht und einen Wert
zurückliefert
z.B. Anzahl Anzahl
Ausdruck Ergebnis Operanden Operator
zahl = 100 100 2 1
100 + 3 - 7 96 3 2
100 > 200 false 2 1
Math.Sqrt (16) 4 1 1

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Welche Operatoren können auf Datentypen angewendet werden?
Gruppen von Operatoren
Arithmetische Vergleichs-
Operatoren operatoren
Logische Zuweisungs-
Operatoren operatoren
Konditional- Bitoperatoren
operator

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Welche Operatoren können auf Datentypen angewendet werden?
Arithmetische Operatoren (numerisch)
Operator Bedeutung Beispiel Wert
+ Addition int i = 4 + 3; 7
- Subtraktion int i = 4 – 3; 1
- Vorzeichen umdrehen int i = -3;
i = -i; 3
/ Division double d = 5 / 2; 2
d = 5.0 / 2; 2,5
* Multiplikation int i = 4 * 3; 12
% Modulo (Rest) int i = 4 % 3; 1
double d = 4 % 3.5; 0,5
++ Prä-/Postinkrement, - int i = 2;
-- dekrement i++; 3
i--; 2
Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing
3. Datentypen & Operatoren
Welche Operatoren können auf Datentypen angewendet werden?
Arithmetische Operatoren (Zeichenketten)
Operator Bedeutung Beispiel Wert
+ Verkettung/Konkatenation string s1 = "Hello "; "Hello World!";
string s2 = "World!";

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Quiz

1) Welche Datentypen ergeben sich aus … und welche Werte ergeben sich
rechnerisch?
a) 2/3*1
b) 2 / 3 * 1.0
c) (int)2 / 3.0 + 1
d) (double)(2 / 3 * 1.0)
e) (double)2 / 3 * 1

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Quiz

2) Welche Datentypen ergeben sich aus … und welche Werte ergeben sich
rechnerisch?

a) 3%2
b) 3.0 % 2
c) 3.0 % 2.0
d) 3.0 % 2.1
e) 3.0m % 2.1m

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Aufgaben

3) Erstellen Sie eine App, die den Benutzer seinen Vor-, danach seinen
Nachnamen und schließlich seine Größe in cm eingeben lässt. Begrüßen Sie
den Benutzer dann über die Konsolenausgabe und geben Sie seine Größe in
Metern aus.

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Aufgaben

4) Erstellen Sie eine App, die zwei Zahlen addiert, die der Benutzer vorher
eingegeben und geben Sie das Ergebnis aus.

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Welche Operatoren können auf Datentypen angewendet werden?
Vergleichsoperatoren
Operator Bedeutung Beispiel Wert
== gleich bool b = 3 == 4; false
bool b = 'A' == 'a'; false
!= ungleich bool b = 3 != 4; true
< kleiner bool b = 3 < 4; true
> größer bool b = 3 > 4; false
<= kleiner oder gleich bool b = 3 <= 4; true
>= größer oder gleich bool b = 3 >= 4; false

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Quiz

1) Was erscheint auf der Konsolen-App zu folgendem C#-Code:


static void Main()
{
int zahl1 = 1;
int zahl2 = 2;

Console.WriteLine(zahl1 == zahl2);
Console.WriteLine(zahl1 != zahl2);
}

a) false, true
b) true, true
c) true, false

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Aufgaben

5) Ergänzen Sie Aufgabe 3) um die Ausgabe, ob die Größe über der


Durchschnittsgröße von Frauen und Männern in Deutschland liegt.
Durchschnittsgröße: Frauen: 166 cm, Männer: 180 cm

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Welche Operatoren können auf Datentypen angewendet werden?
Logische Operatoren - Wahrheitstabelle
Ausdruck 1 Ausdruck 2 Und- Oder-
Verknüpfung Verknüpfung
true true true true
true false false true
false true false true
false false false false

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Welche Operatoren können auf Datentypen angewendet werden?
Logische Operatoren
Operator Bedeutung Beispiel Wert
int a = 3; b = 4;
&& Und-Verknüpfung int a = 3; b = 4; false
a > 0 && a > b
|| Oder-Verknüpfung a < b || a++ > 0 true
(bedingte Auswertung) a: 3
! Negation !(a == b) true

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Quiz

1) Welche der folgenden booleschen Ausdrücke ergeben true


a) int a = 3; char c = '1‘;
Console.WriteLine(!(a > 0 || c == 'a'));
b) 3 > 4 && 1 == 1 || 2 == 2
c) 3 > 4 && (1 == 1 || 2 == 2)

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Aufgaben

6) Ergänzen Sie Aufgabe 5) um die Abfrage nach dem Gewicht. Geben Sie aus,
ob der Benutzer im Durchschnitt das Gewicht und die Größe einer Frau und
eines Mannes überschreitet.
Durchschnittsgewicht: Frauen: 72 kg, Männer: 89 kg

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Welche Operatoren können auf Datentypen angewendet werden?
Zuweisungsoperatoren
Operator Bedeutung Beispiel Wert
int a = 10
= Zuweisung a = 6 6
+= Zuweisung + Addition a += 6 16
-= Zuweisung + Subtraktion a -= 6 4
*= Zuweisung + Multiplikation a *= 6 60
/= Zuweisung + Division a /= 6 1
%= Zuweisung + Modulo a %= 6 4

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Welche Operatoren können auf Datentypen angewendet werden?

Konditionaloperator
Operator Bedeutung Beispiel Wert
?: Bedingung int a = 3, b = 4;
var s = a == b ? "gleich" : "ungleich" ungleich

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Aufgaben

7) Ändern Sie Aufgabe 6) um die Ausgabe, dass anstatt True und False die
Ausgabe erscheint, dass er zur Durchschnittsgruppe der Frauen und/oder
Männer gehört.

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Fragen & Antworten

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Wie kann man mehr als einen Wert in einer Variable verwalten?
Array
= speichert eine fest angegebene Anzahl von Werten des gleichen
Datentyps

Index Wert (Geburtsjahr)


0 1998
1 1987
2 2006
3 2019

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Wie kann man mehr als einen Wert in einer Variable verwalten?
Array
Deklaration int[] geburtsjahr; // Referenztyp
Speicherplatz bereitstellen geburtsjahr = new int[4];

Index Wert (Geburtsjahr)


0 1998
1 1987
2 2006
3 2019

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Wie kann man mehr als einen Wert in einer Variable verwalten?
Array
Zugriff geburtsjahr[0];
geburtsjahr[3];
Zuweisung geburtsjahr[0] = 1998; // 0x07CE
geburtsjahr[1] = 1987; // 0x07C3
Index Wert (Geburtsjahr)
0 1998
1 1987
2 2006
3 2019

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Wie kann man mehr als einen Wert in einer Variable verwalten?

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Wie kann man mehr als einen Wert in einer Variable verwalten?
Array
Initialisierung
int[] geburtsjahr = new int[4] { 1998, 1987, 2006, 2019 };
int[] geburtsjahr = { 1998, 1987, 2006, 2019 };

Index Wert (Geburtsjahr)


0 1998
1 1987
2 2006
3 2019

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Wie kann man mehr als einen Wert in einer Variable verwalten?
Array
Dynamische Erstellung
int anzahl = 4;
int[] geburtsjahr = new short[anzahl];

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Wie kann man mehr als einen Wert in einer Variable verwalten?
Array
Mehrdimensional
string[,] schach = new string[8,8];
schach[0,3] = "weißer König";

https://www.iconfinder.com/iconsets/iconka-buddy-set

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Wie kann man mehr als einen Wert in einer Variable verwalten?
Array
Methoden
geburtsjahr.GetLength(0); // erste Dimension
Array.IndexOf(orte, "Hamburg");
Array.LastIndexOf(orte, "Hamburg");
Array.Sort(geburtsjahr);

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Wo ist der Unterschied zwischen Referenz- und Werttypen?

Werttypen (value type) = enthalten ihren Wert direkt


Referenztypen (reference type) = verweisen auf ihren Wert (Objekt),
entspricht der Adresse im Hauptspeicher

byte, short, int, long, float, double, decimal, char, boolean sind
Werttypen
string, Arrays sind Referenztypen

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Wo ist der Unterschied zwischen Referenz- und Werttypen?

Werttyp
0x870B9FE9B4 <> 0x870B9FE9B0
0x7b = 123

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


3. Datentypen & Operatoren
Wo ist der Unterschied zwischen Referenz- und Werttypen?

Referenztyp
Standardwert = null

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Quiz

1) Welche der folgenden Statements ist korrekt

a) string orte = new string {"Kiel", "Flensburg", "Hamburg", "Berlin" };


b) string[] orte = { "Kiel", "Flensburg", "Hamburg", "Berlin" };
c) string[] orte = new string[] { "Kiel", "Flensburg", "Hamburg", "Berlin" };
d) var orte = new string[] { "Kiel", "Flensburg", "Hamburg", "Berlin" };
e) var orte = { "Kiel", "Flensburg", "Hamburg", "Berlin" };

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Fragen & Antworten

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Aufgaben

7) Schreiben Sie eine Konsolen-App, die den Benutzer zunächst nach der
Anzahl seiner Hobbies fragt. Legen Sie dann ein Array mit mindestens 3
Elementen und der maximal abgefragten Anzahl hierfür an. Tragen Sie dann
in das Array die Hobbies des Benutzers ein. Geben Sie danach die ersten
drei abgefragten Hobbies aus.

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing


Aufgaben

8) Schreiben Sie eine Konsolen-App, in der der Benutzer einen Pfad auf seiner
Festplatte eingeben soll. Geben Sie dann die ersten drei Ordner in diesem
Pfad aus.
Hinweis: Verwenden Sie die Methode Directory.GetDirectories aus dem
Namensraum System.IO
Berücksichtigen Sie über den Konditionaloperator den Fall, dass nicht immer
drei Ordner vorhanden sind.

Prof. Dr. Sönke Cordts | Anwendungsentwicklung & Mobile Computing

Das könnte Ihnen auch gefallen