Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Informatik I for D-MAVT

Ähnliche Präsentationen


Präsentation zum Thema: "Informatik I for D-MAVT"—  Präsentation transkript:

1 Informatik I for D-MAVT
Exercise Session 4

2 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 Bemerkung Übungen bis jetzt zufriedenstellend gelöst
Speziell die Programmieraufgaben! Aber: mehr Disziplin bei Übungsabgabe Abgabe jeweils Mittwoch in Übungsstunde

4 Compiler reserviert 4 Bytes im Speicher
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 Speicheradresse Speicherinhalt Compiler reserviert 4 Bytes im Speicher 0x7820 int a; 0x7824 a1 a2 a3 a4 0x7828 Der Wert von a ist was auch immer zuvor an dieser Speicheradresse gespeichert war (interpretiert als Integer)!

5 Übung 2: Gültige Variablennamen
Beginnen mit Buchstabe oder _ aber nicht mit einer Ziffer Dürfen keine Sonderzeichen enthalten

6 Übung 2: Auswertung von algebraischen Operatoren
Bsp: 7.0 * (3 / 7) * 5 7.0 * 5 0.0 5.0 Es gilt: 4 int 4.f float 4.0 double Ergebnistyp: double

7 Übung 2: Typkonvertierung
Bsp: double(9/2) double(4) 4.0 (double)9/2 9.0 / 2 9.0 / 2.0 4.5 Ergebnistyp: double Ergebnistyp: double

8 Ü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 ? ? ? ? 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) Ausgabe: Kompiliert nicht! if (a == 3) Ausgabe: a != 2 if (3 == a) ? ? ? ?

10 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"; cout << "a == false && b == false"; Ausgabe: a == false && b == true bool a = true; bool b = true; if (a) cout << "a == true" << endl cout << "a == false" << endl; cout << "b == true" << endl; Ausgabe: a == true b == true ? ?

11 Verkürzte Operatoren Inkrement / Dekrement
Verkürzte Zuweisungs-Operatoren x++ // postfix a = b++; // a = b; b = b + 1; ++x // prefix a = ++b; // b = b + 1; a = b; x-- // postfix a = b--; // a = b; b = b - 1; --x // prefix a = --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 Kontrollstrukturen: while – Schleifen
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 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) a = 5, b = 0 while(a > b) b += 2; a = 5, b = 6 3 Iterationen while(a = 3) Endlosschleife! ? ? ? ?

14 Kontrollstruktur: do while – Schleifen
Die Bedingung wird erst nach Ausführung des Anweisungsblocks ausgewertet Der Anweisungsblock wird mindestens einmal ausgeführt

15 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; while( a > 5 && a < 10) a = 5, b = 1 b += 2; while(a > b) a = 5, b = 6 3 Iterationen ? ? ?

16 Kontrollstruktur: for – Schleife I
Initialisierung: Definieren des Schleifen Indexes Abbruchbedingung: Die Schleife wird abgearbeitet bis die Abbruchbedingung zu true auswertet Inkrement: Schleifen Index wird aktualisiert

17 Kontrollstruktur: for – Schleife II
Allgemeiner Ablauf einer for – Schleife Initialisierung des Indexes Auswertung der Abbruchbedingung Abarbeitung des Anweisungsblocks Aktualisierung des Inkrements Springe zu Schritt 2.

18 Kontrollstruktur: for – Schleife III
Beispiel: for(int i = 0; i < 10; i *= i, i -= 3) cout << i << ", "; ? Ausgabe: 0, -3, 6,

19 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 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 Ü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; if( t > 3) do t /= 2; while(t > 3); int a = 2, b = 0; do{ a *= a; b += a; }while(a < 30) while(a < 30){ } ?

22 Ü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 a = 0; while(a < 15){ a *= a; a -= 3; } ? ? int i = 25, j = 0; int k = 0; while(i > j && i > 0){ k = i; i = i – 2*j; j++; } for(int i = 25, j = 0; i > j && i > 0; i = i-2*j,j++)

23 ? ? ? Ü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; while(b != 0){ c = a % b; a = b; b = c; } 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 Ü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 ASCII-Tabelle

26 © Roland Angst, 2010 Institute 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, Institute of Visual Computing

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


Herunterladen ppt "Informatik I for D-MAVT"

Ähnliche Präsentationen


Google-Anzeigen