Programmieren in C/C++ und MATLAB



Ähnliche Dokumente
C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Übungen zu C++ Kapitel 1

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

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

Einführung in die C++ Programmierung für Ingenieure

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

1 Vom Problem zum Programm

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Programmierkurs Java

Installation und Inbetriebnahme von Microsoft Visual C Express

Klausur in Programmieren

Die Programmiersprache C99: Zusammenfassung

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

Text-Zahlen-Formatieren

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Einführung in die Programmierung

Grundlagen. Kapitel 1

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

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Objektorientiertes Programmieren für Ingenieure

Vorkurs C++ Programmierung

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

teischl.com Software Design & Services e.u. office@teischl.com

Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754. Berechnung von Gleitkommazahlen aus Dezimalzahlen. HSLU T&A Informatik HS10

Einführung in die Programmierung (EPR)

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

Java Einführung Operatoren Kapitel 2 und 3

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mediator 9 - Lernprogramm

Pascal-Compiler für den Attiny

Wie man eigene Programme erstellt

Excel Funktionen durch eigene Funktionen erweitern.

Artikel Schnittstelle über CSV

FB Informatik. Fehler. Testplan

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

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

Arbeiten mit UMLed und Delphi

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Die Programmiersprache C

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

Installationsanleitungen

VB.net Programmierung und Beispielprogramm für GSV

Zählen von Objekten einer bestimmten Klasse

Folgeanleitung für Fachlehrer

Folgeanleitung für Klassenlehrer

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Numerische Datentypen. Simon Weidmann

Anleitung über den Umgang mit Schildern

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Modellierung und Programmierung 1

Version 0.3. Installation von MinGW und Eclipse CDT

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

DOKUMENTATION VOGELZUCHT 2015 PLUS

Installationsanleitung CLX.PayMaker Home

Binärdarstellung von Fliesskommazahlen

Erstellen einer digitalen Signatur für Adobe-Formulare

Objektorientiertes Programmieren mit Suse Linux

Viele Bilder auf der FA-Homepage

Computeria Solothurn

Computerarithmetik ( )

Erstellen von x-y-diagrammen in OpenOffice.calc

Native Zeichenketten (C-Strings)

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

Schrittweise Anleitung zur Installation von Zertifikaten der Bayerischen Versorgungskammer im Mozilla Firefox ab Version 2.0

teamsync Kurzanleitung

Um sich zu registrieren, öffnen Sie die Internetseite und wählen Sie dort rechts oben

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Erklärung zu den Internet-Seiten von

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Einführung in die Java- Programmierung

Tutorium Rechnerorganisation

Step by Step Webserver unter Windows Server von Christian Bartl

Textgestaltung mit dem Editor TinyMCE Schritt für Schritt

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Zahlensysteme: Oktal- und Hexadezimalsystem

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Satzhilfen Publisher Seite Einrichten

Qt-Projekte mit Visual Studio 2005

Professionelle Seminare im Bereich MS-Office

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Aufklappelemente anlegen

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

ARAkoll 2013 Dokumentation. Datum:

4.1 Wie bediene ich das Webportal?

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Kontrollstrukturen und Funktionen in C

Zeichen bei Zahlen entschlüsseln

Outlook Erstellen einer aus einer HTML - Vorlage INHALT

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

Schritt 1 - Registrierung und Anmeldung

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

STRATO Mail Einrichtung Mozilla Thunderbird

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Transkript:

Programmieren in C/C++ und MATLAB Sven Willert Christian-Albrechts-Universität zu Kiel CAU 2-1

Datentypen und Formate Mit der Festlegung des Datentyps wird die Art bestimmt, mit der der Computer die Informationen interpretiert und wie sie gespeichert werden. Ebenso wird damit die Art der Operationen festgelegt, die mit diesen Datentypen erlaubt sind. C++ bietet einige fest eingebaute Datentypen, es können aber auch selber welche geschaffen werden (Klassen). CAU 2-2

