Vorlesung 1.Tag

Download Report

Transcript Vorlesung 1.Tag

Einführung in die
Programmiersprache C
1.Tag
Institut für Mathematische
Optimierung Technische Universität Braunschweig
Wie schreibt man ein Programm in C?
• In Texteditor Quellcode schreiben
• Benutzung eines Compilers (hier gcc-Compiler), um
daraus ein Programm zu erstellen (kompilieren)
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Quellcode schreiben
• Zuerst einmal öffnet man einen Texteditor (emacs,
kwrite, kate,…) über folgenden Aufruf in der Shell
(Terminal):
emacs programmname.c
• In den Texteditor schreibt man nun den Quellcode
• Ist man damit fertig, so speichert man diesen ab
(durch den Aufruf emacs programmname ist der
Quellcode nun unter programmname.c gespeichert)
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Kompilieren
• Nun kann man, in dem Verzeichnis, in dem die Datei
programmname.c gespeichert wurde, unter
folgendem Befehl, ein Programm erstellen:
gcc –Wall –o name programmname.c
• Hierbei steht gcc für den verwendeten Compiler
• Durch –Wall werden alle Warnungen durch den
Compiler ausgegeben
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Kompilieren
• -o name bewirkt, dass das erzeugte Programm den
Namen name trägt
• Durch den Befehl:
gcc programmname.c
wird das Programm ebenfalls erzeugt, in diesem Fall trägt
es aber (standardtisiert) den Namen a.out (außerdem
werden keine Warnungen durch den Compiler
ausgegeben)
• Mit dem Befehl:
./name
(bzw.: ./a.out) wird das Programm dann gestartet
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Aufbau einer Funktion
• rückgabetyp funktionsname( Parameterliste )
{
Anweisungen;
}
• Der Rückgabetyp gibt den Datentyp (wird gleich
erläutert) an, der von der Funktion zurückgegeben
werden soll
• Mit ihrem Namen kann die Funktion aufgerufen werden
• Die Parameterliste gibt die Parameter an, die der
Funktion übergeben werden müssen
• Die von den geschweiften Klammern umgebenen
Anweisungen werden jeweils mit einem ; abgeschlossen.
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Die main-Funktion
int main(void)
{
Anweisungen;
return 0;
}
• Die main-Funktion ist die Hauptfunktion eines jeden
Programms. Sie gibt mittels return 0; einen IntegerWert zurück.
• Der vorgestellten main-Funktion werden keine
Parameter übergeben, deswegen steht in der
Parameterliste void (leer)
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Schlüsselwörter in C (nach ANSI-C 89)
auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Datentypen
Datentyp
Bits
Verwendung für
char
8
Zeichen (auch Zahlen)
int
16-32
Ganze Zahlen
float
32
Gleitkommazahlen (einfache Genauigkeit)
double
64
Gleitkommazahlen (doppelte Genauigkeit)
-
1
Beispiel:
Binärdarstellung der Zahl -41
-41 = - 2^5 + 2^3 + 2^0
0
1
0
0
1
Darstellung mit 7 Bits
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Typenmodifizierer
• long vergrößert i.d.R. die Speicherkapazität, die für einen
Wert eines Datentyps reserviert wird. long kann nur auf int
und double angewandt werden. (ein long double hat bis zu
80 Bit)
• short verkleinert i.d.R. die Speicherkapazität, die für einen
Wert eines Datentyps reserviert wird. short wird nur auf int
angewandt. (ein short int hat nur 16 Bit)
• signed kann nur auf char und int angewandt werden. Das
erste Bit der Speicherplatzkapazität wird für das Vorzeichen
(+,-) verwendet.
• unsigned kann ebenfalls auf char und int angewendet
werden. Die entsprechenden Daten besitzen dann kein
Vorzeichen. Entsprechend größer kann dann die Zahl sein.
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Variablendeklaration
• Ein Variablenname kann aus Buchstaben (keine
Umlaute und Sonderzeichen), Ziffern und
Unterstrichen bestehen (an erster Stelle weder Ziffer
noch Unterstrich)
int zahl1;
int zahl2;
deklariert zwei Variablen zahl1 und zahl2 vom
Datentyp Integer. Ebenso möglich:
int zahl1, zahl2;
• Die Variablendeklaration erfolgt vor den eigentlichen
Anweisungen im Programm
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Initialisierung von Variablen
• Bevor Variablen im Programm benutzt werden, muss
Ihnen meistens ein Startwert zugewiesen werden
(sonst wird globalen Variablen [Erklärung später] der
Wert 0 und lokalen [Erklärung später] ein zufälliger
Wert zugewiesen):
zahl1=0;
• Eine Initialisierung ist auch schon bei der Deklaration
möglich:
int zahl1=0;
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Zuweisungsoperator
• Wie eben schon bei der Initialisierung benutzt:
zahl1=12;
• Diese Anweisung weist der Variable zahl1 den Wert
12 zu. Bei einer Zuweisung steht die Variable, der
etwas zugewiesen wird auf der linken Seite und der
zugewiesene Wert auf der rechten Seite.
Institut für Mathematische Optimierung – Technische Universität Braunschweig
In- und Dekrementoperator
int zahl1=0;
zahl1++;
Der Inkrementoperator ++ erhöht den Wert von
zahl1 um 1.
int zahl1=0;
zahl1--;
Der Dekrementoperator -- verringert den Wert von
zahl1 um 1.
Institut für Mathematische Optimierung – Technische Universität Braunschweig
In- und Dekrementoperator
Beide Operatoren gibt es als Präfix und PostfixOperator:
• Bei Präfix-Operatoren wird zunächst die Variable
geändert und dann weiterverwendet.
• Bei Postfix-Operatoren wird zunächst die Variable
verwendet und dann geändert.
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Präfix-Operator
int k = 4, var_1;
var_1 = ++k;
ist äquivalent zu:
int k = 4, var_1;
k = k + 1;
var_1 = k;
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Postfix-Operator
int k = 4, var_1;
var_1 = k++;
ist äquivalent zu
int k = 4, var_1;
var_1 = k;
k = k + 1;
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Arithmetische Operatoren
• In C gibt es folgende arithmetische Operatoren:
x+y für die Addition
x-y für die Subtraktion
x*y für die Multiplikation
x/y für die Division
x%y für den Rest bei Division
• Achtung: Bei der Division zweier Integer-Variablen ist
der Datentyp des Ergebnisses auch vom Typ Integer
und daher immer ganzzahlig! Der %-Operator ist nur
auf Integer-Variablen anwendbar.
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Kurzes Beispiel
int main(void)
{
int zahl1, zahl2=2, zahl3=3;
zahl1 = zahl2 + zahl3;
zahl2 = zahl3 * zahl1++;
return 0;
}
Welche Werte besitzen zahl1 und zahl2 am Ende?
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Typkonvertierung
Manchmal ist es im Programmablauf notwendig,
dass z.B. eine Integer-Variable in GleitkommaDarstellung benutzt wird. Damit man nicht alle
ganzzahligen Variablen als double-Variable
abspeichert, kann man eine Typkonvertierung
vornehmen.
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Typkonvertierung
int zahl1=2;
double zahl2=(double) zahl1;
Hier erhält die Variable zahl1 den Wert 2. Da die
Variable zahl2 vom Typ double ist, muss die Variable
zahl1 bei der Zuweisung konvertiert (auch: gecastet)
werden. Diese Konvertierung gilt nur an dieser Stelle.
Im weiteren Ablauf ist zahl1 wieder vom Typ Integer.
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Beispiel zur Typkonvertierung
int main(void)
{
int zahl1=3, zahl2=2;
double zahl3=0.0;
zahl3 = zahl1 / zahl2;
zahl3 = (double) zahl1 / zahl2;
zahl2 = zahl1 / 2.0;
zahl2 = zahl1 / 2.0 + 0.5;
return 0;
}
Welchen Wert besitzen zahl2 und zahl3 in den Zeilen?
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Ein- und Ausgabefunktion
Zur Ein- und Ausgabe von Daten auf dem Bildschirm
benötigt man Funktionen, die in der C-Bibliothek
stdio.h abgelegt sind. Zum Einbinden in ein
Programm benutzt man den Befehl:
#include<stdio.h>
am Anfang des Quellcodes.
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Die printf()-Funktion
Die Funktion printf() dient zum Ausgeben von Daten
auf dem Bildschirm:
printf("Hallo");
erzeugt die Ausgabe Hallo auf dem Bildschirm.
Darüber hinaus kann auch der Inhalt von Variablen
ausgegeben werden:
int zahl1=3;
printf("Variable = %d",zahl1);
erzeugt die Ausgabe Variable = 3.
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Formatierung von printf()
Bei der Ausgabe sind folgende Formatspezifikationen
zu beachten (n=Anzahl Stellen (inkl. Vorz. und Punkt),
p=Anzahl Nachkommastellen):
Datentyp
Formatspezifikation
int
%nd oder %ni
float
%n.pf
double
%n.pf
char
%c
Zeichenkette
%s
Mögliche Steuerzeichen: \n (neue Zeile) \t (tabulator)
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Die scanf()-Funktion
Die Funktion scanf() liest eine Zahl oder ein Zeichen
vom Bildschirm ein.
double zahl1;
scanf("%lf",&zahl1);
Weist der double-Variable zahl1 den eingelesen Wert
zu. %lf steht hierbei für long float.
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Formatierung von scanf()
Datentyp
Formatspezifikation
int
%d oder %i
float
%f
double
%lf
char
%c
Zeichenkette
%s
Institut für Mathematische Optimierung – Technische Universität Braunschweig
Beispiel für printf() und scanf()
#include<stdio.h>
int main(void)
{
int zahl;
char buch;
printf("Bitte Buchstaben eingeben:");
scanf("%c",&buch);
printf("Bitte Zahl eingeben:");
scanf("%d",&zahl);
printf("Ihre Eingabe war %c%d.\nSchiff versenkt!\n",buch,zahl);
return 0;
}
Institut für Mathematische Optimierung – Technische Universität Braunschweig