Академический Документы
Профессиональный Документы
Культура Документы
), Grundlagen
Einfhrung in das
Programmieren (fr Ingenieure)
Programmieren in C
Chr. Vetter
bersicht
bersicht
Struktogramm
Magnetplatte
g
Algorithmus
Editor
ProgrammDesigner(in)
Fachaufgabe
ProgrammNutzer(in)
Entwicklungsumgebung
bersetzungsProgamm
C++-Compiler
eigenes
Progamm
hallo
Programmtext
hallo.cpp
Ausfhrbares
Programm
hallo exe
hallo.exe
daten.txt
daten.bin
Der C-Zeichensatz:
1. Alphanumerische Zeichen:
26 Grobuchstaben, 26 Kleinbuchstaben, Unterstrich
(lateinisches Alphabet)
--- Gro
Gro- und Kleinschreibung werden unterschieden! --10 Ziffern 0 1 2 3 4 5 6 7 8 9
2. Sonderzeichen: ()[]{}<>+-*/%^~&|=!?#\,.;:'"
3. Steuerzeichen:
Leerzeichen(SP), Zeilenende-Zeichen(CR,LF), horizontaler
Tabulator(HT), vertikaler Tabulator(VT), Seitenvorschub(FF)
4. Zeichen, die leicht verwechselt werden:
- Ziffer 0 und Buchstabe O
- Ziffer 1 und Buchstaben l, I,J
5. Format von C Programmen: formatfrei
(es gibt aber bewhrte Schreibkonventionen, die das Lesen
von Programmen fr Menschen erheblich erleichtern!)
ASCII-Zeichensatz:
Formatfreiheit Lesbarkeit
#include <iostream>
using namespace std;int main(){cout<<"Hallo, mein erstes Programm!"<<endl;system("PAUSE");return(0);}
#include <iostream>
using namespace std;
int main()
{
cout << "Hallo, mein erstes Programm!"
<< endl;
dl
system("PAUSE");
return(0);
}
Kommentare im Programmtext
Ein Programmtext kann nach Belieben des Entwicklers mit
Kommentaren ausgestattet werden. Hierbei gilt es, einen
goldenen Mittelweg zu finden nach der Regel "So viel wie
ntig und so wenig wie mglich". Ein Kommentar soll auch
nach langer Zeit helfen, das Programm schnell zu verstehen.
int ap; // Anzahl Punkte (Rest der Zeile)
/* Kommentar ber
mehrere
Zeilen.
*/
Rechenprogramm (Einfhrungsbeispiel)
#include <iostream>
using namespace std;
int main()
{
int anzahl, anz_a=12, anz_b=5;
anzahl = anz_a + anz_b;
cout << "Die Anzahl ist " << anzahl << "."
<< endl;
dl
system("PAUSE"); // Warten auf Taste
return(0);
}
Rechenprogramm (Einfhrungsbeispiel)
#include <iostream>
using namespace std;
int main()
{
int anzahl, anz_a=12, anz_b=5;
anzahl = anz_a + anz_b;
cout << "Die Anzahl ist " << anzahl << "."
<< endl;
dl
system("PAUSE"); // Warten auf Taste
return(0);
}
( Tabelle),
) die nicht fr
f
eigene Objektbezeichnungen verwendet werden drfen.
Beispiele:
Reservierte Schlsselwrter
auto
double
int
struct
break
else
long
switch
case
enum
register
typedef
char
extern
return
union
const
float
short
unsigned
continue
for
signed
void
default
goto
sizeof
volatile
do
if
static
while
Elementare Datentypen
Datentyp
stellt dar
char
int
float
Fliekommazahl in
einfacher
Genauigkeit
Fliekommazahl in
doppelter
Genauigkeit
double
Zustze
signed
short, long,
long long,
unsigned,
long
Bereich, Genauigkeit
char
short int
int
float
{0.0,
{0
0 (1.175494351e-38
(1 175494351e 38 .. 3.402823466e+38)}
3 402823466e+38)}
bei 7 bis 8 Dezimalstellen Genauigkeit
double
{0.0, (2.2250738585072014e-308 ..
1.7976931348623158e+308)}
bei 15 bis 16 Dezimalstellen Genauigkeit
Speicherbedarf
in Bytes
1
2
4
4
8
4
8
Sammelbegriff
GanzzahlDatentypen
FliekommaDatentypen
Speicherbedarf ermitteln
Ein Datenobjekt beansprucht entsprechend seinem Typ
einen bestimmten Speicherplatz. Der minimale Speicherb i h iistt ein
bereich
i B
Byte
t (8 Bit)
Bit). D
Der S
Speicherbereich,
i h b i h d
den ein
i
bestimmter Typ bentigt, kann von Compiler zu Compiler
unterschiedlich sein.
Um den bentigten Speicherbereich zu ermitteln, kann man
die Funktion sizeof() verwenden.
Ergebnis in Byte
Schreibweise in C
size = sizeof(int);
size = sizeof(float);
Konstanten (I)
031
25
0x19
00011001
Strg-Y
EM
Jede Konstante hat einen Datentyp.
Konstanten vom Ganzzahlen-Datentyp: Ziffernfolge ohne
p
Zahlensystem
y
als Lese- und SchreibschnittDezimalpunkt.
stelle: dezimal, oktal (0) und hexadezimal (0x)
Beispiel: 25(dezimal) = 031(oktal) = 0x19(hexadezimal)
Zeichenkonstanten (char-Konstanten): Darstellung als
ganze Zahl gem ASCII-Zeichensatz.
Beispiele: 'A', 'B', 'C', '_', 'x', 'y', 'z', '3', '7', , '+', '-', '=', '\n', '\0'
10
0110 0001
Konstanten (II)
0110 0010
0110 0011
0110 0100
0000 0000
Zeichenkettenkonstante:
eine Zeichenkette (string) mit n Zeichen bentigt
Speicherbereich der Lnge n+1 wegen des
abschlieenden Nullzeichens ('\0').
Beispiel: Zeichenkette "abcd"
" b d" wird abgelegt
als 'a' 'b' 'c' 'd' '\0'. Die Lnge
dieser Zeichenkette betrgt 4. Der Speicherbereich ist 5 Bytes gro.
11
Zuweisung
Es ist wichtig, zu verstehen, dass bei so genannter prozeduraler Programmierung eine Zuweisung als Anweisung oder
Befehl formuliert wird
wird. Es handelt sich nicht um eine
Gleichung im Sinne der Mathematik!
Der algebraische Ausdruck der rechten Seite wird
ausgewertet, und das Ergebnis daraus der Variablen auf der
linken Seite zugewiesen.
Arithmetische Operationen
Ergebnis Operand Operator Operand
Kraft Masse * Beschleunigung
Die Sprache C sieht die blichen arithmetischen Operationen
vor Als Operanden kommen ganze Zahlen oder Fliekommavor.
zahlen in Frage. Als Operatoren stehen + - * /, wie sie allgemein bekannt sind, zur Verfgung.
Allerdings hngt die Funktionsweise der Division ( / ) von den
Typen der Operanden, die der Operator verknpft, ab. Ist
mindestens einer der beiden Operanden
p
vom Fliekommatyp,
yp,
so wird eine Fliekommadivision durchgefhrt.
Beispiel:
7 / 2.0
ergibt
3.5
Sind jedoch beide Operanden vom Ganzzahltyp, wird eine
Ganzzahldivision durchgefhrt!
Beispiel:
7 / 2
ergibt
3
12
Weitere Berechnungen
Weitere Rechenoperationen werden mit Funktionen aus der
Mathematik-Bibliothek durchgefhrt. Diese enthlt neben der
Exponentiation mit pow(x,y) z.B. auch eine ganze Reihe von
ti
trigonometrischen
ti h F
Funktionen
kti
((sin(), cos(), tan(),
atan() usw.). Um die Leistungen einer Bibliothek in
Anspruch nehmen zu knnen, muss diese mittels Prprozessordirektive bekannt gemacht werden. Im Beispiel der
System-Mathematik-Bibliothek mit:
#include <math.h>
Mit #include wird formal nur die angegebene Datei eingelesen. Diese enthlt fr den Compiler notwendige Informationen. Will man eine eigene so genannte Header-Datei
aus dem Projektverzeichnis einlesen, so geschieht dies mit
#include "mybib.h"
13
Typumwandlungen
Es gibt zwei sprachimplizite automatische Typumwandlungen
1. bei Verknpfungen zweier typunterschiedlicher
Operanden in algebraischen Ausdrcken
2. bei der Zuweisung auf eine Ergebnisvariable
Die Reihenfolge ist dabei zu beachten:
erst Auswertung des algebraischen Ausdrucks,
dann Anpassung an Ergebnistyp
Achtung!
Bei der Anpassung an den Ergebnistyp kann durchaus
wieder ein niedrigerer Typ entstehen und dabei das
Ergebnis durch Abschneiden verndert werden!
14
Operand 1
Operator
+, -, *, /
int
float
double
int
int
float
double
float
float
float
double
double
double
double
double
Ergebnistyp
15
Beispiele zu Typumwandlungen
Mit folgenden Deklarationen und Initialisierungen sind die
Beispiele nachzuvollziehen:
int i=2, j, k=7;
float f=2.0, h;
Ergebnistyp
und -wert
C-Anweisung
int 3
j = k/i;
int 3
int 3
j = k/f;
float 3.5
float 3.5
h = k/f;
float 3.5
float 3.0
h = k/i;
int 3
float 3.0
h = (float) (k/i);
float 3.0
int 3
j = ((float) k)/i;
float 3.5
16
17
18
Blcke in C
Eine Sequenz von Anweisungen wird als Block aufgefasst und
in ein Paar von geschweiften Klammern {} eingeschlossen.
Auch der Rumpf des Hauptprogramms main() ist ein Block.
Es muss zu einer ffnenden Klammer { immer eine zugehrige
schlieende Klammer } folgen. Blcke drfen beliebig ineinander geschachtelt werden, sie drfen sich aber nicht
berschneiden. Genau deshalb eignen sich Struktogramme
ideal als Vorbereitung von Programmen in blockorientierten
Sprachen. Regelgerechte Struktogrammentwrfe vermeiden
schwere Strukturfehler beim Programmieren in einer konkreten
Sprache. Die im Programmtext oftmals verwirrend erscheinende Struktur von Blcken kann meist schnell anhand guter
Struktogrammdokumente aufgeklrt werden.
19