Elementare Datentypen Logische (boolsche) Wert: Diese können die Werte true oder false annehmen. bool ist_richtig; Zeichen (character): Damit können Zeichen dargestellt werden sowie die Ziffern 0-9 char a = B ; Integer: Damit können ganze Zahlen dargestellt werden int i = 9; Die Ganzzahlen gibt es in mehreren Größen: short int 2 Byte -32768... 32767 int 4 Byte -2147483648... 2147483648 long int 4 oder 8 Byte -9.2 10 18... 9.2 10 18 oder wie int CAU 2-3

Elementare Datentypen Gleitkommazahlen: (Zahlen mit Nachkommastellen). Diese gibt es in einfacher und doppelter Genauigkeit: float x; double y; float 4 Byte -1.2 10-38... 1.2 10 38 double 8 Byte -1.8 10-308... 1.8 10 308 Auch wenn die Zahlen Gleitkommazahlen heißen, werden Sie mit einem Dezimalpunkt angegeben! void: Damit ist ein nicht existierender Wert gemeint. Wird auch verwendet um anzuzeigen, dass ein Unterprogramm keine Übergabeparameter braucht oder Werte zurück liefert. CAU 2-4

Implizite Typumwandlung Meist kann man Variablen oder Konstanten verschiedener Datentypen einander zuweisen. C++ macht die entsprechenden Umwandlungen automatisch. Dabei ist jedoch Vorsicht geboten, da unerwünschte Nebeneffekte auftreten können. Problemlos: Umwandlung von einem kleineren zu einem größeren Wertebereich: short > integer float > double Vorsicht im Umgekehrten Fall, da Wertebereich eventuell nicht ausreichend. Zuweisung von ganzen und Dezimalzahlen: Bei der Zuweisung von Dezimalzahlen zu Ganzzahlen werden die Nachkommastellen weggelassen: int i = 10.0/8.0; // Wert i: 1 CAU 2-5

Explizite Typumwandlung Um Klarheit zu schaffen (auch was das gewünschte Ergebnis ist) ist immer die explizite Typumwandlung zu empfehlen. Das geschieht in C vermittels eines cast (gießen, werfen). Dabei wird der Zieltyp explizit angegeben und in Klammern vor die Umzuwandelnde Variable gestellt (So auch in C möglich). double d=1.5; int i = (int)d; Ebenso kann die Variable in Klammern gesetzt werden: double d=1.5; int i = int(d); CAU 2-6

Operatoren Variablen alleine nützen nicht viel, man möchte mit Ihnen auch etwas machen. C++ stellt sehr viele Operatoren bereit, die fast alle Sonderzeichen der Tastatur verwenden. CAU 2-7

Operatoren (continued) CAU 2-8

Operatoren Wichtig ist auch, in welcher Reihenfolge die Operatoren ausgewertet werden. Analog zur Mathematik ( Punkt vor Strich ) ist eine Rangfolge oder Priorität den Operatoren zugeordnet. Diese entspricht der obigen Tabelle: 1) primäre Operatoren 2) unäre Operatoren 3) binäre Operatoren 4) Zuweisungsoperatoren Auch innerhalb der Gruppen existiert eine Reihenfolge, die ebenfalls der Tabelle entspricht (z.b. Multiplikation vor Addition). Beispiel: a+b*c == a+(b*c)!= (a+b)*c CAU 2-9

