Zum Inhalt
wannacode

Dein erstes Programm

Kurz gesagt: Ein Programm ist eine Folge von Befehlen, die von oben nach unten ausgeführt werden: In C# beginnt es bei Main, Console.WriteLine gibt Text aus, und // beginnt einen Kommentar.

Problem

Der Computer macht genau, was dasteht

Der Computer errät nicht, was du willst. Er führt Befehle aus, einen nach dem anderen, genau so, wie sie geschrieben sind. Eine Folge solcher Befehle ist ein Programm.

Hier ist ein ganzes Programm. Es gibt zwei Zeilen auf dem Bildschirm aus:

Program.cs
class Program
{
static void Main()
{
Console.WriteLine("Willkommen!");
Console.WriteLine("Das ist dein erstes Programm.");
}
}
Ausgabe
Willkommen!
Das ist dein erstes Programm.

Das sieht nach viel Code für zwei Zeilen Text aus. Das meiste davon ist eine Hülle, die du in jedes Programm schreibst. Deine Befehle sind nur die zwei Zeilen in der Mitte.

Die Idee

Was im Programm steht

  • static void Main() ist die Stelle, an der das Programm beginnt. Wir nennen sie Main. Der Computer führt die Zeilen darin von oben nach unten aus.
  • Console.WriteLine(...) gibt den Text in den Klammern aus und springt in eine neue Zeile.
  • Der Text steht in doppelten Anführungszeichen: "Willkommen!". Die Anführungszeichen werden nicht ausgegeben.
  • Jeder Befehl endet mit ;.
  • Die geschweiften Klammern { und } fassen die Zeilen zusammen, die zusammengehören.

class Program ist die Hülle jedes Programms. Was sie bedeutet, lernst du im Modul „Klassen und Objekte“. Vorerst kopierst du sie und schreibst deinen Code in Main. Später zeigen wir in den Lektionen nur die Zeilen aus Main.

Genauer, für Neugierige
  • Groß- und Kleinbuchstaben spielen eine Rolle. console.writeline ist nicht dasselbe wie Console.WriteLine, und das Programm lässt sich nicht kompilieren.
  • Der Befehl dotnet new console erzeugt Program.cs mit nur einer Zeile: Console.WriteLine("Hello, World!");. Das ist eine Kurzform für dasselbe. Der Compiler fügt class Program und Main selbst darum herum ein. Hier schreiben wir die volle Form, damit du siehst, wo alles steht.
  • In älterem Code siehst du ganz oben using System;. Diese Zeile sagt, woher Console kommt. In neuen Projekten wird sie automatisch ergänzt.

Die Idee

Ausgabe mit und ohne Zeilenumbruch

Manchmal willst du mehrere Textstücke in einer Zeile. Dafür gibt es einen zweiten Befehl: Console.Write. Er gibt den Text aus und bleibt in derselben Zeile.

Console.Write("Bestellung ");
Console.Write("Nr. 1024");
Console.WriteLine(" ist bestätigt.");
Console.WriteLine("Lieferung: morgen");
Ausgabe
Bestellung Nr. 1024 ist bestätigt.
Lieferung: morgen

Die ersten beiden Zeilen im Code nutzen Write, deshalb kommen „Bestellung“, „Nr. 1024“ und „ist bestätigt.“ zusammen heraus. Nach WriteLine beginnt der nächste Text in einer neuen Zeile.

Achte auf die Leerzeichen. Sie stehen in den Anführungszeichen, denn der Computer setzt kein Leerzeichen von selbst.

Folge dem Cursor: Der Text erscheint immer dort, wo er steht.

Console.Write("Bestellung ");
Console.Write("Nr. 1024");
Console.WriteLine(" ist bestätigt.");
Console.WriteLine("Lieferung: morgen");
Schritt für Schritt, in Worten
  1. Write gibt „Bestellung “ aus, und der Cursor bleibt in derselben Zeile.
  2. Write gibt „Nr. 1024“ aus, und der Cursor bleibt in derselben Zeile.
  3. WriteLine gibt „ ist bestätigt.“ aus, und der Cursor springt in eine neue Zeile.
  4. WriteLine gibt „Lieferung: morgen“ aus, und der Cursor springt in eine neue Zeile.
  5. Die Leerzeichen stehen in den Anführungszeichen. Der Computer setzt kein Leerzeichen von selbst.

Probier es aus

In wie vielen Zeilen?

Was gibt das Programm aus?

Console.Write("Zug ");
Console.WriteLine("8:15");
Console.Write("Gleis ");
Console.Write("3");
Console.WriteLine();
Antwort

Die Idee

Kommentare: Notizen für Menschen

Manchmal willst du eine Notiz im Code hinterlassen: warum etwas so ist oder was als Nächstes kommt. Du schreibst sie als Kommentar. Der Computer überspringt Kommentare.

  • // beginnt einen Kommentar bis zum Ende der Zeile.
  • /* und */ umschließen einen Kommentar über mehrere Zeilen.
