Informatik I for D-MAVT

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

Imperative Programmierung
Forschungszentrum caesar
Variablen und Datentypen
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 5 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Das erste Programm (Folie 16)
Einführung in C++ und das objektorientierte Programmieren (OOP)
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
Struktogramme IF-ELSE FOR – Schleife
Term {abstrakt} alsText(){abstrakt} berechnen(Belegung){abstrakt} Zahl alsText() berechnen(Belegung) double wert Variable alsText() berechnen(Belegung)
Wichtige Fachausdrücke in C
Grundkonzepte Java - Klassendefinition
So, ein paar Fragen.. Wo sind mehr Bälle? Wo sind mehr Steine?
Einführung in die Programmiersprache C 1
Informatik I for D-MAVT
© Alexander Schwing, 2010Institute of Visual Computing Informatik I for D-MAVT Exercise Session 2.
Informatik 1 Übung 2.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
© Roland Angst, 2010Institute of Visual Computing Informatik I for D-MAVT Exercise Session 1.
Repetitorium PG : Gültigkeit, Sichtbarkeit & Operatorüberladung FH-Darmstadt, FB Informatik.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
... Unternehmens- leitung
Einführung in die Programmierung
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmiersprache C 4
Parallel Programming Proofs ( yay !)
Informatik 1 Letzte Übung.
Informatik 1 Übung 4.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Arduino Kurs Abend 2.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Datentypen: integer, char, string, boolean
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Informatik Grundlagen, WS04, Seminar 7
BMEVIEEA100 Grundlagen der Programmierung
Vorlesung 3. if else Anweisung if (Ausdruck) Anweisung1 else Anweisung2 Ausdruck hat einen von 0 verschiedenen Wert, so wird Anweisung 1 ausgeführt. Bei.
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Grundlagen C 2
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Übersicht Nachtrag zu Ausdrücken
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Variablen und Datentypen
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Tutorium Software-Engineering SS14 Florian Manghofer.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
Hello World! Javakurs 2013 Arne Kappen
Variable Beim Ausschalten gehen alle in den Variablen gespeicherten Informationen verloren! Zweck: Speichern von Informationen, z. B. Zahlen Modellvorstellung:
Einführung in die Programmierung
 Präsentation transkript:

Informatik I for D-MAVT Exercise Session 4

Administratives Ich bin nächste Woche abwesend Übungsstunde vom 31.3.2010 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

Bemerkung Übungen bis jetzt zufriedenstellend gelöst Speziell die Programmieraufgaben! Aber: mehr Disziplin bei Übungsabgabe Abgabe jeweils Mittwoch in Übungsstunde

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)!

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

Ü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

Ü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

Ü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

? ? ? ? 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) ? ? ? ?

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 ? ?

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

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

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! ? ? ? ?

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

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 ? ? ?

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

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.

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

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 = 2.2833 ?

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 = 2.2833 ?

Ü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){ } ?

Ü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++)

? ? ? Ü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) ? ? ?

Ü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 http://www.cplusplus.com/reference/ 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)

ASCII-Tabelle

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

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