Programmieren in C/C++ und MATLAB

Ähnliche Dokumente
Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 23

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB

Ein- und Ausgabe (I/O)

Programmieren in C/C++ und MATLAB

Ein- und Ausgabe mit Dateien

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

Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling

ios fstream ifstream

Informationsverarbeitung

Programmierkurs Kapitel 4: Dateien Seite 1. Verwaltungfeld im Speicher. 4.1 Alternativen zur Programmierung der Eingabe und der Ausgabe

Ein- und Ausgabe mit Dateien

4 Schleifen und Dateien

C++ - Einführung in die Programmiersprache Ein- und Ausgabe in die Konsole. Leibniz Universität IT Services Anja Aue

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

Ein und Ausgabe Grundlagen C++ E/A System operiert über streams streams sind logische Geräte, die Informationen produzieren bzw. verbrauchen streams

Vorlesungsprüfung Programmiersprache 1

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

C++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16

Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben!

C/C++ - Programmierung. Formatierte Ausgabe mit cout Seite 1 von 6

Hochschule Darmstadt Informatik-Praktikum SS 2017 EIT Bachelor 5. Aufgabenblatt Datenstruktur, Dateieingabe und -ausgabe

Grundlagen der Informatik 2. Typen

9. Vektoren. (auch Felder/array)

Kapitel 8: Abstrakte Datentypen. Inhalt. Definition ADT Keller ADT Schlange

Projekt 3 Variablen und Operatoren

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Hochschule Darmstadt Informatik-Praktikum WS 2017/2018 WIng Bachelor 6. Aufgabenblatt Zeiger, verkettete Liste, Dateieingabe und -ausgabe

Die elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert.

Mapra: C++ Teil 3. Felix Gruber. 29. April IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 3 29.

Programmieren in C/C++ und MATLAB

Angewandte Mathematik und Programmierung

GI Vektoren

Informatik I. Matthias Geel Büro: IFW A Blog:

Programmieren in C++ Stream I/O

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Grundlagen der Informatik 6. Arrays I

Informatik I - Übung 2 Programmieren in Eclipse

Hydroinformatik I: IO - Files

C++ für Ingenieure. Einführung in die objektorientierte Programmierung 4 Objektorientierte Programmierung. 4.8 Streams und Dateien HARALD NAHRSTEDT

Grundlegende Anweisungen in C++

Ein- und Ausgabe in Dateien (File I/O)

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

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

Strings. Daten aus Dateien einlesen und in Dateien speichern.