/* Der Kassenbon des Cafés.
Die Preise sind in Euro. */
Console.WriteLine("Kaffee 2,50 €");
// Console.WriteLine("Croissant 1,80 €");
Console.WriteLine("Summe 2,50 €"); // keine Croissants mehr
Ausgabe
Kaffee 2,50 €
Summe 2,50 €

Die Zeile mit dem Croissant ist Code, aber sie steht hinter //, deshalb wird sie nicht ausgeführt. So schaltest du eine Zeile vorübergehend ab, ohne sie zu löschen.

Ein guter Kommentar sagt, warum, nicht was. Was der Code macht, zeigt er selbst.

Probier es aus

Was kommt heraus?

Was gibt das Programm aus?

Console.WriteLine("9:00 Mathe");
// Console.WriteLine("10:00 Physik");
Console.WriteLine("11:00 Geschichte"); // danach ist Mittagspause
Antwort

Problem

Das Programm startet nicht

Du hast das Programm geschrieben, du startest es, und es beginnt nicht einmal. Statt einer Ausgabe bekommst du eine Meldung:

Program.cs
class Program
{
static void Main()
{
Console.WriteLine("Willkommen im Kurs!")
Console.WriteLine("Jetzt geht es los.");
}
}
Meldung des Compilers
Program.cs(5,49): error CS1002: ; expected

Bevor es läuft, geht das Programm durch den Compiler. Er übersetzt den Code für den Computer und prüft, ob er nach den Regeln geschrieben ist. Wenn nicht, hält er an und startet nichts. Das nennt man einen Fehler beim Kompilieren (compile error).

Die Idee

So liest du die Meldung

Die Meldung sagt dir drei Dinge: die Datei, die Zeile und was falsch ist.

Program.cs(5,49) bedeutet die Datei Program.cs, Zeile 5, Zeichen 49 vom Zeilenanfang. ; expected bedeutet „ich habe ein ; erwartet“. CS1002 ist die Nummer des Fehlers. Damit kannst du ihn in der Dokumentation nachschlagen.

Die häufigsten Fehler am Anfang:

  • am Ende eines Befehls fehlt ein ;;
  • ein Anführungszeichen oder eine Klammer ist geöffnet, aber nicht geschlossen;
  • ein Kleinbuchstabe statt eines Großbuchstabens: console.WriteLine.

Behebe zuerst den ersten Fehler in der Liste. Ein fehlendes Anführungszeichen kann den Compiler verwirren und weiter unten mehrere Fehler zeigen, die mit ihm verschwinden.

Genauer, für Neugierige
  • Der Compiler sagt dir, wo das Problem bemerkt wurde. Manchmal liegt der Fehler etwas weiter oben: Wenn du vergessen hast, eine } zu schließen, merkt der Compiler das erst am Ende der Datei.
  • Es gibt auch Fehler, die niemand abfängt: Das Programm startet, macht aber etwas anderes, als du willst. Die jagen wir in fast jeder Lektion.

Probier es aus

Finde den Fehler

Das Programm soll den Plan der Prüfung ausgeben. Es lässt sich nicht kompilieren. In welcher Zeile ist der Fehler?

Wähle die Zeile mit dem Fehler.

Übung

Deine ersten Programme

Löse die Aufgaben in deinem Editor. Jede ist ein eigenes Programm. Vergleiche deine Ausgabe mit dem Beispiel, Zeichen für Zeichen.

1. Hello World. Das traditionelle erste Programm. Gib aus:

Ausgabe
Hello, World!

2. Visitenkarte. Gib eine Visitenkarte aus drei Zeilen aus: Name, Beruf und E-Mail. Du kannst auch deine eigenen Daten nehmen.

Beispielausgabe
Maria Ivanova
Webentwicklerin
maria@example.com

3. Rahmen. Gib das heutige Menü der Kantine in einem Rahmen aus Sternchen aus. Achte auf die Leerzeichen, damit die rechte Seite gerade wird.

Ausgabe
****************
* Heute: Suppe *
* 5,40 € *
****************

Weitere Aufgaben

  • Ein Satz in drei Teilen. Gib mit drei Befehlen Write und einem WriteLine in einer Zeile „Der Shop hat von 9:00 bis 19:00 geöffnet.“ aus.
  • Ein Stundenplan mit Kommentar. Gib einen Stundenplan mit vier Stunden aus. Schalte dann die dritte Zeile mit // ab, ohne sie zu löschen, und füge einen Kommentar hinzu, warum.
  • Ein Fehler mit Absicht. Entferne das ; aus einer Zeile von Aufgabe 1, dann entferne auch ein Anführungszeichen. Lies jedes Mal, was der Compiler sagt.

Test

Teste dich

1. Wo beginnt die Ausführung des Programms?
2. Was ist der Unterschied zwischen Write und WriteLine?
3. Was macht der Computer mit einem Kommentar?
4. Der Compiler meldet, dass in Zeile 3 ein ; fehlt. Was bedeutet das?
5. Was lässt sich kompilieren?

Erstellt von Ivo Gergov im Rahmen der Kampagne von Evo Tech für zugängliche Programmierausbildung ·