Mapra: C++ Teil 2. Felix Gruber, Sven Groß. 2. Mai 2017 IGPM. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai / 11

Ähnliche Dokumente
C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16

Programmieren in C/C++ und MATLAB

Einführung in die STL

1. Übung zu "Numerik partieller Differentialgleichungen"


Arnold Willemer C++ Der Einstieg. WlLEY

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

Assoziative Container in C++ Christian Poulter

Mapra: C++ Teil 3. Felix Gruber, Michael Rom. IGPM, RWTH Aachen. 10. Mai 2016

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging

Debugging mit ddd (Data Display Debugger)

Einführung in die C-Programmierung

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 E-Uebung3.fm

Objektorientierte Programmierung mit C++ Vector und List

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Debugging mit GDB Albrecht Oster Proseminar C - Grundlagen und Konzepte

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser

RO-Tutorien 3 / 6 / 12

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Einführung in die STL anhand eines ausgewählten Beispiels

Angewandte Kryptografie Praktikum 1

8. Referenzen und Zeiger

C++ Teil 1. Sven Groß. 9. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 1 9. Apr / 19

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Programmierung mit C Zeiger

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

Einführung in die Programmierung mit C++

C++ Klassen, Vererbung. Philipp Lucas. Sebastian Hack. Wintersemester 2008/09. saarland.

C++ Programmierung. Uwe Naumann. LuFG Informatik 12, RWTH Aachen University, Germany

Programmieren in C Signale, Bitfelder, Unionen Fehler, Debugging, Profiling

Zeiger, Arrays und Strings in C und C++

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Mapra: C++ Teil 8. Felix Gruber, Michael Rom. IGPM, RWTH Aachen. 21. Juni 2016

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff

Deklarationen in C. Prof. Dr. Margarita Esponda

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Auswahlen (Selektionen)

Tutorium Rechnerorganisation

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Die Programmiersprache C99: Zusammenfassung

Entwicklung mit mehreren Dateien

C++-Entwicklung mit Linux

Zeiger und dynamischer Speicher

Einführung in C++ mit Microsoft VS

C++ - Einführung in die Programmiersprache Fehler abfangen. Leibniz Universität IT Services Anja Aue

Algorithmen zur Datenanalyse in C++

Thomas Binzinger. Jetzt lerne ich. Delphi. Markt+Technik Verlag

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Programmierkurs. SoSe Markus Geveler Inst. f. Applied Mathematics, TU Dortmund.

C-Pointer (Zeiger, Adressen) vs. C++ Referenzen

Mapra: C++ Teil 7. Felix Gruber, Michael Rom. 14. Juni 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 7 14.

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Einführung in die Programmierung

ESP Tutorium. Studienassistent: Ewald Moitzi. Gruppe 9

2. Programmierung in C

Kurzeinführung Stand: 10. Oktober 2014

Modellierung und Programmierung 1

Grundstruktur eines C-Programms

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten

C++ für Spieleprogrammierer

Elementare Datentypen in C++

Objektorientierung Grundlagen

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek

C++ - Eine Ubersicht fur Java-Programmierer

Sortieren durch Mischen (Mergesort; John von Neumann 1945)

11. Übung Informatik II - Operatorfunktionen

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6

Hydroinformatik I: Hello World

2. Programmierung in C

Organisatorisches. Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Definition Datenstruktur. Nächste Woche keine Vorlesung!

C++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT

Hochschule München, FK 03 SS Masterstudiengang Technische Berechnung und Simulation. Programmierung von CAx-Systemen Teil 1

Debuggen mit GDB (Gnu DeBugger) unter Eclipse

Zusammengesetzte Datentypen -- Arrays und Strukturen

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Informatik Repetitorium SS Volker Jaedicke

Programmieren in C/C++ und MATLAB

2. Semester, 2. Prüfung, Lösung

Metaprogrammierung 372

Inhaltsverzeichnis. Heiko Kalista. C++ für Spieleprogrammierer ISBN: Weitere Informationen oder Bestellungen unter

Abgeleitete Datentypen

Spieleprogrammierung mit DirectX

Zeiger: Der Adressoperator &

Vorkurs Informatik: Erste Schritte der Programmierung mit C++

Name: Klausur Programmierkonzepte SS 2011

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Programmieren in C++ Einführung

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Übersicht. Informatik 1 Teil 9: komplexe Datentypen (Strukturen, Enumerationen, Unions)

kurze Wiederholung class templates

5.6 Spezielle Liste: Stack

Funktionales C++ zum Ersten

Name: Klausur Informatik III WS 2003/04

Transkript:

Mapra: C++ Teil 2 Felix Gruber, Sven Groß IGPM 2. Mai 2017 Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 1 / 11

Themen vom letzten Mal Kontrollstrukturen Funktionen const Referenzen Zeiger dynamische Felder Rekursion Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 2 / 11

