Dieses Notebook bietet eine umfassende Einführung in die Grundlagen von C# und behandelt verschiedene Konzepte und Syntaxelemente dieser Programmiersprache. C# ist eine der Hauptsprachen, die auf der .NET-Plattform verwendet werden, und eignet sich für eine Vielzahl von Anwendungen, von Desktop-Programmen bis hin zu Web-Anwendungen und Spielen.
Der Rote Faden¶
Der rote Faden zeigt auf, wie einzelne Themen und Cluster von Themen aufeinander aufbauen, um Programmieren stukturiert zu erlernen.
Weitere Resourcen¶
Link zur Microsoft Dokumentation
💡 Praxistipp¶
Es gibt einige empfehlenswerte Links zu Coding Dojos und weiterführenden Programmierübungen für C#
Digital Dojo der COUNT IT Group:
Diese Plattform bietet eine Vielzahl von C#-Übungen, die verschiedene Themen wie Entscheidungen, Schleifen, Arrays, Collections, Klassenstrukturen, Enumerationen, Datum und Zeit sowie Vererbung abdecken. Zusätzlich stehen Tutorials für Anfänger und Wiedereinsteiger zur Verfügung.LernMoment C#-Übungen:
Hier finden Sie gezielte Übungen für Anfänger und Fortgeschrittene, um Fertigkeiten in C# zu trainieren. Beispiele wie die ROT13-Verschlüsselung fördern den Umgang mit Strings und Kontrollstrukturen. Weitere Informationen gibt es auf der Website von LernMoment.Clean Code Developer School – Coding Dojo:
Unter dem Begriff "Kata" werden hier verschiedene Übungsaufgaben angeboten, die von kleinen Funktionen bis hin zu kompletten Anwendungen reichen. Diese Katas helfen, saubere Softwareentwicklung zu üben und zu vertiefen.Informatik-verstehen.de:
Auf dieser Seite finden Sie C#-Übungen für Fortgeschrittene, mit denen Sie Ihr Wissen online testen können. Per Zufallsgenerator werden Fragen aus einem großen Pool bereitgestellt.TRAIN your programmer:
Diese Plattform enthält eine Sammlung von C#-Übungen mit verschiedenen Schwierigkeitsgraden, die sowohl für Anfänger als auch für Fortgeschrittene geeignet sind.Codewars:
Codewars bietet eine Vielzahl von Herausforderungen (Katas) für C#-Programmierer, die von einfachen bis hin zu komplexen Aufgaben reichen. Sie können Ihre Programmierfähigkeiten verbessern und sich mit anderen Entwicklern messen.HackerRank:
HackerRank stellt umfangreiche Tutorials und Übungen zu verschiedenen Programmierparadigmen in C# bereit. Besonders das "10 Days of C#" Tutorial ist eine hervorragende Möglichkeit, strukturiert zu lernen.w3schools C# Tutorial:
Diese Plattform bietet eine Einführung in C# mit Übungen, die grundlegende und fortgeschrittene Themen behandeln. Sie können direkt im Browser programmieren und Ergebnisse sofort überprüfen.
Mit diesen Ressourcen haben Sie eine solide Grundlage, um Ihre C#-Kenntnisse durch praxisorientierte Übungen und Coding Dojos zu verbessern.
Mit C# loslegen¶
Was ist C#?¶
Moderne, objektorientierte Programmiersprache
Von Microsoft entwickelt
Teil des .NET-Frameworks
Leistungsstark und leicht zu erlernen
Funktionen: stark typisierte Variablen, Klassen, Vererbung, reichhaltige Standardbibliothek
Compiler:
- Spezielles Programm zur Übersetzung von Quellcode in Maschinensprache
- Bei C#: zweistufiger Übersetzungsprozess:
- Quellcode → Intermediate Language (IL)
- IL → Maschinencode (durch .NET Common Language Runtime - CLR)
- Vorteil: Plattformunabhängigkeit (vorausgesetzt .NET-Framework ist vorhanden)
C# grundlegende Syntax:
- Programm besteht aus
using
-Anweisungen (Import von Namespaces) - Klasse als Container für Code
Main
-Methode als Einstiegspunkt des Programms
- Programm besteht aus
Nochmal zum Nachlesen...
C# ist eine fortschrittliche und moderne Programmiersprache, die speziell von Microsoft entwickelt wurde und eine zentrale Komponente des leistungsfähigen .NET-Frameworks darstellt. Sie wurde mit dem Ziel entworfen, eine Programmiersprache zu schaffen, die sowohl die Leistungsfähigkeit und Flexibilität bietet, die von professionellen Entwicklern benötigt wird, als auch eine einfache und intuitive Lernkurve für Einsteiger aufweist. C# kombiniert die bewährten Prinzipien der objektorientierten Programmierung mit einer Vielzahl von fortschrittlichen Funktionen, die es Entwicklern ermöglichen, robuste, skalierbare und wiederverwendbare Anwendungen zu erstellen.
Die Sprache ist stark typisiert, was bedeutet, dass der Datentyp einer Variablen explizit festgelegt wird und somit eine strenge Typprüfung durch den Compiler erfolgt. Dies trägt zur Fehlervermeidung bei und sorgt für eine höhere Codequalität. Zusätzlich bietet C# eine umfangreiche Unterstützung für die Definition von Klassen, die als Baupläne für Objekte dienen und zentrale Elemente der objektorientierten Programmierung sind. Durch die Möglichkeit der Vererbung können Klassen Funktionalitäten von anderen Klassen erben, was zu einer besseren Wiederverwendbarkeit und Organisation des Codes führt. Darüber hinaus bietet C# eine reichhaltige Standardbibliothek, die eine Vielzahl vorgefertigter Funktionen und Klassen zur Verfügung stellt, welche die Entwicklung beschleunigen und die Implementierung komplexer Aufgaben vereinfachen.
Was ist ein Compiler?¶
Ein Compiler ist ein spezielles Softwarewerkzeug, das den von einem Entwickler in einer höheren Programmiersprache wie C# verfassten Quellcode in eine Form übersetzt, die von einem Computer direkt ausgeführt werden kann. Dieser Prozess ist von zentraler Bedeutung in der Softwareentwicklung, da Computer selbst den Quellcode in seiner ursprünglichen Form nicht verstehen können. Stattdessen muss dieser Code in Maschinensprache umgewandelt werden, eine Sprache, die aus einer Reihe von binären Instruktionen besteht, die die CPU des Computers direkt verarbeiten kann.
Im Kontext von C# erfolgt diese Übersetzung in zwei Schritten, um eine optimale Ausführung und Plattformunabhängigkeit zu gewährleisten:
Übersetzung des Quellcodes in die Intermediate Language (IL): Der C#-Compiler, auch als C#-Kompilierer bekannt, nimmt den geschriebenen Quellcode und wandelt ihn zunächst in eine Zwischensprache um, die als Intermediate Language (IL) bezeichnet wird. Diese IL ist eine plattformunabhängige Repräsentation des Codes, die noch nicht direkt von der Hardware ausgeführt werden kann, aber bereits wesentlich näher an der Maschinensprache liegt als der ursprüngliche Quellcode.
Konvertierung der IL in Maschinencode: Beim Starten der Anwendung übernimmt die .NET Common Language Runtime (CLR) die Verantwortung für den nächsten Schritt. Sie übersetzt die IL in den nativen Maschinencode, der spezifisch auf der Zielmaschine ausgeführt werden kann. Dieser Just-In-Time- (JIT-)Kompilierungsprozess sorgt dafür, dass der Code optimal auf der jeweiligen Hardware ausgeführt wird. Der Vorteil dieses zweistufigen Kompilierungsprozesses besteht darin, dass der gleiche C#-Code auf verschiedenen Plattformen laufen kann, solange diese das .NET-Framework oder eine kompatible Umgebung unterstützen.
Grundlegende Syntax von C#¶
Ein typisches C#-Programm folgt einer klar strukturierten Syntax, die den Aufbau des Programms definiert. Ein einfaches C#-Programm besteht aus mehreren wesentlichen Elementen:
using
-Anweisungen: Diese befinden sich am Anfang des Programms und dienen dazu, Namespaces zu importieren. Namespaces sind Sammlungen von Klassen und anderen Typen, die das Programm verwendet. Durch das Importieren eines Namespaces können Sie auf dessen Inhalte zugreifen, ohne deren vollständigen Pfad angeben zu müssen. Beispielsweise ermöglichtusing System;
den Zugriff auf grundlegende Funktionalitäten wie das Schreiben von Ausgaben auf die Konsole.Klasse: In C# wird der gesamte Code innerhalb von Klassen organisiert. Eine Klasse fungiert als Container für Felder, Methoden und andere Mitglieder, die zusammen die Funktionalität des Programms definieren. Jede Anwendung in C# hat mindestens eine Klasse, die den Hauptcode enthält.
Main
-Methode: Diese Methode stellt den Einstiegspunkt eines jeden C#-Programms dar. Wenn das Programm gestartet wird, beginnt die Ausführung mit derMain
-Methode. Diese Methode kann Parameter empfangen und steuert die Ausführung des Programms.
Hello world!¶
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello, World!");
}
}
Hier wird System
importiert, ein Namespace, der grundlegende Funktionen bereitstellt, wie das Drucken auf der Konsole. Die Main
-Methode ist der Einstiegspunkt des Programms.
Grundlagen von C# anhand der Navigation durch den Code¶
In C# arbeiten wir mit Code, der in Klassen und Methoden strukturiert ist. Der Einstiegspunkt ist immer die Main
-Methode. Hier werden wir alle Grundlagen ansprechen und ein Beispiel implementieren, das einen Bezug zur Umweltinformatik hat.
Datentypen und Variablen¶
C# bietet primitive Werttypen (z. B. int
, double
) und Referenztypen (z. B. string
, arrays
). Variablen sind benannte Speicherplätze, die Werte speichern.
Beispiel:
int alter = 25; // Ganze Zahl
double temperatur = 23.5; // Dezimalzahl
string ort = "Berlin"; // Zeichenkette
bool istRegen = true; // Wahrheitswert
if (istRegen)
{
Console.WriteLine("Es regnet. Bitte einen Regenschirm mitnehmen!");
}
else
{
Console.WriteLine("Es ist trocken. Genieße das Wetter!");
}
Es regnet. Bitte einen Regenschirm mitnehmen!
for (int i = 1; i <= 3; i++)
{
Console.WriteLine($"Messung {i}: Temperatur ist {temperatur} °C");
}
Messung 1: Temperatur ist 23,5 °C Messung 2: Temperatur ist 23,5 °C Messung 3: Temperatur ist 23,5 °C
Arithmetik und Operatoren¶
Operatoren wie +
, -
, *
, /
und %
werden für Berechnungen genutzt.
Beispiel:
double kohlendioxidEmission = 10.5; // in kg
double emissionsReduktion = 2.5; // in kg
double verbleibend = kohlendioxidEmission - emissionsReduktion;
Console.WriteLine($"Verbleibende Emissionen: {verbleibend} kg");
Verbleibende Emissionen: 8 kg
int kleineZahl = 10;
double grosseZahl = (double)kleineZahl; // Explizites Casting
var durchschnitt = 12.34; // Compiler erkennt den Typ als double
Kommentare¶
Kommentare werden für Dokumentationen genutzt:
// Das ist ein einzeiliger Kommentar
/* Das ist ein
mehrzeiliger Kommentar */
static double BerechneEmission(double energieVerbrauch, double emissionsFaktor)
{
return energieVerbrauch * emissionsFaktor;
}
double[] temperaturen = { 22.5, 23.0, 21.8 };
foreach (double temp in temperaturen)
{
Console.WriteLine($"Gemessene Temperatur: {temp} °C");
}
Gemessene Temperatur: 22,5 °C Gemessene Temperatur: 23 °C Gemessene Temperatur: 21,8 °C
Komplettes Codebeispiel zur Umweltinformatik¶
// Variablen und Datentypen
string projektName = "CO2-Reduktion";
double[] emissionen = { 10.5, 12.3, 9.8 }; // in kg
double emissionsFaktor = 0.25; // Faktor pro kWh
// Ausgabe von Informationen
Console.WriteLine($"Projekt: {projektName}");
Console.WriteLine("Berechnung der Emissionen:");
// Schleifen und Arithmetik
for (int i = 0; i < emissionen.Length; i++)
{
Console.WriteLine($"Messung {i + 1}: {emissionen[i]} kg");
}
// Funktion und komplexe Berechnung
double gesamtEmission = BerechneEmission(emissionen, emissionsFaktor);
Console.WriteLine($"Gesamte Emissionen nach Faktor: {gesamtEmission} kg");
// Bedingte Anweisung
if (gesamtEmission > 25)
{
Console.WriteLine("Warnung: Emissionen zu hoch!");
}
else
{
Console.WriteLine("Emissionen im akzeptablen Bereich.");
}
// Funktion zur Berechnung der Gesamtemissionen
static double BerechneEmission(double[] emissionen, double faktor)
{
double summe = 0;
foreach (double emission in emissionen)
{
summe += emission * faktor;
}
return summe;
}
Projekt: CO2-Reduktion Berechnung der Emissionen: Messung 1: 10,5 kg Messung 2: 12,3 kg Messung 3: 9,8 kg Gesamte Emissionen nach Faktor: 8,15 kg Emissionen im akzeptablen Bereich.
Erklärung¶
- Werttypen (
double
,string
) werden genutzt. - Kontrollstrukturen (
if
,for
,foreach
) bestimmen den Ablauf. - Arithmetik (
*
,+
) wird für die Berechnung verwendet. - Funktionen kapseln die Logik (
BerechneEmission
). - Arrays speichern die Emissionswerte.
Dieses Programm zeigt grundlegende C#-Konzepte und berechnet, basierend auf Umweltinformatikdaten, die Gesamtemissionen eines Projekts.