First Commit
This commit is contained in:
@@ -0,0 +1,315 @@
|
||||
# Einführung in C#
|
||||
|
||||
## Ziel dieser Einheit
|
||||
|
||||
In dieser Einheit lernst du:
|
||||
|
||||
- wie ein C#-Programm aufgebaut ist
|
||||
- was eine Klasse ist
|
||||
- wie die Main-Methode funktioniert
|
||||
- wie eine Konsolenausgabe erfolgt
|
||||
- grundlegende Konzepte der Programmiersprache
|
||||
|
||||
---
|
||||
|
||||
## 1. Aufbau eines C#-Programms
|
||||
|
||||
Ein C#-Programm besteht aus:
|
||||
|
||||
- using-Anweisungen
|
||||
- Namespace
|
||||
- Klasse
|
||||
- Main-Methode
|
||||
|
||||
---
|
||||
|
||||
## 2. using-Anweisungen
|
||||
|
||||
using System;
|
||||
|
||||
Erläuterung:
|
||||
|
||||
- entspricht dem Import in Java
|
||||
- ermöglicht Zugriff auf vorhandene Klassen
|
||||
|
||||
Beispiel:
|
||||
|
||||
- Console
|
||||
- Collections
|
||||
|
||||
---
|
||||
|
||||
## 3. Namespace
|
||||
|
||||
namespace _01_Einführung;
|
||||
|
||||
Erläuterung:
|
||||
|
||||
- organisiert Klassen
|
||||
- vergleichbar mit Paketen in Java
|
||||
- muss nicht zwingend der Ordnerstruktur entsprechen
|
||||
|
||||
---
|
||||
|
||||
## 4. Klasse
|
||||
|
||||
internal class Einführung
|
||||
|
||||
Erläuterung:
|
||||
|
||||
- jede Anwendung besteht aus Klassen
|
||||
- Klassenname frei wählbar
|
||||
- `internal` ist der Standard-Zugriffsmodifizierer
|
||||
|
||||
---
|
||||
|
||||
## 5. Die Main-Methode
|
||||
|
||||
private static void Main(string[] args)
|
||||
|
||||
Erläuterung:
|
||||
|
||||
- Einstiegspunkt des Programms
|
||||
- wird beim Start zuerst ausgeführt
|
||||
- jedes Programm besitzt genau eine Main-Methode
|
||||
|
||||
---
|
||||
|
||||
## 6. Konsolenausgabe
|
||||
|
||||
Console.WriteLine("Hello, World!");
|
||||
|
||||
Erläuterung:
|
||||
|
||||
- Ausgabe in der Konsole
|
||||
- `Console` ist eine Klasse
|
||||
- `WriteLine` ist eine Methode
|
||||
|
||||
---
|
||||
|
||||
### Farbausgabe
|
||||
|
||||
Console.ForegroundColor = ConsoleColor.Green;
|
||||
Console.WriteLine("Ausgabe in Grün.");
|
||||
Console.ResetColor();
|
||||
|
||||
---
|
||||
|
||||
## 7. Datentypen in C#
|
||||
|
||||
### Ganzzahlen
|
||||
|
||||
short s = 1;
|
||||
Int16 i16 = 1;
|
||||
|
||||
int i = 1;
|
||||
Int32 i32 = 1;
|
||||
|
||||
long l = 1;
|
||||
Int64 i64 = 1;
|
||||
|
||||
Erläuterung:
|
||||
|
||||
- es gibt Kurz- und Langschreibweise
|
||||
- `int` ist ein Alias für `Int32`
|
||||
|
||||
---
|
||||
|
||||
### Fließkommazahlen
|
||||
|
||||
float f = 1.1F;
|
||||
double d = 1.1;
|
||||
|
||||
decimal m = 1.1M;
|
||||
|
||||
Erläuterung:
|
||||
|
||||
- `float` benötigt ein `F`
|
||||
- `decimal` benötigt ein `M`
|
||||
|
||||
---
|
||||
|
||||
### Boolean
|
||||
|
||||
bool b = true;
|
||||
Boolean boolean = true;
|
||||
|
||||
---
|
||||
|
||||
### Byte
|
||||
|
||||
byte b1 = 255;
|
||||
|
||||
Erläuterung:
|
||||
|
||||
- in C# ist `byte` unsigned
|
||||
- Wertebereich: 0 – 255
|
||||
|
||||
---
|
||||
|
||||
### Unsigned und Signed Varianten
|
||||
|
||||
uint ui = 1;
|
||||
sbyte sb = -128;
|
||||
|
||||
---
|
||||
|
||||
### Zeichen
|
||||
|
||||
char c1 = 'a';
|
||||
|
||||
---
|
||||
|
||||
## 8. String und Eingabe
|
||||
|
||||
string? eingabe = Console.ReadLine();
|
||||
|
||||
Erläuterung:
|
||||
|
||||
- `?` bedeutet nullable
|
||||
- Wert kann `null` sein
|
||||
|
||||
---
|
||||
|
||||
### Null-Propagation
|
||||
|
||||
eingabe = eingabe?.Substring(2);
|
||||
|
||||
- Methode wird nur ausgeführt, wenn Wert nicht null ist
|
||||
|
||||
---
|
||||
|
||||
### String-Verarbeitung
|
||||
|
||||
string zeichenkette = String.Concat("Hallo", "Welt");
|
||||
|
||||
---
|
||||
|
||||
## 9. Eingabe und Konvertierung
|
||||
|
||||
eingabe = Console.ReadLine();
|
||||
int eingabeInt;
|
||||
|
||||
---
|
||||
|
||||
### Convert mit Exception
|
||||
|
||||
try
|
||||
{
|
||||
eingabeInt = Convert.ToInt32(eingabe);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
### TryParse
|
||||
|
||||
bool parseOk = Int32.TryParse(eingabe, out eingabeInt);
|
||||
|
||||
Erläuterung:
|
||||
|
||||
- kein Exception-Handling nötig
|
||||
- Ergebnis wird als bool zurückgegeben
|
||||
|
||||
---
|
||||
|
||||
## 10. Tastatureingaben
|
||||
|
||||
ConsoleKeyInfo consoleKeyInfo = Console.ReadKey(true);
|
||||
|
||||
Erläuterung:
|
||||
|
||||
- liest einzelne Tasteneingaben
|
||||
|
||||
---
|
||||
|
||||
## 11. Listen
|
||||
|
||||
IList<int> liste = new List<int>();
|
||||
|
||||
liste.Add(1);
|
||||
liste.Add(42);
|
||||
|
||||
Erläuterung:
|
||||
|
||||
- `IList<>` → Interface
|
||||
- `List<>` → Implementierung
|
||||
|
||||
---
|
||||
|
||||
### Iteration
|
||||
|
||||
foreach (int z in liste)
|
||||
Console.WriteLine(z);
|
||||
|
||||
---
|
||||
|
||||
## 12. Arrays
|
||||
|
||||
### Eindimensionale Arrays
|
||||
|
||||
int[] intArray = { 0, 1, 2 };
|
||||
|
||||
---
|
||||
|
||||
### Mehrdimensionale Arrays
|
||||
|
||||
int[,] array2D =
|
||||
{
|
||||
{ 0, 1, 2 },
|
||||
{ 3, 4, 5 }
|
||||
};
|
||||
|
||||
---
|
||||
|
||||
### Jagged Arrays
|
||||
|
||||
int[][] jagged =
|
||||
{
|
||||
new int[] { 0, 1 },
|
||||
new int[] { 2, 3, 4 }
|
||||
};
|
||||
|
||||
---
|
||||
|
||||
## 13. Nullable
|
||||
|
||||
int? zahl = null;
|
||||
|
||||
Erläuterung:
|
||||
|
||||
- Wertetyp kann null sein
|
||||
- zusätzlicher Zustand: „kein Wert“
|
||||
|
||||
---
|
||||
|
||||
bool? bNull = null;
|
||||
|
||||
- ermöglicht drei Zustände:
|
||||
- true
|
||||
- false
|
||||
- null
|
||||
|
||||
---
|
||||
|
||||
## Zusammenfassung
|
||||
|
||||
- C#-Programme bestehen aus Klassen und einer Main-Methode
|
||||
- using-Anweisungen ermöglichen den Zugriff auf Bibliotheken
|
||||
- Datentypen haben Aliase (`int`, `Int32`)
|
||||
- Nullable-Typen erlauben null-Werte
|
||||
- Listen und Arrays dienen zur Datenverwaltung
|
||||
- Eingaben und Konvertierungen sind zentrale Bestandteile
|
||||
|
||||
---
|
||||
|
||||
## Verständnisfragen
|
||||
|
||||
- Was ist der Einstiegspunkt eines C#-Programms?
|
||||
- Was ist der Unterschied zwischen `int` und `Int32`?
|
||||
- Warum benötigt `float` ein `F`?
|
||||
- Was bedeutet `string?`?
|
||||
- Was ist der Unterschied zwischen `Convert` und `TryParse`?
|
||||
Reference in New Issue
Block a user