Skip to content

Commit a07a49d

Browse files
authored
Warnings (#66)
* verbesserte Ausgabe * typo * formatting * erklärung bool * char entfernt * collatz.cpp durch zaehlen.cpp ersätzt * umgebrochen das es in PDF passt
1 parent 172747f commit a07a49d

4 files changed

Lines changed: 20 additions & 10 deletions

File tree

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ dir: files/*
4646
@cp files/array.cpp vorkurs/lektion15/. > /dev/null
4747
@cp files/warnings.cpp vorkurs/lektion16/. > /dev/null
4848
@cp files/warnprim.cpp vorkurs/lektion16/. > /dev/null
49-
@cp files/collatz.cpp vorkurs/lektion16/. > /dev/null
49+
@cp files//zaehlen.cpp vorkurs/lektion16/. > /dev/null
5050
@cp files/tictactoe.cpp vorkurs/lektion17/. > /dev/null
5151
@cp files/assemble.cpp vorkurs/lektion18/. > /dev/null
5252
@echo "TTT-Dateien kompilieren…"

basics/warning.tex

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
\inputcpp{warnings.cpp}
1818

1919
Fehler wie diese können nicht mehr auftreten, wenn ihr \emph{warnings}
20-
anschaltet. Dies passiert über weiter Optionen, die wir dem Compiler mitgeben.
20+
anschaltet. Dies passiert über weitere Optionen, die wir dem Compiler mitgeben.
2121

2222
\textbf{Praxis:}
2323
\begin{enumerate}[resume]
@@ -54,14 +54,19 @@
5454
sie nicht einfach zu ignorieren.
5555
\end{description}
5656

57-
Wenn ihr bei jedem Compilerlauf nun warnings anschalten wollt -- und am Besten auch noch für den debugger, falls ihr ihn braucht -- wird der Befehl zum Kompilieren langsam sehr lang. Für die Dauer des Vorkurses könnt ihr euch mittels
57+
Wenn ihr bei jedem Compilerlauf nun warnings anschalten wollt -- und am Besten
58+
auch noch für den debugger, falls ihr ihn braucht -- wird der Befehl zum
59+
Kompilieren langsam sehr lang. Für die Dauer des Vorkurses könnt ihr euch
60+
mittels
5861

62+
\begin{center}
5963
\texttt{alias\footnote{alias ist ein shell-befehl, der euch eine Reihe von
6064
Anweisungen und Befehlen neu benennen lässt. In diesem Fall ist danach zum
6165
Beispiel der noch nicht existente Befehl \texttt{compile} ein neuer Name für
6266
\texttt{g++ -Vall -Wextra -Werror -O0 -g3}. Beachtet, dass ihr hier genau das
6367
abtippen müsst, was da steht, mit Leerzeichen und allem} compile="g++ -Wall
6468
-Wextra -Werror -O0 -g3"}
69+
\end{center}
6570

6671
ein bisschen Arbeit ersparen. Ein einfaches \texttt{compile -o foo foo.cpp}
6772
wird dann automatisch den Compiler mit allen angegebenen Optionen aufrufen. Den
@@ -73,7 +78,10 @@
7378
\begin{enumerate}[resume]
7479
\item Mit der warning in \texttt{warnings.cpp} möchte euch der Compiler
7580
darauf hinweisen, dass ihr hier eine Zuweisung macht, obwohl ein
76-
Wahrheitswert erwartet wird. Es gibt zwei Möglichkeiten, die warning zu
81+
Wahrheitswert\footnote{Ein Wahrheitswert (\cppinline{bool}) ist ein
82+
Variablentyp, der die Werte wahr (\cppinline{true}) und falsch (
83+
\cppinline{false}) annehmen kann.}
84+
erwartet wird. Es gibt zwei Möglichkeiten, die warning zu
7785
beheben: Ihr könnt Klammern um die Zuweisung machen (und dem Compiler
7886
so sagen, dass ihr euch sicher seid, dass hier eine Zuweisung hinsoll),
7987
oder ihr könnt aus der Zuweisung einen Vergleich machen. Welche
@@ -94,7 +102,7 @@
94102
er sich gleich verhält, aber schneller läuft. \texttt{-O2} würde
95103
bedeuten, dass relativ stark optimiert wird.
96104

97-
\texttt{zaehlen.cpp} enthält ein Programm, um bei einem von der Nutzerin eingegebenen Wort zu zählen, wie oft ein bestimmter Buchstabe (zurzeit \texttt{a} vorkommt).
105+
\texttt{zaehlen.cpp} enthält ein Programm, um bei einem von der Nutzerin eingegebenen Wort zu zählen, wie oft der Buchstabe a vorkommt.
98106
Kompiliert es mit \texttt{g++ -Wall -O2 -o zaehlen zaehlen.cpp} (probiert es auch einmal ohne \texttt{-O2} oder ohne \texttt{-Wall}) und schaut euch die resultierende Warning an.
99107
Benutzt gegebenenfalls Google, um heraus zu finden, was sie bedeutet und wie ihr sie beheben könnt.
100108
\end{enumerate}

files/warnings.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ int main() {
66
std::cin >> n;
77

88
if (n = 0) {
9-
std::cout << "Null!" << std::endl;
9+
std::cout << "n = " << n
10+
<< ", also ist n Null!" << std::endl;
1011
} else {
11-
std::cout << "Nicht Null!" << std::endl;
12+
std::cout << "n = " << n
13+
<< ", also ist n nicht Null!" << std::endl;
1214
}
1315
return 0;
1416
}

files/zaehlen.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
#include <iostream>
22
#include <string>
33

4-
int zaehlen(std::string str, char c) {
4+
int zaehle_a(std::string str) {
55
int erg;
66

77
unsigned i = 0;
88
// unsigned funktioniert wie int,
99
// kann allerdings keine negativen
1010
// Werte speichern.
1111
while (i < str.length()) {
12-
if (str[i] == c) {
12+
if (str[i] == 'a') {
1313
erg = erg + 1;
1414
}
1515
i = i + 1;
@@ -24,7 +24,7 @@ int main() {
2424
std::cout << "Gib ein Wort ein: ";
2525
std::cin >> wort;
2626

27-
std::cout << "In deinem Wort kommt " << zaehlen(wort, 'a')
27+
std::cout << "In deinem Wort kommt " << zaehle_a(wort)
2828
<< "-mal der Buchstabe a vor." << std::endl;
2929
return 0;
3030
}

0 commit comments

Comments
 (0)