Dieser Test gehört Ihnen. Sie beantworten die Fragen, klappen danach die Lösung auf und zählen Ihre Punkte selbst. Wir sehen Ihre Antworten nicht, es gibt nichts abzuschicken, und es gibt keine Note von uns.
So holen Sie am meisten heraus:
- Beantworten Sie jede Frage zuerst schriftlich, auf Papier oder in einer Textdatei, und klappen Sie erst dann die Lösung auf.
- Starten Sie die Programme in den Fragen nicht, bevor Sie geantwortet haben. Danach dürfen Sie, das ist sogar eine gute Übung.
- Nehmen Sie sich etwa 30 Minuten. Es gibt kein Zeitlimit.
Die Fragen 1 bis 16 geben je einen Punkt, die Programmieraufgabe 17 bis zu vier. Zusammen sind es 20 Punkte.
Frage 1
Was macht der Compiler?
- a) Er führt das Programm Zeile für Zeile aus und zeigt die Ausgabe.
- b) Er prüft den Quelltext und übersetzt ihn in eine Form, die der Rechner ausführen kann.
- c) Er speichert die Dateien des Programms.
- d) Er lädt fehlende Programme aus dem Internet.
Lösung 1
b) Der Compiler prüft und übersetzt. Findet er einen Fehler, startet das Programm gar nicht erst. Ausgeführt wird erst das übersetzte Programm. (Lektion 1)
Frage 2
Sie haben rechnung.cs gespeichert, und Ihr Terminal steht im selben Ordner. Mit welchem Befehl starten Sie das Programm?
- a)
run rechnung.cs - b)
dotnet run rechnung.cs - c)
csharp rechnung - d)
rechnung.cs --start
Lösung 2
b) dotnet run rechnung.cs. Die Kurzform dotnet rechnung.cs zählt auch als richtig. (Lektion 3)
Frage 3
Was gibt dieses Programm aus?
// frage-3.cs
Console.Write("A");
Console.WriteLine("B");
Console.Write("C");
Console.Write("D");
Console.WriteLine();
Console.WriteLine("E");
Lösung 3
AB
CD
E
Write schreibt, ohne die Zeile zu beenden, WriteLine beendet sie danach. Console.WriteLine() ohne Text beendet nur die Zeile.
(Lektion 3)
Frage 4
Beim Start meldet das Terminal:
notizen.cs(12,40): error CS1002: ; erwartet.
Was sagt Ihnen diese Meldung, und was tun Sie?
Lösung 4
In der Datei notizen.cs hat der Compiler in Zeile 12 bei Zeichen 40 bemerkt, dass ein Semikolon fehlt. Es ist ein Fehler (error),
das Programm startet also nicht. Sie ergänzen das Semikolon, meistens am Ende der Anweisung in Zeile 12, speichern und starten neu. Gibt
es mehrere Meldungen, beheben Sie die oberste zuerst. Einen Punkt gibt es, wenn Sie Zeile, fehlendes Semikolon und „startet nicht“
genannt haben. (Lektion 3)
Frage 5
Welcher Typ passt jeweils am besten: string, int, double oder bool?
- a) die Anzahl der Notizen
- b) der Titel eines Buches
- c) ob eine Aufgabe erledigt ist
- d) eine Körpergröße in Metern, etwa 1,72
Lösung 5
a) int, b) string, c) bool, d) double. Den Punkt gibt es nur, wenn alle vier stimmen. (Lektion 4)
Frage 6
Was gibt dieses Programm aus?
// frage-6.cs
int a = 23;
int b = 4;
Console.WriteLine(a / b);
Console.WriteLine(a % b);
Lösung 6
5
3
Beide Zahlen sind int, also ist a / b eine Ganzzahl-Division: 4 passt fünfmal in 23, und der Rest fällt weg. a % b ist genau dieser
Rest: 23 minus 20 ist 3. (Lektion 4)
Frage 7
Was gibt dieses Programm aus?
// frage-7.cs
string eingabe = "5";
Console.WriteLine(eingabe + 3);
Console.WriteLine(int.Parse(eingabe) + 3);
Lösung 7
53
8
eingabe ist ein Text. Text plus Zahl hängt die Zahl an den Text an. Erst int.Parse macht aus dem Text „5“ die Zahl 5, und dann wird
gerechnet. (Lektion 4)
Frage 8
Ein Programm liest eine Eingabe mit int.Parse, und jemand tippt „zwölf“. Was passiert, und wie verhindern Sie das?
Lösung 8
int.Parse kann aus „zwölf“ keine Zahl machen und löst eine Ausnahme aus (FormatException). Das Programm bricht ab, der Exit-Code ist
nicht 0. Verhindern lässt sich das mit int.TryParse in einem if: Es meldet mit true oder false, ob die Umwandlung geklappt hat,
und das Programm kann freundlich nachfragen. (Lektionen 4 und 5)
Frage 9
Was gibt dieses Programm aus?
// frage-9.cs
int punkte = 70;
if (punkte >= 90)
{
Console.WriteLine("sehr gut");
}
else if (punkte >= 60)
{
Console.WriteLine("bestanden");
}
else if (punkte >= 50)
{
Console.WriteLine("knapp");
}
else
{
Console.WriteLine("noch nicht");
}
Lösung 9
bestanden
Nur eine Zeile. 70 ist nicht mindestens 90, aber mindestens 60. Die erste zutreffende Bedingung gewinnt, die übrigen werden gar nicht mehr geprüft. Dass 70 auch mindestens 50 ist, spielt keine Rolle. (Lektion 5)
Frage 10
Es gilt int alter = 20; und bool mitglied = false;. Welche dieser Bedingungen sind wahr? Es können mehrere sein.
- a)
alter >= 18 && mitglied - b)
alter >= 18 || mitglied - c)
!mitglied - d)
alter > 20
Lösung 10
b) und c). a) ist falsch, weil bei „und“ beide Seiten wahr sein müssen und mitglied falsch ist. b) ist wahr, weil bei „oder“ eine
wahre Seite genügt. c) ist wahr, weil „nicht falsch“ wahr ist. d) ist falsch, weil 20 nicht größer als 20 ist; dafür bräuchte es >=.
Den Punkt gibt es nur für genau b) und c). Zum Nachprüfen:
// frage-10.cs
int alter = 20;
bool mitglied = false;
Console.WriteLine(alter >= 18 && mitglied);
Console.WriteLine(alter >= 18 || mitglied);
Console.WriteLine(!mitglied);
Console.WriteLine(alter > 20);
False
True
True
False
(Lektion 5)
Frage 11
Wie viele Zahlen gibt diese Schleife aus, und welche sind die erste und die letzte?
// frage-11.cs
for (int i = 0; i < 5; i++)
{
Console.Write($"{i} ");
}
Console.WriteLine();
Lösung 11
Fünf Zahlen, von 0 bis 4:
0 1 2 3 4
Der Zähler beginnt bei 0. Die Bedingung i < 5 gilt für 0, 1, 2, 3 und 4. Bei 5 ist sie falsch, und die Schleife endet. (Lektion 6)
Frage 12
Dieses Programm gibt nichts aus und endet nicht. Warum? Wie beenden Sie es, und wie reparieren Sie es?
// frage-12.cs
int zahl = 10;
int summe = 0;
while (zahl > 0)
{
summe += zahl;
}
Console.WriteLine(summe);
Lösung 12
Im Block ändert sich zahl nie. Die Bedingung zahl > 0 bleibt immer wahr, und die Schleife läuft endlos. Sie beenden das Programm mit
Strg+C im Terminal. Repariert wird es, indem zahl in jedem Durchlauf kleiner wird:
// frage-12.cs
int zahl = 10;
int summe = 0;
while (zahl > 0)
{
summe += zahl;
zahl--;
}
Console.WriteLine(summe);
55
Einen Punkt gibt es, wenn Sie alle drei Teile beantwortet haben: Warum, Strg+C und die fehlende Zeile. (Lektion 6)
Frage 13
Was gibt dieses Programm aus? Und was würde mit tiere[3] in der letzten Zeile passieren?
// frage-13.cs
List<string> tiere = ["Hund", "Katze", "Maus"];
tiere.Add("Igel");
tiere.RemoveAt(0);
Console.WriteLine(tiere.Count);
Console.WriteLine(tiere[0]);
Console.WriteLine(tiere[tiere.Count - 1]);
Lösung 13
3
Katze
Igel
Nach Add sind es vier Tiere, RemoveAt(0) entfernt das erste, den Hund. Übrig sind Katze, Maus und Igel, gezählt ab 0. Der letzte
Eintrag hat die Nummer Count - 1, also 2. tiere[3] gibt es nicht: Das Programm bräche mit einer ArgumentOutOfRangeException ab. Den
Punkt gibt es für die Ausgabe und den Abbruch. (Lektion 7)
Frage 14
Was gibt dieses Programm aus?
// frage-14.cs
Console.WriteLine(Verdopple(Verdopple(3)));
Console.WriteLine(Gruss("Ada"));
static int Verdopple(int zahl)
{
return zahl * 2;
}
static string Gruss(string name)
{
return $"Hallo, {name}";
}
Lösung 14
12
Hallo, Ada
Der innere Aufruf rechnet zuerst: Verdopple(3) ist 6, und Verdopple(6) ist 12. Gruss gibt keinen Text aus, sondern gibt ihn mit
return zurück, und erst Console.WriteLine schreibt ihn. Eine Methode kann also auch einen Text zurückgeben, nicht nur eine Zahl.
(Lektion 8)
Frage 15
Ein Programm ruft File.WriteAllLines("liste.txt", zeilen); auf. Wo liegt danach die Datei liste.txt?
- a) immer im Ordner, in dem die
.cs-Datei liegt - b) im aktuellen Ordner des Terminals, in dem das Programm gestartet wurde
- c) auf dem Desktop
- d) nirgends, solange das Programm nicht mit 0 beendet wurde
Lösung 15
b) Ein einfacher Dateiname bezieht sich auf den aktuellen Ordner. Starten Sie das Programm in dem Ordner, in dem auch die .cs-Datei
liegt, ist das derselbe Ordner. Deshalb sieht a) oft richtig aus, ist es aber nicht immer. (Lektion 10)
Frage 16
Ein Programm schreibt zum Schluss „Fertig!“, aber der Exit-Code ist 1. Was gilt?
- a) Alles hat geklappt, denn das Programm hat „Fertig!“ geschrieben.
- b) Etwas ist schiefgegangen, denn nur der Exit-Code 0 bedeutet Erfolg.
- c) Der Exit-Code zählt nur unter Windows.
Lösung 16
b) Ob ein Programm erfolgreich war, entscheidet der Exit-Code, nicht ein Text, der freundlich aussieht. Das gilt auf allen Systemen. (Lektion 3)
Frage 17
Die Programmieraufgabe, bis zu vier Punkte. Schreiben Sie dreier.cs. Es gibt in einer Zeile alle Zahlen von 1 bis 30 aus, die durch 3
teilbar sind, durch Leerzeichen getrennt. In der Zeile darunter steht ihre Summe:
3 6 9 12 15 18 21 24 27 30
Summe: 165
Diesmal dürfen und sollen Sie Ihr Programm starten.
Lösung 17
Eine mögliche Lösung:
// dreier.cs
int summe = 0;
for (int zahl = 1; zahl <= 30; zahl++)
{
if (zahl % 3 == 0)
{
Console.Write($"{zahl} ");
summe += zahl;
}
}
Console.WriteLine();
Console.WriteLine($"Summe: {summe}");
Ebenso richtig ist eine Schleife, die gleich in Dreierschritten zählt: for (int zahl = 3; zahl <= 30; zahl += 3), dann ohne if.
Vergeben Sie sich die Punkte so:
- 1 Punkt: Das Programm startet ohne Fehler und ohne Warnung.
- 1 Punkt: Die Zahlen kommen aus einer Schleife, nicht von Hand hingeschrieben.
- 1 Punkt: Es erscheinen genau die zehn Zahlen von 3 bis 30.
- 1 Punkt: Die Summe ist 165 und wird vom Programm berechnet.
Ein Leerzeichen am Ende der ersten Zeile ist kein Fehler.
Auswertung
Zählen Sie Ihre Punkte zusammen.
- 17 bis 20 Punkte: Sie haben das Wesentliche verstanden und können es anwenden. Sie sind gut vorbereitet für den nächsten Schritt.
- 11 bis 16 Punkte: Die Grundlagen sitzen. Lesen Sie die Lektionen zu den Fragen, bei denen Sie keinen Punkt bekommen haben, noch einmal, und machen Sie dort die Übungen erneut, ohne in die Lösung zu sehen.
- 0 bis 10 Punkte: Das ist am Anfang ganz normal, und es sagt wenig über Ihre Begabung. Gehen Sie die Lektionen 4 bis 8 noch einmal in Ruhe durch und tippen Sie jedes Beispiel ab. Machen Sie den Test in ein paar Tagen erneut.
Welche Frage zu welcher Lektion gehört:
| Fragen | Lektion |
|---|---|
| 1 | 1 Was ein Programm ist |
| 2, 3, 4, 16 | 3 Ihr erstes Programm |
| 5, 6, 7, 8 | 4 Variablen, Rechnen und Eingaben |
| 8, 9, 10 | 5 Entscheidungen |
| 11, 12, 17 | 6 Wiederholungen |
| 13 | 7 Listen |
| 14 | 8 Eigene Methoden |
| 15 | 10 Notizen speichern |
Passt Programmieren zu Ihnen?
Punkte zeigen, was Sie wissen. Ob Ihnen Programmieren liegt, zeigen sie nur zum Teil. Beantworten Sie für sich diese Fragen, ganz ohne Punkte:
- Hat es Sie gereizt, einen Fehler so lange zu suchen, bis das Programm lief?
- Hatten Sie beim Notizbuch eigene Ideen, was es noch können sollte?
- Ist Ihnen beim Üben die Zeit manchmal schneller vergangen als gedacht?
- Finden Sie es eher spannend als lästig, dass ein vergessenes Semikolon alles aufhält?
- Wollten Sie bei einer Lösung wissen, warum sie funktioniert, und nicht nur, dass sie funktioniert?
Wenn Sie mehrmals Ja sagen, spricht viel dafür, dass Programmieren zu Ihnen passt, auch wenn noch nicht jede Frage oben gesessen hat. Wissen kommt mit der Übung, die Neugier bringen Sie mit. Und wenn Sie merken, dass es nichts für Sie ist, haben Sie in ein paar Stunden etwas Wichtiges über sich gelernt. Auch das ist ein gutes Ergebnis.