Pascal Schärli 08.03.2019
Pascal Schärli 08.03.2019
Pascal Schärli 08.03.2019
Wozu dient ein Compiler?
Übersetzen des Quelltexts in
ausführbaren Maschinen-CodePascal Schärli 08.03.2019
Sind folgende C++ Anweisungen gültig?
std::cout << "C++ is better than Java.";int a = 100if (1<2)
std::cout << "I knew it!" << std::endl;Pascal Schärli 08.03.2019
a) Was repräsentiert ein Ausdruck?
Â
b) Geben Sie einen primären Ausdruck an!
Â
c) Geben Sie einen zusammengesetzten Ausdruck an!
Â
d) Was bedeutet es, einen Ausdruck auszuwerten?
Â
e) Welchen Typ haben die folgenden beiden Ausdrücke?
Eine Berechnung01 + 1Seinen Wert zu bestimmenint1/2
int1*2
Pascal Schärli 08.03.2019
Gebt den Wert der folgenden Ausdrücke an
3 + 4 * 5235 / 220.9 * 10.09.017 < 4falsePascal Schärli 08.03.2019
Wozu dient eine Variable?
Zur Speicherung eines (veränderbaren) Wertes unter einem NamenWahr oder Falsch?
Ein Variablenname ist ein Ausdruck.Jede Variable hat einen Typ.Pascal Schärli 08.03.2019
Was ist die Ausgabe dieser Programme?
int x = 10;
x = 2 * x;
std::cout << x << std::endl;20int y = 5;
int z = 3 * y;
std::cout << y + z << std::endl;20Pascal Schärli 08.03.2019
Welche Frage beantwortet der folgende Programmabschnitt?
int a;
std::cin >> a;
if (a % 2 == 0) {
std::cout << "Ja" << std::endl;
}
else {
std::cout << "Nein" << std::endl;
}Ist die Eingabezahl a gerade?Pascal Schärli 08.03.2019
Was ist die Ausgabe des folgenden Programmabschnitts?
int b = 1;
while (b < 100) {
std::cout << b << " ";
b = 3 * b;
}1 3 9 27 81Pascal Schärli 08.03.2019
Pascal Schärli 08.03.2019
(a = (b = 5)) = 42 a = (b = 5) a = b = 5Ist diese Expression ein lvalue oder rvalue?
Pascal Schärli 08.03.2019
a + a++Ist diese Expression valid?
int a = 1;((a) + (a++))Was ist der Wert dieser Expression?
Jaa++ hat höhere Präzedenz als die
Addition, aber das bedeutet nicht,
dass (a++) vor (a) ausgewertet
wird!
Abhängig nach Auswertungsrichtung
ist der Wert 3 oder 4Pascal Schärli 08.03.2019
Pascal Schärli 08.03.2019
Fliesskommazahlen können entweder als float oder double geschrieben werden.
floatdouble-> 32 Bit Floating point number
-> 64 Bit, doppelte präzision
double x = 1.5 / 4;
std::cout << x << std::endl;0.375Pascal Schärli 08.03.2019
Beim Rechnen mit verschiedenen Dateitypen wird immer in den "allgemeineren" Typ umgewandelt
boolintunsigned intfloatdoublePascal Schärli 08.03.2019
(y++ && y) + 2.0(y++ * y) + 2.0y = (x++ = 3)3.0 + 3 - 4 + 55 % 4 * 3.0 + true * x++Â
Â
Pascal Schärli 08.03.2019
(y++ && y) + 2.0(y++ * y) + 2.0y = (x++ = 3)3.0 + 3 - 4 + 55 % 4 * 3.0 + true * x++Welche Expressions sind gültig?
Pascal Schärli 08.03.2019
(y++ && y) + 2.0(y++ * y) + 2.0y = (x++ = 3)3.0 + 3 - 4 + 55 % 4 * 3.0 + true * x++Welche Expressions sind lvalues?
rvalue
rvalue
rvalue
rvalue
Pascal Schärli 08.03.2019
(y++ && y) + 2.0Was ist der Wert dieser Expression?
(y++ * y) + 2.0y = (x++ = 3)3.0 + 3 - 4 + 55 % 4 * 3.0 + true * x++2.0
undefined
7.0
4.0
Pascal Schärli 08.03.2019
int a = 2;
if (x < 7) {
int a = 8;
std::cout << a;
}
std::cout << a;
82int a = 2;
if (x < 7) {
a = 8;
std::cout << a;
}
std::cout << a;
88Pascal Schärli 08.03.2019
int sum = 0;
for (int i = 0; i < 5; ++i) {
int a;
std::cin >> a;
sum += a;
}Was ist der Scope dieser Variablen?
sumMindestens das ganze Code Snippet
iInnerhalb der for-Schleife
aInnerhalb einer Iteration der for-Schleife
Pascal Schärli 08.03.2019
int i = 1;
do{
std::cout << i << " ";
i*=2;
} while(i < 10);1 2 4 8 Â
Â
Pascal Schärli 08.03.2019
#include <iostream>
int main () {
std::cout << "Enter a number: ";
int n;
std::cin >> n;
// loop 1
for (int i = 1; i <= n; ++i)
std::cout << i << "\n";
// loop 2
int i = 0;
while (i < n)
std::cout << ++i << "\n";
// loop 3
i = 1;
do
std::cout << i++ << "\n";
while (i <= n);
return 0;
}Lösung:
Pascal Schärli 08.03.2019
Wie müsste man die folgende for-Schleife in eine while-Schleife umwandeln?
for (int i = 0; i < n; ++i)
BODY{
int i = 0;
while (i < n) {
BODY
++i;
}
}Pascal Schärli 08.03.2019
Wie müsste man die folgende while-Schleife in eine for-Schleife umwandeln?
while (condition)
BODYfor ( ;condition; )
BODYPascal Schärli 08.03.2019
Wie müsste man die folgende do-while-Schleife in eine for-Schleife umwandeln?
do
BODY;
while (condition);BODY;
for ( ;condition; )
BODY;Pascal Schärli 08.03.2019
Pascal Schärli 08.03.2019
unsigned int n;
std::cin >> n;
unsigned int f = 1;
if(n != 0) {
do {
f = f * n;
--n;
} while(n > 0);
}
std::cout << f << std::endl;while(true) {
int i1, i2;
std::cin >> i1 >> i2;
std::cout << i1+i2 << "\n";
int again;
std::cout << "Again?(0/1)\n";
std::cin >> again;
if(!again)
break;
}unsigned int z;
unsigned int d;
for(std::cin >> z >> d ; z >= d ; z = z-d);
std::cout << z << std::endl;Tipp:
Pascal Schärli 08.03.2019
unsigned int n;
std::cin >> n;
unsigned int x = 1;
if (n > 0) {
unsigned int k = 0;
bool e = true;
do {
if (++k == n) {
e = false;
}
x *= 2;
} while(e);
}
std::cout << x << std::endl;Pascal Schärli 08.03.2019
doublePascal Schärli 08.03.2019
doublePascal Schärli 08.03.2019
Pascal Schärli 08.03.2019