Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

© Olivier Saurer, 2010Institute of Visual Computing Informatik I for D-MAVT Exercise Session 4.

Ähnliche Präsentationen


Präsentation zum Thema: "© Olivier Saurer, 2010Institute of Visual Computing Informatik I for D-MAVT Exercise Session 4."—  Präsentation transkript:

1 © Olivier Saurer, 2010Institute of Visual Computing Informatik I for D-MAVT Exercise Session 4

2 © Olivier Saurer, 2010Institute of Visual Computing Administratives Ich bin nächste Woche abwesend Übungsstunde vom Jens Puwein wird mich vertreten Im selben Raum (HG D1.1) Zusammen mit seiner Übungsgruppe Übungen können an Jens abgegeben werden, er wird sie mir dann weitergeben

3 © Olivier Saurer, 2010Institute of Visual Computing Bemerkung Übungen bis jetzt zufriedenstellend gelöst Speziell die Programmieraufgaben! Aber: mehr Disziplin bei Übungsabgabe Abgabe jeweils Mittwoch in Übungsstunde

4 © Olivier Saurer, 2010Institute of Visual Computing Nachbesprechung Nicht initialisierte Variablen haben einen zufälligen Wert Je nach Compilereinstellung (z.B. MS Visual Studio C++- Compiler im Debug-Modus) macht Compiler automatische Initialisierung mit 0 int a; a1a1 0x7824 SpeicheradresseSpeicherinhalt Compiler reserviert 4 Bytes im Speicher 0x7828 0x7820 a2a2 a3a3 a4a4 Der Wert von a ist was auch immer zuvor an dieser Speicheradresse gespeichert war (interpretiert als Integer)!

5 © Olivier Saurer, 2010Institute of Visual Computing Übung 2: Gültige Variablennamen Beginnen mit Buchstabe oder _ aber nicht mit einer Ziffer Dürfen keine Sonderzeichen enthalten

6 © Olivier Saurer, 2010Institute of Visual Computing Übung 2: Auswertung von algebraischen Operatoren Bsp: Es gilt: 7.0 * (3 / 7) * * * * *5 0.0 *5 * Ergebnistyp: double 4 int 4.f float 4.0 double

7 © Olivier Saurer, 2010Institute of Visual Computing Übung 2: Typkonvertierung Bsp: double(9/2 ) double(4 ) 4.0 Ergebnistyp: double (double)9/2 9.0 / / 2.0 Ergebnistyp: double 4.5

8 © Olivier Saurer, 2010Institute of Visual Computing Übung 2: Programmanalyse Eine instanziierte Variable hat immer einen Wert der Wert kann zufällig sein (wenn nicht initialisiert) oder definiert (nach Initialisierung) Bsp: int main() { int s1, s2 = 4; double d1, d2 = 4.0; … } s1 und d1 haben zufällige Werte s2 = 4 und d2 = 4.0

9 © Olivier Saurer, 2010Institute of Visual Computing Repetition: if – else I Einfache Verzweigungen int a = 4; if (a = 2) cout << "a == 2" << endl; else cout << "a != 2" << endl; Ausgabe: a == 2 a = 4; if (2 = a) cout << "a == 2" << endl; else cout << "a != 2" << endl; Ausgabe: Kompiliert nicht! int a = 4; if (a == 3) cout << "a == 2" << endl; else cout << "a != 2" << endl; Ausgabe: a != 2 int a = 4; if (3 == a) cout << "a == 2" << endl; else cout << "a != 2" << endl; Ausgabe: a != 2 ?? ??

10 © Olivier Saurer, 2010Institute of Visual Computing Repetition: if – else II Geschachtelte Verzweigungen bool a = false; bool b = true; if (a) cout << "a == true"; else if(b) cout << "a == false && b == true"; else cout << "a == false && b == false"; Ausgabe: a == false && b == true bool a = true; bool b = true; if (a) cout << "a == true" << endl else cout << "a == false" << endl; if(b) cout << "b == true" << endl; else cout << "a == false" << endl; Ausgabe:a == true b == true ? ?

