Bedingungen, Schleifen und switch in C und C++
In dieser Lektion kombinierst du Schleifen und eine switch-Anweisung in einem kleinen Programm, das einen Durchschnitt berechnet und eine Note vergibt.
Einführung
Die if-Anweisung wählt anhand einer wahren oder falschen Bedingung einen Zweig, switch behandelt Fälle mit festen Werten, und Schleifen wiederholen einen Block, bis eine Abbruchbedingung erreicht ist. Die Schreibweise dieser Anweisungen ist in C und C++ fast identisch.
Wichtige Punkte
- Schalte die Compiler-Warnungen (compiler warnings) ein und behebe alle.
- Verstehe den Datentyp und die Lebensdauer (lifetime) jedes Werts genau.
- Prüfe immer die Eingabedaten und die Grenzen von Array-Indizes.
So funktioniert es
Ändere die Punktzahl mit dem Schieberegler. Das Flussdiagramm zeigt den Weg, den das Programm nimmt, und die passende Codezeile wird hervorgehoben.
Codebeispiele in C und C++
#include <stdio.h>
int main(void) {
int scores[] = {92, 71, 84};
int total = 0;
for (int i = 0; i < 3; ++i) total += scores[i];
int average = total / 3;
switch (average / 10) {
case 10: case 9: puts("Grade A"); break;
case 8: puts("Grade B"); break;
default: puts("Keep practicing");
}
return 0;
}
Grade B
#include <iostream>
#include <vector>
int main() {
std::vector<int> scores{92, 71, 84};
int total = 0;
for (int score : scores) total += score;
switch ((total / static_cast<int>(scores.size())) / 10) {
case 10: case 9: std::cout << "Grade A\n"; break;
case 8: std::cout << "Grade B\n"; break;
default: std::cout << "Keep practicing\n";
}
}
Grade B
C und C++ im Vergleich
Die for-Schleife addiert die drei Punktzahlen, um den Durchschnitt zu berechnen, und switch wählt anhand von average / 10 die Note. Verwende immer geschweifte Klammern, auch wenn der Block nur eine Zeile hat, und setze am Ende jedes case ein break, damit das Programm nicht versehentlich in den nächsten case weiterläuft. Auch der Index eines Arrays muss immer innerhalb der Grenzen bleiben.
C verwendet kleine prozedurale Funktionen und zeigt offen, wie Daten im Speicher dargestellt werden.
C++ erlaubt weiterhin Arbeit auf niedriger Ebene, ergänzt aber Bibliothekstypen und sicherere Abstraktionen.
Übungen zur Vertiefung
Führe beide Versionen aus und ändere dann den Code, um zu beobachten, welche Sicherheit jede Sprache bietet.
- Teste ungültige Eingaben und Grenzwerte.
- Kompiliere mit den Flags -Wall -Wextra -Wpedantic, um zusätzliche Warnungen einzuschalten.
- Lagere gemeinsame Deklarationen in eine Header-Datei und die Implementierung in eine eigene Datei aus.
Mit einer Challenge üben
Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.
- Letter Grade Turn a test score into a letter grade. Einfach
- Fizz Buzz Erstelle eine Sequenz basierend auf Teilbarkeit durch 3 und 5. Einfach
- Triangle Classification Classify three side lengths as invalid, equilateral, isosceles, or scalene. Einfach