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

Werbung
LeMoS
Einführung in die C++
Programmierung für Ingenieure
M ATTHIAS WALTER / J ENS K LUNKER
Universität Rostock, Lehrstuhl für Modellierung und
Simulation
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
1 / 21
LeMoS
Inhaltsverzeichnis
Grundlagen
Kompilieren unter Linux
Basisstruktur eines C++ Programms
Grundlegende Begriffe
Grundstrukturen
Übungen
Rechenoperationen
Kräfteberechnung
Härtebestimmung nach Brinell
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
2 / 21
LeMoS
Inhaltsverzeichnis
Grundlagen
Kompilieren unter Linux
Basisstruktur eines C++ Programms
Grundlegende Begriffe
Grundstrukturen
Übungen
Rechenoperationen
Kräfteberechnung
Härtebestimmung nach Brinell
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
2 / 21
LeMoS
Kompilieren von C++ Programmen unter Linux
Kompilieren
user: g++ dateiname.cpp -o Programmname
Ausführen des Programms
user: ./Programmname
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
3 / 21
LeMoS
Basisstruktur eines C++ Programms
#include <Bibliotheksname>
#include "Bibliotheksname"
using namespace std;
int main()
{
....
return 0;
}
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
4 / 21
LeMoS
Begriffe
Bibliothek
Sammlung nützlicher Funktionen und Klassen
Anweisungen, zusammengefasst durch geschweifte Klammern
Block
Programm zum Übersetzen des Quellcodes in Objektcode
Compiler
Deklaration
Definition
Einführung und Bekanntmachung eines Bezeichners (z.B. Variablenname) gegenüber dem Compiler im Quellcode
Reservierung von Speicher für Bezeichner
Initialisierung Wertezuweisung an Bezeichner (Füllen der Variable)
Linker
14. November 2012
Programm, das aus kompilierten Quellcode eine ausführbare
Programmdatei erstellt.
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
5 / 21
LeMoS
Grundstrukturen
Kommentare
•
Wichtig: So häufig wie möglich verwenden, für bessere Lesbarkeit
des Quellcodes
Verwendung von Kommentaren
// <- leitet Kommentar für eine Zeile ein
/*
Die Zeichenkombination "/*" leitet einen Kommentar über
mehrere Zeilen ein wobei "*/" den Kommentar beendet
*/
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
6 / 21
LeMoS
Grundstruktur
Namensräume I
•
Namensräume erlauben es, dass unabhängig voneinander
entwickelte Quellcodes Funktionen gleichen Namens beinhalten und
verwenden dürfen
namespace test2
namespace test
{
{
int number;
int number;
int count();
int count();
}
}
....
{
sum=test::number+test2::number;
sum=test::count();
}
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
7 / 21
LeMoS
Grundstruktur
Namensräume II
•
Durch die Verwendung des Befehls "using"können Namensräume
auch benutzt werden, ohne das vor jedem Bezeichner der
Namensraum konkret genannt werden muss
•
Allerdings, bei Verwendung von mehr als einem Namensraum
weniger sinnvoll
Verwendung des Befehls using
{
}
using namespace test;
sum=number;
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
8 / 21
LeMoS
Grundstruktur
Datentypen
Datentypen
short int
unsigned short int
int
long int
unsigned int
float
double
long double
char
signed char
unsigned char
string
14. November 2012
Wertebereich
-32768 bis 32768
0 bis 65535
-2147483647 bis 2147483647
-2147483647 bis 2147483647
0 bis 4294967295
1.2 · 10−38 bis 3.2 · 1038
2.2 · 10−308 bis 1.7 · 10308
3.3 · 10−4932 bis 1.7 · 104932
-128 bis 128
-128 bis 128
0 bis 255
variabel
Speicherbedarf
2 Byte
2 Byte
4 Byte
4 Byte
4 Byte
4 Byte
8 Byte
10 Byte
1 Byte
1 Byte
1 Byte
dynamisch
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
9 / 21
LeMoS
Grundstruktur
Variablen
•
•
Aufbau: Datentyp Bezeichner = Wert
Zugriff: über Name oder Adresse (Pointerarithmetik)
Deklaration und Initialisierung einer/mehrerer Variablen
{
}
int number;
//Definition einer und
int number1, number2, number3; //mehrerer Variablen
int* pNumber;
//Deklaration
number = 1;
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
10 / 21
LeMoS
Grundstruktur
Konstanten
•
•
Aufbau: const + Name + Wert
Besonderheiten:
1.) müssen bei Definition gleichzeitig initialisiert werden
2.) Wert kann nicht verändert werden
3.) Notation: meist mit Großbruchstaben bezeichnet
Deklaration und Initialisierung einer Konstante
{
}
const int number = 100;
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
11 / 21
LeMoS
Grundstruktur
Operatoren - Übersicht
•
Operatoren beschreiben Operationen, die auf den jeweiligen
Datentypen definiert sind.
•
Besondere Operator ist der Zuweisungsoperator “=”, mit dem ein
Wert einer Variablen zugewiesen wird.
Operator
+
*
/
%
++
-14. November 2012
mathematische Bezeichnung
Addition
Subtraktion
Multiplikation
Division
modulo Division
Inkrement (Erhöhung) um 1
Dekrement (Verminderung) um 1
Datentyp
reelle Zahlen
reelle Zahlen
reelle Zahlen
reelle Zahlen
ganze Zahlen
ganze Zahlen
ganze Zahlen
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
12 / 21
LeMoS
Grundstruktur
Operatoren - Verwendung
Verwendung von Operatoren
a
b
c
d
f
g
=
=
=
=
=
=
a
b
c
d
f
g
+
*
/
+
-
14. November 2012
5;
5;
5;
5;
1;
1;
//
//
//
//
//
//
verkürzt
verkürzt
verkürzt
verkürzt
verkürzt
verkürzt
a +=
b -=
c *=
d /=
f++;
g--;
5;
5;
5;
5;
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
13 / 21
LeMoS
Grundstruktur
Operatoren - Besonderheiten
Besonderheit beim Inkrement und Dekrement: Präfix/Postfix
int x=10, y=15;
y
y
y
y
=
=
=
=
++x;
x++;
--x;
x++;
14. November 2012
//
//
//
//
Präfix liefert y = 11, x = 11
Postfix liefert y = 10, x = 11
Präfix liefert y = 9, x = 9
Postfix liefert y = 10, x = 9
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
14 / 21
LeMoS
Grundstruktur
Operatoren - Vergleichsoperatoren
Operator
==
!=
<=
>=
<
>
mathematische Bezeichnung
Addition
Subtraktion
Multiplikation
Division
modulo Division
Inkrement (Erhöhung) um 1
Verwendung von Vergleichsoperatoren
5==10 //falsch
22.3>3 //richtig
22.3<3 //falsch ...
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
15 / 21
LeMoS
Grundstruktur
Operatoren - logische Operatoren
Operator
&&
||
!
mathematische Bezeichnung
logisches UND
logisches ODER
negation bzw. Verneinung
Verwendung von logischen Operatoren
(5==10) && (13.3 == 13.3)
(5==10) || (13.3 == 13.3)
14. November 2012
//falsch
//richtig
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
16 / 21
LeMoS
Grundstruktur
Standard Eingabe und Ausgabe
•
Eingabe: cin / Ausgabe: cout (aus dem Namensraum std)
Ein- und Ausgabe
int number1=100;
int number2=0;
std::cout << "Text" << std::endl; // Ausgabe von Text
std::cout << number1 << std::endl; // Ausgabe Wert einer Variable
std::cout << "Text" << number1<<std::endl; // verknüpfte Ausgabe
std::cin >> number2; // Eingabe einer ganzzahligen Zahl
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
17 / 21
LeMoS
Übungen
1.) Schreibe ein Programm, welches die folgenden Rechenoperationen
berehnet und das Ergebnis ausgibt
a) double x = int a + int b
b) double x = double a + double b
c) double x = int a+ double b
d) double x =
double a
double b
e) double x =
int a
double b
f) double x =
double a
int b
g) string x = String1 + String2
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
18 / 21
LeMoS
Übungen
2.) Welches Ergebnis ist zu erwarten, wenn in 1.b) die Ergebnisvariable
“x” als int (Integer) deklariert wird.
Hinweis: Welche Genauigkeit kann mit dieser Rechenoperation dann
noch erreicht werden?
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
19 / 21
LeMoS
Übungen
3.) Kräfteberechnung
Gegeben ist die in der Abbildung dargestellte Kräfteverteilung. Erstelle ein Programm,
in dem die Kräfte und die jeweiligen Hebelarme (bezüglich Punkt O) vom Benutzer
y
eingegeben werden können.
1.5m
F~ =
r
P
~
=1 F
F2=100N
n
i
i
1m
~ |=
|F
qP
M =
P
r
i
=x ,y ,z
F1=300N
F~ 2
F3=250N
ri
1m
r
~
=1 a · F
n
i
14. November 2012
i
i
O
2m
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
x
20 / 21
LeMoS
Übungen
4.) Härtebestimmung nach Brinell
a) Berechne die Eindringtiefe h der Hartmetallkugel unter Angabe des
Kugelradius r sowie des Eindruckradius x .
b) Die Brinellhärte ist definiert als das Verhältnis von Prüfkraft zur
Eindruckoberfläche und kann mit folgender Formel direkt berechnet werden:
0.102
√·2 F2 2 ,
HBW =
D (D − D −d
)
r
h
π
wobei F ist die Kraft, D = 2 r der Kugeldurchmesser und d = 2 x der
mittlere Eindruckdurchmesser.
Ergänze das Programm Programm um diese Rechnung.
Hinweis: Verwende den Satz des Pythagoras und stelle
die Formel nach h um. Überlege welche der Lösungen
sinnvoll ist.
x
14. November 2012
c 2012 UNIVERSITÄT ROSTOCK | FACULTY OF MECHANICAL ENGINEERING AND MARINE TECHNOLOGY
21 / 21
Herunterladen