11 © Olivier Saurer, 2010Institute of Visual Computing Verkürzte Operatoren Inkrement / Dekrement Verkürzte Zuweisungs-Operatoren x++ // postfixa = b++; // a = b; b = b + 1; ++x // prefixa = ++b; // b = b + 1; a = b; x-- // postfixa = b--; // a = b; b = b - 1; --x // prefixa = --b; // b = b - 1; a = b; 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

12 © Olivier Saurer, 2010Institute of Visual Computing Kontrollstrukturen: while – Schleifen while – Schleife Bedingung: Muss vom Typ bool sein Anweisungsblock wird solange wiederholt bis die Bedingung zu false auswertet Nach Abarbeitung des Anweisungsblock wird die Bedingung immer neu ausgewertet Die Bedingung muss im Anweisungsblock verändert werden, sonst können Endlosschleifen entstehen

13 © Olivier Saurer, 2010Institute of Visual Computing Kontrollstrukturen: while – Schleifen int a = 1, b = 0; while(a = 0) b += 1; Werte von a, b? Anzahl Iterationen? a = 0, b = 0 Keine Iteration int a = 5, b = 0; while( a > 5 && a < 10) b += 1; Werte von a, b? Anzahl Iterationen? a = 5, b = 0 Keine Iteration int a = 5, b = 0; while(a > b) b += 2; Werte von a, b? Anzahl Iterationen? a = 5, b = 6 3 Iterationen int a = 1, b = 0; while(a = 3) b += 1; Werte von a, b? Anzahl Iterationen? Endlosschleife! ? ? ? ?

14 © Olivier Saurer, 2010Institute of Visual Computing Kontrollstruktur: do while – Schleifen do-while – Schleife Die Bedingung wird erst nach Ausführung des Anweisungsblocks ausgewertet Der Anweisungsblock wird mindestens einmal ausgeführt

15 © Olivier Saurer, 2010Institute of Visual Computing Kontrollstrukturen: do - while – Schleifen int a = 1, b = 0; do b += 1; while(a = 0) Werte von a, b? Anzahl Iterationen? a = 0, b = 1 1 Iteration int a = 5, b = 0; do b += 1; while( a > 5 && a < 10) Werte von a, b? Anzahl Iterationen? a = 5, b = 1 1 Iteration int a = 5, b = 0; do b += 2; while(a > b) Werte von a, b? Anzahl Iterationen? a = 5, b = 6 3 Iterationen ? ? ?

16 © Olivier Saurer, 2010Institute of Visual Computing Kontrollstruktur: for – Schleife I for – Schleife Initialisierung: Definieren des Schleifen Indexes Abbruchbedingung: Die Schleife wird abgearbeitet bis die Abbruchbedingung zu true auswertet Inkrement: Schleifen Index wird aktualisiert

17 © Olivier Saurer, 2010Institute of Visual Computing Kontrollstruktur: for – Schleife II for – Schleife Allgemeiner Ablauf einer for – Schleife Initialisierung des Indexes Auswertung der Abbruchbedingung Abarbeitung des Anweisungsblocks Aktualisierung des Inkrements Springe zu Schritt 2.

18 © Olivier Saurer, 2010Institute of Visual Computing Kontrollstruktur: for – Schleife III Beispiel: for(int i = 0; i < 10; i *= i, i -= 3) cout << i << ", "; Ausgabe: 0, -3, 6, ?

19 © Olivier Saurer, 2010Institute of Visual Computing Schleifen: break - Anweisung break : Schleife wird vorzeitig abgebrochen Kann in while, do-while und for – Schleifen verwendet werden double d = 0.0; for(int i = 1; i < 100; i++){ if (i > 5){ cout << "i = " << i << endl; break; } d += 1.0/i; } cout << "d = " << d << endl; Ausgabe: i = 6 d = 1/1 + 1/2 + 1/3 + 1/4 + 1/5 = ?

