INFORMATIK I
Übung 6 : Kontrollfluss
1. April 2015
Daniel Hentzen
dhentzen@student.ethz.ch

Übung 5 : Arrays und Strings
Theorie
structures
- unions
- enumerations
- loops (for, while, do while)
Structures (struct)
= benutzerdefinierter Typ
= "Ordner"
struct MyNewDataType {
<type1> member1; <type2> member2; ... }; //Semikolon !
struct student{
float grade;
bool passed;
};
Definition : Alternativen
struct student{
...
} adam, eva; //erstellt 2 student : adam, eva
struct {
...
} s1; //erstellt einen struct mit namen s1
MyNewDataType name;
student eva; //Deklaration
student adam = {5.25, true}; //Deklaration & Deklaration
eva = adam; //Zuweisung
- auf Mitglied-Variablen zugreifen :
name.member1 = ...; // "member1 von name"
float a = Hans.grade; // "grade von Hans"
daniel.grade = hans.grade; // "grade von Daniel = grade von Hans"
Achtung auf Datentypen bei Zuweisung!
- Nesting :
struct teacher{
int students;
student adam; // erlaubt
student eva;
teacher markus; // nicht erlaubt!
};
Unions
mehrere Typen im gleichen Speicher
union type_name {
<type1> member1;
<type2> member2;
..
} object_names;
- besetzter Speicherplatz = Speicherplatz der grössten Mitgliedsvariable
- allen Typen wird der gleiche Wert zugeordnet
- nur 1 Wert kann gespeichert werden!
- falls eine Variable geändert wird, werden alle geändert
Beispiel
union mix_temp{
int l;
struct s{
short hi;
short lo;
};
char c[4];
} mix;
mix.l = 3;
- mix.l = 3,
- mix.s.hi = 3,
- mix.s.lo = 3,
- mix.c[0] = 3,
- mix.c[1] = 3,
- mix.c[2] = 3,
- mix.c[3] = 3
Enumerations
enum type_name {value1,value2,value3,...} object_names;
enum Months {January, February, March, April, May, June, July, August, September, October, November, December} a;
a = May; //ein Wert aus der Liste
a = 4; //Index 0-11 (Standard)
enum Months {January = 1, February,...} a;
a = 5; //May
enum Months {January = 1, June = 6, March = 3} a;
Loops / Schleifen
for
while
do while
for
for (int i=0; i<4; i++)
{
cout << "i is: " << i;
}
- int i : Index
- von 0 bis (i < 4 = false) (0 bis 3)
- Bedingung i < 4 wird zuerst geprüft, dann wird ausgeführt
- nach dem Ausführen : i++ (i = i+1)
Beispiel : Arrays
int temperaturliste[7] = {10,12,11,15,14,13,17};
for (int i=0; i < 7; i++)
{
cout << temperaturliste[i];
}
while
int i = 0;
while (i < 4)
{
cout << "i is: " << i;
i++;
}
- Index-Variable vor der Schleife definieren
- Zuerst wird Bedingung geprüft, dann wird ausgeführt
- nach dem Ausführen : i++ (i = i+1) (in der Schleife)
Beispiel :
int temperaturliste[7] = {10,12,11,15,14,13,17};
int i = 0;
while (i < 7)
{
cout << temperaturliste[i];
i++;
}
int temperaturliste[7] = {10,12,11,15,14,13,17};
int i = 0;
while (i < 7)
{
cout << temperaturliste[i];
i++;
}
for vs while
- for
- für Schleifen mit bekannter Anzahl an Durchgängen
- "für i=x bis y"
- while
- für Schleifen mit unbekannter Anzahl an Durchgängen
- "solange Bedingung = true"
- für komplexe Bedingungen
while <-> for
do while
int i = 0;
do {
cout << "i is : " << i;
i++;
} while (i<4);
- Zuerst wird ausgeführt, dann Bedingung überprüft !!
- --> mindestens 1 Durchlauf !
Verkürzte Operatoren
postfix : x++ (x--)
prefix : ++x (--x)
int x = y++; //int x = y; y = y+1;
int x = ++y; //y = y+1; int x = y;
Zuweisung :
x += 2; //x = x+2;
x -= 2; //x = x-2;
x *= 2; //x = x*2;
x /= 2; //x = x/2;
x %= 2; //x = x % 2;
Übung 6 : Kontrollfluss
Aufgabe 1 : Durchschnitt III
Aufgabe 2 : Fakultät
Aufgabe 3 : Primzahlen (!)
Aufgabe 4 : Unix Prozesse
- top : Liste aller Prozesse
- firefox & : Firefox wird geöffnet, Konsole bleibt aktiv
- ps : Prozesse, die von der Konsole gestartet wurden
- kill <pid> : bricht Programm ab
- kill -9 <pid>
Übung 6 : Kontrollfluss
By Daniel Hentzen
Übung 6 : Kontrollfluss
- 731