6 Ein- und Ausgabe. Bisher war unsere (Bildschirm-) Ausgabe leichtflüchtig (

3D Programmierpraktikum: Einführung in C++ - Teil 1

Informatik Repetitorium SS Volker Jaedicke

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

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

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

Quiz und Übungen. C++ Übung am 19. Mai 2016

E-/A-Funktionalität nicht Teil der Programmiersprache

Klausur Informatik WS 2012/13

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Einführung in die Programmierung mit C++

Zeiger, Arrays und Strings in C und C++

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!!

Elementare Datentypen in C++

Einführung in die Programmierung Wintersemester 2016/17

Anwendung höherer Programmiersprachen. Formatierte Ausgabe mit cout. Angewandte Informatik I C / C++ Teil B: Formatierte Ein- und Ausgabe

9 Streams. 9.1 Einführung und Architektur

10 Lesen und Schreiben von Dateien

Implementation VL3 Gruppe A

Auswahlen (Selektionen)

1 UNIX und die Kommandozeile. 2 C++ Tipps. 1.1 wichtige Befehle und Programme. 1.2 Umleiten der Standardein- und Ausgabe. 2.

Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

For matierte Ein-/Ausgabe iostream: multiple inheritance von istream und ostream Weitere abgeleitete Klassen (z. B. Ausgabe nach Strings)

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

3. Semester : 1. Prüfung

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

6 UTF8 und Stringverarbeitung

Von C zu C++ Karl Gmeiner

Wie genau kann der Differenzenquotient für Δx 0 berechnet werden?

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

Dateizugriff unter C

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

Einführung in I/O und File-Handling in C ++

Herzlich willkommen!

Grundlagen C und C++ Einheit 04: Weitere Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Grundlagen der Objektorientierten Programmierung - IO-Tools

Aufgabe 1. Universität Duisburg-Essen Fachbereich Mathematik Dr. O. Rheinbach

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

Input, Output, Dateien

8. Referenzen und Zeiger

Einführung in die Programmierung

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 18

Programmieren in C/C++ und MATLAB

Grundlagen der Informatik

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

4 ZEICHEN UND ZEICHENKETTEN

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.

Anweisungsblöcke (dazu zählen auch Programme) werden in geschweifte Klammern eingeschlossen.

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

+ C - Formatierte Eingabe mit scanf()

Transkript:

Programmieren in C/C++ und MATLAB Christof Beyer Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 7-1

Bisher eingeführt war für Namen nur der Datentyp char. Dieser erlaubt das Speichern eines Buchstabens, z.b.: char n; n = B ; Zeichenketten Soll mehr als ein Buchstabe verwendet werden, so muss man eine Zeichenkette definieren, da es keinen elementaren Datentyp für Zeichenketten gibt (gilt für C und C++): char text[21]; text = Text der Zeichenkette ; // Deklaration einer Zeichenkette char text2[] = Text der Zeichenkette ; // Implizite Deklaration cin >> text; // Achtung! Tastatureingabe darf nicht länger // als 21 Zeichen sein Das Problem ist wie bei den Zahlen-Feldern auch, dass die Größe fest vorgegeben werden muss. So passieren leicht Speicherfehler, die zum Programmabsturz führen können. CAU 7-2

Strings Der Datentyp string in C++ erlaubt einen einfachen Umgang mit Zeichenketten. Diese passen sich automatisch der Länge der Zeichenkette an, somit können keine Speicherfehler mehr auftreten. Um Strings verwenden zu können, muss die Standardbibliothek eingebunden sein, und der Namenraum definiert werden: #include <cstdlib> using namespace std; string s1; // Deklaration eines strings mit Namen s1 s1 = Text der Zeichenkette ; string s2 = Ankuendigung ; Für Strings gibt es die Konkenation, also die Verknüpfung: s1 = s1 + s2; // Ergibt: Text der ZeichenketteAnkuendigung CAU 7-3

Strings Ebenso existieren für Strings Vergleiche: if(s1 == s2) cout << Strings sind gleich ; Lexikographischer Vergleich mit < und < : string s1 = Bauer ; string s2 = Bader ; if(s1 < s2) // Schreiben in alphabetischer Reihenfolge cout << s1 << << s2; else cout << s2 << << s1; Man kann aus einem String einen Teil herausnehmen, um nur auf diesen Teil Zugriff zu haben: string s1 = Zeichenkette string s2 = s1.substr(1,5); // Kopiert ab Position 1 die folgenden // 5 Zeichen in s2 CAU 7-4

Strings Ebenso können Teile eines Strings ersetzt werden: string s1 = Text der Zeichenkette ; string s2 = s1.replace(9, 12, Ankuendigung ); ersetzt ab Zeichen 9 die folgenden 12 Zeichen durch den String Ankuendigung. In Strings kann gesucht werden. Die Methode find( Text ) liefert die Position des gefundenen Textes zurück (pos >= 0), bzw. -1 falls der Text nicht im String enthalten ist. int pos = s2.find( Ank ); // liefert 9 zurueck int pos = s2.find( Amk ); // liefert 1 zurueck Man kann aus einem String eine char-zeichenkette machen, da diese oft von C++ Methoden verlangt wird. Dazu verwendet man die Methode c_str(), die eine Zeichenkette für C zurückliefert. (Beispiel siehe später) CAU 7-5

Strings Strings können anhand der Operatoren >> und << in der Ein- und Ausgabe verwendet werden: string s1; cin >> s1; // Lies string von Tastatur string s2 = Ihre Eingabe: ; s2 +=s1; cout << s2 << endl; CAU 7-6

File Input Output Bisher konnten einem Programm nur Daten über die Tastatur eingegeben werden, und die Ausgabe erfolgte am Bildschirm. Dazu wurde die Standardein- und ausgabe verwendet: #include <iostream> // Einbinden der Bibliothek für cin und cout using namespace std; // Festlegen des Namensraums int x; // Deklaration einer int Variable mit Namen x cin >> x; // liest eine int Zahl von der Tastatur cout << x = << x << endl; // Schreibt Text und eine Zahl // auf den Bildschirm Für größere Datenmengen ist dies jedoch sehr unpraktisch, und man braucht Methoden, um aus Dateien zu lesen bzw. in Dateien zu Schreiben. CAU 7-7

File Input Output Um Dateien lesen und Schreiben zu können, muss das entsprechende Header-File <fstream> eingebunden werden: #include <fstream> // Einbinden der Bibliothek für File IO using namespace std; // Festlegen des Namensraums Für Dateien, aus denen gelesen wird, gibt es den Datentyp ifstream, für Dateien, in die geschrieben wird, den Dateityp ofstream. ofstream outfile; // Deklaration einer Ausgabedatei outfile.open( ausgabe.txt ); // Oeffnet eine Ausgabedatei mit // Name ausgabe.txt outfile << Hallo << endl; // Schreibt Hallo in die Datei outfile.close(); // Schliessen der Datei Mit der Methode open( Dateiname ) kann eine Datei geöffnet werden, der Name wird dabei übergeben. Ist die Datei nicht vorhanden, so wird sie neu erzeugt. Die Methode close() schließt die Datei wieder. Der Operator << kann verwendet werden, um Text oder Zahlen in die Datei zu Schreiben. CAU 7-8

File Input Output Manchmal muss man angeben, was man mit der Datei machen möchte. Das Betriebssystem positioniert einen sog. Dateizeiger, der auf die Stelle in der Datei zeigt, an der geschrieben bzw. gelesen wird. Ohne besondere Angaben steht der Dateizeiger am Anfang. Hat die Datei schon einen Inhalt, so wird dieser Überschrieben. ios_bas::app ios_base::ate ios_base::binary ios_base::nocreate Datei wird geöffnet, neue Daten hinten angehängt Datei wird geöffnet, Dateizeiger zeigt auf das Ende Datei wird im Binärmodus geöffnet Datei wird nicht bei Bedarf neu erzeugt CAU 7-9

File Input Output Beim Umgang mit Dateien ist große Sorgfalt geboten. Daher sollten unbedingt Fehlerabfragen verwendet werden, falls z.b. die zu öffnende Datei nicht vorhanden ist oder der Zugriff nicht funktioniert (Datei mit anderem Programm geöffnet). Dazu liefern ifstream oder ofstream 0 zurück, falls ein Fehler aufgetreten ist: ifstream infile; infile.open( eingabe.txt ); if(!infile) cout << Fehler beim Oeffnen der Datei eingabe.txt ; Aus der Datei kann gelesen werden mit >>. Dabei werden jeweils die nächsten Daten ausgelesen und in eine Variable gespeichert. Die Variable muss zum Datentyp, der tatsächlich gelesen wird, passen! (Sonst: Implizite Typumwandlung). double x, y, z; int wert; infile >> x >> y >> z >> wert; Liest einen int-wert für einen Punkt in 3D ein. CAU 7-10

File Input Output Ausgabeformatierung Auffüllen auf vorgegebene Breite: Mit Hilfe von width() kann die Breite der unmittelbar folgenden Ausgabe eingestellt werden. Liefert die Ausgabe weniger Zeichen, als durch width() festgelegt, wird mit Leerzeichen aufgefüllt. Soll ein anderes Füllzeichen verwendet werden, kann dieses mit fill() gesetzt werden. cout << 1 << und << 1 << endl; // Ausgabe: 1 und 1 cout.width(5); // Setzen der Audgabebreite auf 5 Zeichen cout.fill( ); // Fuellzeichen ist nun statt Leerzeichen cout << 1 << und << 1 << endl; // Ausgabe: 1 und 1 Die Festlegung der Breite gilt nur für die nächste Ausgabe (<< Zeichen, siehe oben). Alternativ kann das auch als sog. Manipulator gesetzt werden: cout << setw(5) << setfill( ) << 1 << und << 1 << endl; CAU 7-11

File Input Output Ausgabeformatierung Genauigkeit Die Anzahl der Ziffern von Gleitkommazahlen wird anhand von precision() gesteuert. Diese Festlegung gilt dauerhaft, kann aber durch erneuten Aufruf von precision() geändert werden. Enthält die interne Darstellung mehr Ziffern, so wird gerundet. cout.precision(6); cout << 1234.56789 << endl; // Ausgabe: 1234.57 Oft wird in der Wissenschaft das Ergebnis als Exponentialzahl angegeben (x*10 n oder xe+n). Dazu wird das flag ios_base::scientific gesetzt, und mit precision() die Anzahl der Nachkommastellen festgelegt cout.setf(ios_base::scientific); cout.precision(4); cout << 1234.56789012345 << endl; //Ausgabe: 1.2346e+03 CAU 7-12

Übung Matrizen Schreiben Sie das Matrizenprogramm von letzter Woche so um, dass Sie sowohl die Dimension der Matrizen als auch die Matrizen a und b aus einer Datei einlesen können. Der Dateiname dieser Eingabedatei soll über die Bildschirmeingabe eingelesen werden können, ebenso soll der Name der Ausgabedatei über die Tastatur eingegeben werden können. In diese Ausgabedatei soll die Matrix c geschrieben werden, also das Ergebnis der Addition oder Multiplikation. Die Eingabedatei finden Sie auf der Homepage als *.txt und gezipped. Ebenso ist dort eine Version des Programms von letzter Woche, das Sie als Startprogramm verwenden können, wenn Sie letzte Woche nicht fertig geworden sind. Verwenden Sie das Programm aus der letzten Stunde, kopieren Sie es jedoch vorher unbedingt! in ein neues Unterverzeichnis. CAU 7-13

Übung Hinweise: Für die Eingabedatei kann nun der Name nicht mehr als feste char- Zeichenkette vorgegeben werden, sondern dieser wird von der Tastatur gelesen. Dabei muss der string noch in eine c-zeichenkette umgewandelt werden anhand von c_str(): string name_in; ifstream infile;... cin >> name_in;... infile.open(name_in.c_str()); if(!infile)...... CAU 7-14