20 © Olivier Saurer, 2010Institute of Visual Computing Schleifen: continue - Anweisung continue : Rest des Anweisungsblocks wird übersprungen und die nächste Iteration ausgeführt double d = 0.0; for(int i = 1; i < 100; i++){ if (i > 5){ cout << i << ", "; continue; } d += 1.0/i; } cout << "d = " << d << endl; Ausgabe: i = 6, 7, 8, 9, 10, … 99 d = 1/1 + 1/2 + 1/3 + 1/4 + 1/5 = ?

21 © Olivier Saurer, 2010Institute of Visual Computing Übung 4 – Aufgabe 1 Transformiere die while Schleife in eine do-while Schleife Transformiere die do-while Schleife in eine while Schleife int t = 17, f = 0; while(t > 3) t /= 2 f += t; int t = 17, f = 0; if( t > 3) do t /= 2; while(t > 3); f += t; int a = 2, b = 0; do{ a *= a; b += a; }while(a < 30) int a = 2, b = 0; a *= a; b += a; while(a < 30){ a *= a; b += a; } ? ?

22 © Olivier Saurer, 2010Institute of Visual Computing Übung 4 – Aufgabe 1 Transformiere die for - Schleife in eine while - Schleife Transformiere die while - Schleife in eine for - Schleife int k = 0; for (int a = 0; a < 15; a *= a, a -= 3) k = a; int k = 0; int a = 0; while(a < 15){ k = a; a *= a; a -= 3; } ? int i = 25, j = 0; int k = 0; while(i > j && i > 0){ k = i; i = i – 2*j; j++; } int k = 0; for(int i = 25, j = 0; i > j && i > 0; i = i-2*j,j++) k = i; ?

23 © Olivier Saurer, 2010Institute of Visual Computing Übung 4 – Aufgabe 2 Programmanalyse 1. int main(int argc, char** argv){ 2. int a, b, c; 3. cout << "Einlesen von a und b " << endl; 4. cin >> a >> b; 5. while(b != 0){ 6. c = a % b; 7. a = b; 8. b = c; 9. } 10. cout << "a = " << a << endl; 11. return 0; 12. } Was gibt das Programm aus, wenn a = 11 und b = 7? Ausgabe: 1 Was gibt das Programm aus, wenn a = 12 und b = 9? Ausgabe: 3 Was berechnet dieses Programm? ggT (grösster gemeinsamer Teiler) ? ? ?

24 © Olivier Saurer, 2010Institute of Visual Computing Übung 4 – Aufgabe 3 Um Zufallszahlen zu generieren verwende srand srand kann mit time(NULL) initialisiert werden Dokumentation zu srand und time findet ihr unter Verwendet zwei verschachtelte Schleifen Die äussere Schleife wird für alle n Stellen des Passworts ausgeführt Die innere Schleife generiert solange ein neues Zeichen bis das gewünschte Zeichen vorliegt Gewünschte Zeichen sind A-z, 0-9, und Sonderzeichen (siehe ASCII- Tabelle)

25 © Olivier Saurer, 2010Institute of Visual Computing ASCII-Tabelle

26 © Olivier Saurer, 2010Institute of Visual Computing Advanced Topics ostream::operator<< ostream& operator<< (bool& val ); ostream& operator<< (int& val ); ostream& operator<< (long& val ); ostream& operator<< (float& val );... ostream Ein Datentyp wie bool, int, float, … operator<< Eigentlich wie eine Funktion (z.B. main()) Aber mit speziellem Syntax Auch +,-,*, usw. sind Operatoren! Wozu könnten Operatoren nützlich sein? © Roland Angst, 2010Institute of Visual Computing

27 © Olivier Saurer, 2010Institute of Visual Computing Advanced Topics std::cout Eine Variable (genannt Object) vom Typ ostream Wird in definiert und initialisiert std::cout<< Hallo Welt!; Ruft den << -Operator des ostream -Objects cout auf: Äquivalentes Statement: std::cout<<(Hallo Welt); Demo… © Roland Angst, 2010Institute of Visual Computing


Herunterladen ppt "© Olivier Saurer, 2010Institute of Visual Computing Informatik I for D-MAVT Exercise Session 4."

Ähnliche Präsentationen


Google-Anzeigen