Funktionen Funktionen sind ein sehr wichtiges Sprachelement von C/C++. Eine Funktion ist ein in sich geschlossener Programmteil, der eine bestimmte Aufgabe erfüllt. Sie werden eingesetzt, um immer Wiederkehrende komplexe Operationen zugänglich zu machen und im die Komplexität des Programms zu verringern und so den Code übersichtlicher zu machen. int addition(int x, int y) { int z; z = x + y; return z; } Funktionen haben einen Rückgabewert ( int ), einen Namen ( addition ), eine Argumentliste ( (int x, int y) ), den Funktionskörper (innerhalb der geschweiften Klammern ( { und } ) und die return-anweisung für den Rückgabewert ( return z; ) CAU 2-10

Funktionen Rückgabewert: Jede Funktion in C++ muss einen Rückgabewert haben. Falls kein Rückgabewert sinnvoll ist, kann der Rückgabewert void verwendet werden dann gibt die Funktion auch nichts zurück. Der Rückgabewert einer Funktion ist oft das Ergebnis der Operationen innerhalb der Funktion oder dienen der Statusabfrage, d.h. ob die Funktion fehlerfrei ausgeführt wurde. Die Funktion addition() kann z.b. so verwendet werden: int main(void) { int a=5, b=2, c; c = addition(a,b); return 0; } Auch das Hauptprogramm hat einen Rückgabewert. CAU 2-11

Funktionen Namen: Übliche Namenskonvention, keine Doppelbelegungen mit C++ Schlüsselwörtern (z.b. return) Argumentliste Eine Funktion arbeitet auf den Daten, die ihr lokal (d.h. innerhalb der Funktion vorliegen). Außer global (außerhalb der Funktion definierten) Variablen sind das die Parameter, die in der Argumentliste übergeben werden. Man kann keinen, einen oder mehrere Parameter (durch, getrennt) angeben. Kein Parameter ist ein Argument vom Typ void; dieses kann auch weggelassen werden, allerdings müssen immer die beiden runden Klammern () vorhanden sein. Für jeden Parameter müssen Datentyp und Namen angegeben werden. ( addition( int a, int b) ) CAU 2-12

Funktionen Funktionskörper: Hier stehen die Anweisungen, die beim Aufruf der Funktion ausgeführt werden. Diese werden durch geschweifte Klammern umfasst. Die Funktionsparameter können wie normale Variablen verwendet werden. Aus einer Funktion heraus können andere Funktionen (einschließlich der Funktion selber -> Rekursion) aufgerufen werden. return - Anweisung Die Anweisungen in der Funktion werden abgearbeitet, bis das Programm ans Ende der Funktion oder zur return Anweisung kommt. Diese legt fest, welcher Wert ans Hauptprogramm zurückgegeben wird (Variable, Konstante). Bei void Funktionen gibt man nur das Keyword return; oder gar nichts an. Außerdem beendet die return Anweisung die Funktion und kehrt ins Hauptprogramm zurück dies muss nicht erst am Ende der Funktion sein. CAU 2-13

Funktionen Funktions-Prototyp: Bevor eine Funktion verwendet werden kann, muss dem Compiler mitgeteilt werden, dass es sie gibt, welchen Namen und welche Parameter (mit Typ) und welchen Rückgabewert - Typ sie hat. Dies geschieht durch einen sog. Funktions-Prototyp. Dieser sieht aus wie die Funktion selber, nur ohne den Funktionskörper, der durch ein Semikolon ; ersetzt wird. Statt Typ und Namen der Argumente reicht die Angabe der Typen der Argumente (Komma-getrennt). Der Funktions-Prototyp ist die Deklaration der Funktion, die Funktion mit Funktionskörper ist die Definition. int addition(int x, int y); Die Funktions-Prototypen müssen vor dem Hauptprogramm (und der ersten Verwendung) angegeben werden, bei mehreren Quelltext- Dateien in der header-datei (*.h). CAU 2-14

Funktionen Überladen von Funktionen Im Gegensatz zu anderen Programmiersprachen wird in C++ eine Funktion anhand ihres Namens und der Argumentliste identifiziert, der sog. Signatur einer Funktion. Damit können Funktionen gleichen Namens aber mit unterschiedlicher Argumentliste verwendet werden. Dies wird Überladen (Overloading) genannt. int addition(int x, int y); double addition(double, double); //Prototyp... double addition(double x, double y){ //Definition return x+y;} Bei Funktionsaufruf wird dann anhand der vorliegenden Funktionsparameter entschieden, welche Funktion aufgerufen werden soll. int a=3, b=5, c; double d=3.2, e=5.5, f; c = addition(a,b); // int addition() verwendet f = addition(d,e); // double addition() verwendet CAU 2-15

Funktionen Überladen von main Eine besondere Funktion in C++ ist main(). Diese gibt es immer in mindestens zwei überladenen Varianten: int main(void); int main(int argc, char* argv[]); Bei der zweiten Version werden in das Hauptprogramm die Parameter übergeben, die beim Aufruf der Datei in der Kommandozeile nach dem Programmnamen mit angegeben werden. argc ist die Anzahl der Argumente. argc >= 1, da der Programmname das erste Argument ist. In argv stehen die Argumente (zweidimensionales Feld vom Typ char). Der Zugriff erfolgt über die eckigen Klammern: argv[2] liefert das dritte Argument (Achtung: C++ fängt bei Null an zu zählen. argv[0] ist der Programmname. So können Programme direkt beim Start durch die angegebenen Argumente (Optionen) gesteuert werden. CAU 2-16

Standardeingabe und Standardausgabe Ein C++ Programm kann Daten von der sog. Standardeingabe lesen. Das ist im Normalfall die Tastatur. Im Batch-Modus kann auch die entsprechende Eingabe aus einer Textdatei gelesen werden. In C++ wird diese Eingabe von der Tastatur als stream (Strom) bezeichnet. Ein stream ist ein Objekt, das eine Folge von Bytes liefert bzw. aufnehmen kann. cin ist der stream für die Standardeingabe. Mit dem Operator >> wird aus dem stream in eine Variable gelesen, wobei der Typ der Variablen entscheidet, wie die Bytefolge interpretiert wird. >> zeigt in die Richtung, in der die Bytes geschickt werden. Die Eingabe wird durch die Eingabetaste beendet. double d; cin >> d; Damit liest man einen double-wert aus der Standardeingabe aus. CAU 2-17

Standardeingabe und Standardausgabe Für die Standardausgabe gibt es den Operator << und den stream cout. Auch hier werden die Bytes auf die Ausgabe gelenkt (in Pfeilrichtung). Für cout können mehrere Ausgaben verkettet werden, und es kann die Ausgabe formatiert werden. Mit dem Manipulator endl erreicht man einen Zeilenumbruch. double d=5.3, c=2.2; cout << Wert von d: << d <<, Wert von c: << c << endl; // Ausgabe: Wert von d: 5.3, Wert von c: 2.2 cerr ist der Standardfehlerkanal (nur aktiv bei Umlenken der Ausgabe mit cout in eine Datei, dann erscheint cerr dennoch auf dem Bildschirm. Für diese Art der Aus- und Eingabe (cin, cout, cerr) muß die Header-Datei iostream im Programm eingebunden werden (#include iostream) CAU 2-18

Ihr erstes C++ Programm 1: /* Das erste Programm: 2: Summe der Zahlen von 1 bis 10 3: */ 4: 5: #include <iostream> 6: 7: int main(void) 8: { 9: // Variable deklarieren und initialisieren 10: int zahl; 11: zahl = 0; 12: 13: // Schleife durchlaufen 14: for (int i = 1; i <= 10; i++) 15: { 16: zahl += i; 17: cout << "Summe bis " << i << ": "; 18: cout << zahl << "\n"; 19: } 20: } 21: 1) Geben Sie das nebenstehende C++ Programm ein und führen Sie es aus. 2) Ändern Sie das Programm so ab, dass unterer und oberer Schleifenwert eingegeben werden können. 3) Ändern Sie die Ausgabe so ab, dass nur das Endergebnis ausgegeben wird. CAU 2-19

Starten des C++ Compilers als Entwicklungstool So starten Sie den Compiler: Start -> Programme -> Bloodshed Dev-C++ -> Dev-C++ Tip des Tages schließen. Dann: Datei -> Neu -> Projekt dann wählen Sie Console Application mit der Maus aus und unter Projekt Optionen geben Sie einen Namen für das Programm ein: ex1 -> OK CAU 2-20

Starten des C++ Compilers als Entwicklungstool Im Optionsfenster Create New Projekt gehen Sie auf ihr Home Verzeichnis (samba...) und legen dort ein neues Verzeichnis an ( ex1 ). Gehen Sie in das neu angelegte Verzeichnis und speichern Sie das Projekt. Sie sehen nun die Benutzeroberfläche des Compilers und eine Datei main.cpp, mit dem Anfang eines Hauptprogramms. Diese heißt [*] main.cpp, d.h. sie ist noch nicht gespeichert. Wählen Sie dazu Datei -> Alles Speichern -> OK um die Datei main.cpp zu speichern (das [*] müsste weg sein) Drücken sie nun die Taste F9 zum kompilieren und starten. Es erscheint ein schwarzes Fenster mit dem Text Drücken Sie eine beliebige Taste..., das verschwindet, wenn Sie eine Taste drücken. CAU 2-21

Verwenden des C++ Compilers Unter: Ausführen -> Kompilieren können Sie das Programm kompilieren. Mit Ausführen -> Ausführen starten Sie das Programm. Dies ist gleichbedeutend mit dem Start des Programms von der Dos-Shell aus. Geben Sie nun das vorstehende Programm (ohne Zeilennummern) vor der Zeile system( PAUSE ); ein. Geben Sie nur den Funktionskörper ein, die Include-Dateien und die Kopfzeile der main- Funktion lassen sie unverändert. Kompilieren Sie das Programm und führen Sie es aus. Verstehen Sie die Ausgabe? Verstehen Sie die einzelnen Programmzeilen? CAU 2-22

Der C++ Compiler als Entwicklungstool int main(void){...... } prog1.cpp Quelltext Compiler L " ÀˆEïEðÿEèÿ prog1.o Objekt-Code Linker int add(int a, int b); 0100010101 1100111010 ÇEÄÿÿÿÿè8 À tÿÿÿ prog1.h Header-Dateien *.dll Bibliotheken prog1.exe Ausführbares Programm Der Compiler erzeugt aus den Quelldatein (*.cpp) und den header- Dateien (*.h) als Zwischenschritt den Objekt-Code (*.o), der Linker erzeugt aus dem Objekt-Code und den eingebundenen Bibliotheken (*.dll) das ausführbare Programm (*.exe) CAU 2-23

Das Programm Bloodshed Dev-C++ Das Programm Bloodhsed Dev-C++ (und viele weitere sog. Entwicklungsumgebungen) bündelt die Abläufe beim erstellen eines Programms. - Editor: Zunächst stellt es einen Editor bereit, mit dem Quell- und Header-Dateien geschrieben werden können. Dabei wird die Synatx farbig dargestellt, um die Programmierung zu erleichtern. - Über das sog. Projekt (das Sie auch immer erst anlegen müssen) werden alle benötigten Dateien verwaltet und Voreinstellungen für den Compiler vorgenommen (z.b. Console-Applikation) - Bei Drücken von F9 passieren drei Schritte: Zunächst wird der Compiler aufgerufen, der *.cpp und *.h Dateien auf ihre Syntax prüft und *.o Dateien erzeugt. Anschließend erzeugt der Linker das ausführbare Programm. Als drittes wird dieses Programm gestartet. CAU 2-24

Das Programm Bloodshed Dev-C++ Hinweis: Legen Sie für jedes Programm ein neues Verzeichnis und ein neues Projekt an. CAU 2-25

Ein zweites C++ Programm /* Das zweite Programm: Implizite Typumwandlungen */ #include <iostream> int main(void) { int a=4; double b = 8; int c= b; double d; Geben Sie wiederum das Programm ein und führen Sie es aus. Überlegen Sie vorher, welche Ausgabe Sie erwarten! Können Sie sich das Ergebnis erklären? } cout << a*b/c << endl; cout << a/c*b << endl; cout << a/b*c << endl; b=5.6; cout << b/a << endl; d=b/a; cout << d << endl; c=b/a; cout << c << endl; Erweitern Sie das Programm um die folgenden Zeilen. Welche Ausgabe erwarten Sie? i=9; c = i / 4; cout << c << endl; c = i % 4; cout << c << endl; CAU 2-26