Heutige Themen 1 Graphisches Debuggen 2 Zusammengesetzte Datentypen Strukturen (Structs) Überladen von Operatoren 3 Vektoren Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 3 / 11

Debuggen mit gdb und ddd/kdbg Programm mit -g compilieren für Debuggingsymbole bzw. g ++ -g -o prog < Quelltexte und Objektdateien > g ++ -g -c quelltext. cpp g ++ -g -o prog quelltext. o weiteredateien. o Starte Debugger mit gdb prog (textbasiert) oder ddd prog bzw. kdbg prog (für grafisches Front-End) Code::Blocks besitzt auch ein grafisches Front-End zum gdb Demo Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 4 / 11

Wdh.: Häufig benötigte gdb-befehle break setze Breakpoint, benötigt Zeilennummer oder Funktionsnamen als Argument run starte das Programm next führe nächste Zeile im Quelltext aus step führe nächste Zeile aus, gehe dabei ggf. in aufgerufene Funktion print gibt den Wert des als Argument übergebenen Ausdrucks aus set variable i = 42 setzt i auf 42 backtrace zeige stack trace an frame 1 wechsele in Stack-Frame 1 continue Angehaltenes Programm normal weiterlaufen lassen quit beende Debug-Session und gdb Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 5 / 11

Wdh.: Literatur zu gdb Free Software Foundation. Debugging with GDB: The GNU Source-Level Debugger. GNU Press, 10th edition, 2014. https://sourceware.org/gdb/current/onlinedocs/gdb/. Norman Matloff and Peter Jay Salzman. The Art of Debugging with GDB, DDD, and Eclipse. No Starch Press, San Francisco, 2008. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 6 / 11

Wdh.: gdb-tutorials Norman Matloff. Guide to faster, less frustrating debugging, 2002. http://heather.cs.ucdavis.edu/~matloff/unixandc/clanguage/ Debug.html. Ryan M. Schmidt. RMS s gdb debugger tutorial. http://www.unknownroad.com/rtfm/gdbtut/gdbtoc.html. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 7 / 11

Strukturen (Structs) Strukturen: Zusammenfassung unterschiedlicher Datentypen zu einem neuen benutzerdefinierten Datentyp z.b. neuer Datentyp Datum: int string int struct Datum { int Tag ; string Monat ; int Jahr ; }; // Semikolon nicht vergessen! Datum MamasGeb, MeinGeb ; MamasGeb. Tag = 12; MamasGeb. Monat = " Februar "; MamasGeb. Jahr = 1954; MeinGeb = MamasGeb ; // Zuweisung MeinGeb. Jahr += 30; // ich bin genau 30 Jahre juenger Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 8 / 11

Überladen von Operatoren (operator overloading) praktisch wäre, folgendes schreiben zu können: if ( MamasGeb < MeinGeb ) // Datumsvergleich cout << " Mama ist aelter als ich."; möglich, wenn man folgende Funktion definiert: bool operator < ( const Datum & a, const Datum & b) {... } Das nennt man Operatorüberladung. MamasGeb < Urlaub ist dann äquivalent zum Funktionsaufruf operator<( MamasGeb, Urlaub ) für viele Operatoren möglich, z.b. + - * / == >> << usw., je nach konkretem Datentyp sinnvoll Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 9 / 11

Vektoren Alternative zu C-Feldern (Arrays) ein Datentyp aus der STL (Standard Template Library) Datentyp der Einträge bei Deklaration angeben, z.b. vector<datum> Angabe der Größe bei Deklaration oder später mit resize, Abfrage der Größe mit size Zugriff auf Einträge mit [ ]-Operator Nummerierung 0,..., n-1, keine Bereichsprüfung! # include < vector > using std :: vector ; vector < double > vec1 (2), vec2, vec3 ; vec2. resize (5); // Groesse auf 5 Eintraege aendern vec3. reserve (5); // Speicher reservieren, Groesse weiter 0 vec2 [0] = 1.; // erlaubter Zugriff vec3 [0] = 1.; // undefinierter Zugriff for ( int i =0; i< vec2. size (); ++i) vec2 [ i] = 0.07; Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 10 / 11

Vektoren (2) vec2. push_ back (4.1); // haengt neuen Eintrag hinten an, // d. h. vec2 [5] = 4.1 vec3. push_ back (4.1); // haengt neuen Eintrag hinten an, // d. h. vec3 [0] = 4.1 vec1 = vec2 ; // Zuweisung, passt Groesse von vec1 an vector < double >:: iterator it; for (it= vec1. begin (); it!= vec1. end (); ++ it) cout << (* it) << endl ; kein Vektor im mathematischen Sinne: arithmetische Operatoren (+, -, *) nicht implementiert Ändern der Länge führt evtl. zu Reallozierung an anderer Speicheradresse Vorsicht mit Zeigern! STL definiert weitere Container wie list, map, dazu später mehr Container verwenden Iteratoren statt Zeiger Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 11 / 11