Bitte warten
Bitte installieren Sie den Flash Player, wenn kein E-Book erscheint.
Autor: Heiko Dierstein
Fach: Informatik - Programmierung
Details
Tags: Einführung, Progammiersprache
Jahr: 1998
Seiten: 11
Note: 2
Sprache: Deutsch
Dateigröße: 149 KB
ISBN (E-Book): 978-3-640-05359-9
Volltext (computergeneriert)
Einführung
in die
Programmiersprache
C
Studienarbeit im Fachbereich GIS, Studiengang
Praktische Informatik, an der Hochschule für
Technik und Wirtschaft des Saarlandes WS 98/99.
Bearbeiter: Heiko Dierstein
Studienfach: Arbeitssystematik
2
Gliederung
1. Einleitung
S.
3
2. Beispielprogramm
I
S.
3-4
3. Grundstruktur
S.
4
3.1 Kommentare
S.
4
3.2 Preprozessoranweisungen
S.
5
3.3 Die
main-Funktion
S.
5
3.4 Variablenvereinbarung S.
5-6
3.5 Zeichen
ausgeben S.
6
3.6 Variablen
einlesen
S.
6
3.7 Variablen
ausgeben
S.
6
3.8 Variablen-Übersicht
S.
6-7
3.9 Rechenoperatoren S.
7
4. Kontrollstrukturen
S.
7
4.1 Sequenz
S.
7
4.2 if-Anweisungen
S.
7
4.3 Vergleichsoperatoren
S.
8
4.3.1 Relations- und Gleichheitsoperatoren
S. 8
4.3.2 logische
Verknüpfungen
S.
8
4.4 Schleifen
S. 8
4.4.1 for-Schleife
S.
9
4.4.2 while- und do-while-Schleife
S. 9
5. Beispielprogramm
II
S.
9-10
6. Funktionen
S.
11
7. Literatur S.
11
3
1 Einleitung
C ist eine Programmiersprache für die verschiedensten Anwen-dungen. Die
Entwickler sind Brian W. Kernighan und Dennis M. Ritchie, doch Grundlage
dieser Sprache war BCPL, eine zur heu- tigen Zeit noch "primitive"
Programmiersprache. C wurde ur-sprünglich für das UNIX-Betriebssystem
geschrieben, das selbst wiederum größtenteils aus C-Programmen besteht.
Dies heißt jedoch nicht, daß C von bestimmten Betriebssystemen abhängig
ist. C eignet sich besonders gut zur Implementierung von
betriebssystemnahen Programmen, da die Sprache allgemein formuliert ist und
sich an der Maschinensprache orientiert.
Heute wird viel kommerzielle Software auf UNIX-Betriebssystemen in C
entwickelt, somit wird es leicht portable Programme zu schreiben, die ohne,
bzw. mit leichten Änderungen auf den ver-schiedenen Systemen laufen, z. B.
Textverarbeitung oder Daten-banken. Diese Kompatibilität ist sicherlich der
Hauptgrund für den Erfolg und die große Verbreitung dieser
Programmiersprache.
Im folgenden werden Grundaufbau und einige wichtige C-Befehls-strukturen
anhand von einigen Beipielen und Beispielprogrammen gezeigt. Kenntnisse im
Umgang mit Editoren (z. B. "emacs") und Compilern (z. B. Gnu-C-Compiler)
sind Voraussetzung. Am Ende dieser Einführung wird es Ihnen möglich sein
kleine C-Programme selbst zu schreiben.
Am Besten läßt sich eine Programmiersprache erklären, wenn man Beispiele
zeigt und dieses anschließend beschreibt. Dieses Pro-gramm enthält
Zeilennummern, dies dient nur der besseren Veranschaulichung und Erklärung
der einzelnen Befehle; sie sind beim Eingeben mit einen Editor zu
vernachlässigen.
2 Beispielprogramm I
1 /* erstes C-Programm
2
3 Programm addiert 2 einzugebende Zahlen und gibt
4 das Ergebnis auf den Bildschirm aus */
5
6 #include <stdio.h>
7
8 void main(void)
9 {
10 /* Variablen vereinbaren */
11
12 int summe, a, b;
13
14 /* Einleseteil */
15
16 printf("\n\nBitte 1. Zahl eingeben: ");
4
17 scanf ("%d", &a);
18 printf("\n\nBitte 2. Zahl eingeben: ");
19 scanf ("%d", &b);
20
21 /* Berechnung */
22
23 summe = a + b;
24
25 /* Ausgabeteil */
26
27 printf("\n\nDie Summe lautet: %d", summe);
28 }
3 Grundstruktur
3.1 Kommentare
Es ist wichtig seine Quell-Texte mit Kommentaren auszustatten, damit man
seine Programme auch zu einem späteren Zeitpunkt noch nachvollziehen kann.
[Zeiner] schreibt auf S. 26 dazu folgendes: "In C ist die Gefahr groß,
schlecht lesbaren Code zu schreiben...Jeder erfahrene Programmierer weiß,
wie schwer man nach längerer Zeit auch selber geschriebene Programme lesen
kann, wenn der Programmcode keine Kommentare enthält. Es lohnt sich,
Programme von Beginn an sauber zu kommentieren".
Dies scheint zunächst bei kleineren Programmen banal, weil der Umfang noch
überschaubar ist, doch bei größeren Projekten mit mehreren 10.000 Zeilen
Quellcode ist dies zwingend notwendig.
Kommentare sollten vor und während des eigentlichen Programmes (als inline-
Dokumentation), wie im obigen Beispiel gezeigt, verwendet werden. Dies
geschieht in C mit Slash (/) und Stern (*):
/*
Kommentar */ .
3.2 Preprozessoranweisungen
Vor dem Übersetzen eines Programmes in Maschinensprache wird durch den
Preprozessoranweisungsbefehl #include die Datei "stdio.h" aufgerufen, in
ihr befinden viele Ein-/Ausgabefunk- tionen (Standardbefehle), die man zur
Ausführung eines jeden C-Programmes braucht. Es gibt selbstverständlich
auch andere Bibliotheken, z. B. für Mathematikfunktionen ("math.h"). [vgl.
Zeiner, S. 3 oder Kernighan /Ritchie S. 155].
3.3 Die main-Funktion
In Zeile 8 beginnt nun das eigentliche Hauptprogramm. Mit dem Befehl void
main(void) wird eine entsprechende Funktion aufge-rufen, die natürlich auch
in der Standardbibliothek stdio.h enthalten ist. Sie besteht aus einem Kopf
(header) und einem Rumpf der in {} eingeschlossen ist. Im Rumpf stehen die
Verein-barungen der Variablen und die eigentlichen Anweisungen. Ohne die
main-Funktion läuft kein C-Programm.
5
3.4 Variablenvereinbarung
In Zeile 12 werden die notwendigen Variablen vereinbart. Man sollte schon
im voraus genau festlegen, wieviele und welche (Typ) Variablen zur
Implementierung erforderlich sind. In die- sem Programm handelt es sich um
3 Integervariablen. Da sie alle den gleichen Typ haben, kann man sie in
einer Zeile, nur durch Komma getrennt, schreiben. Den Variablentyp, in
diesem Fall int, kommt an den Zeilenanfang und somit werden 3 Speicher-
plätze für Integerwerte reserviert [Zeiner S. 28]. Wichtige Datentypen:
int
Ganzzahlen ohne Nachkommastellen
float Gleitpunktzahlen,
mit Nachkommastellen
double
dto. float, hat jedoch doppelten Speicherplatz
long double dto. double, nur noch genauer
char
lesbare Zeichen und Sonderzeichen
Am Ende einer Befehlszeile steht ein Strichpunkt, der Compiler erkennt
daran, daß nun ein neuer Befehl folgt.
3.5 Zeichen ausgeben
Dies geschieht mit der printf-Funktion (Zeile 16, 18). Der aus- zugebende
Text steht in Klammern und in Hochkommata, z. B. printf("\ntext"); die
Zeichen "\n" bewirken einen Zeilenvor-schub vor Beginn des eigentlichen
Textes, sie können auch nach-gestellt sein.
3.6 Variablen einlesen
Die Funktion scanf liest Zahlen (oder auch Zeichen), die über die Tastatur
eingegeben werden, ein. Aber man muß darauf achten, daß das Format stimmt.
Wie im 1. Beispielprogramm (Zeile 17+19) wird das Format noch-mals zuerst
angegeben
%d
(Integer) und in Hochkommata einge-schlossen, dann folgt der
Platzhalter auf den die einzugebende Zahl gespeichert werden soll
&a
, beide
werden durch Komma ge-trennt und stehen gemeinsam in Klammern.
3.7 Variablen ausgeben
Ähnlich, wie bei der scanf-Funktion muß hier auch wieder zu- nächst das
Format angegeben werden und die Variable steht durch Komma getrennt.
6
3.8 Variablen-Übersicht
Vereinbarte Einlesen der
Ausgabe der
Variable Variable
Variable
int a;
-> scanf("%d", &a); -> printf("%d", a);
float b;
-> scanf("%f", &b); -> printf("%f", b);
double c; -> scanf("%lf", &c); -> printf("%f", c);
long double d; -> scanf("%Lf", &d); -> printf("%Lf", d);
3.9 Rechenoperatoren
In Zeile 23 werden die Zahlen, die als
a
und
b
zuvor eingege-ben wurden
addiert und deren Ergebnis unter
summe
im RAM abge-speichert.
In C gibt es auch die vier Grundrechenarten + - * / und der Operator %,
der den Rest ganzzahliger Division liefert, außer-dem gibt es noch das
negative Vorzeichen, jedoch kein positives. Natürlich ist auch Klammern
erlaubt, diese haben den höchsten Stellenwert bzw. sie gelten vorrangig.
[Kernighan /Ritchie S. 41].
4 Kontrollstrukturen
4.1 Sequenz
Die Anweisungen einer Sequenz werden nacheinander in der ge- wünschten
Reihenfolge geschrieben, wie das im ersten Beispiel-programm geschehen ist.
Dies ist aber in der Regel nicht so.
4.2 if - Anweisungen
if-else-Anweisungen werden bei Entscheidungen verwendet. Es gilt formal
folgende Syntax:
if (Bedingung erfüllt) {
dann Anweisung 1 }
else {
sonst führe Anweisung 2 aus }
Trifft die erste Bedingung zu, wird die dazu gehörende Bedingung
ausgeführt, wenn nicht, wird die else-Anweisung ausgeführt. Der else-Zweig
kann auch weggelassen werden [Zeiner S. 37, 38].
7
4.3 Vergleichsoperatoren
In if-Anweisungen werden häufig Zahlen oder auch Zeichen ver-
glichen. Dies geschieht mit Operatoren [Chirlian S. 73 - 76].
4.3.1 Relations- und Gleichheitsoperatoren
> größer als
< kleiner als
>= größer oder gleich
<= kleiner oder gleich
== gleich
!= ungleich
4.3.2 Logische Verknüpfungen
&& und
|| oder
z. B.:
if (a <= b && c > d && e == f)
Bei Operatoren gibt es bestimmte Vorrangregeln:
>
>=
<
<= haben Vorrang vor
!= ==
Operator Auswertung (Priorität):
Hierzu gibt es mehrere Regeln, wie die Reihenfolge der Ausführ-ung von
Operatoren ist. Man muß sich entweder alle Regeln merken oder man entgeht
diesem Problem und setzt Klammern, zum Verdeutlichen der Priorität
[Kernighan/Ritchie S. 54 - 56].
4.4 Schleifen
Schleifen werden immer dann benötigt, wenn eine Anweisung mehrmals zu
wiederholen ist, denn es wäre sehr zeitraubend, jede Anweisungssequenz von
Hand einzugeben. Außerdem kann die Anzahl der Wiederholungen von einem
berechneten Wert bzw. von einer, vom Benutzer eingegebenen Zahl, abhängig
sein. [Zeiner S. 38 - 43]
4.4.1 for-Schleife
for (i=0 ; i<10 ; i=i+1)
{
Anweisungsblock;
}
8
Angenommen die Variablen
i
wurde vorher als
int
vereinbart. Im ersten
Schritt ist
i
=0, dann wird der Anweisungsblock ausge-führt und am Ende des
Blocks wird zu
i
noch 1 addiert (i=i+1), somit hat
i
nun den Wert 1. Dies
geschieht solange bis
i
im 10. Wiederholschritt den Wert 9 hat und bekommt
nun nach Durchführ-ung des Anweisungsblocks den Wert 10 zugewiesen. Bei der
Über-prüfung ob
i
< 10 hält das Kriterium nicht mehr stand, weil 10 < 10
falsch ist und somit wird die Schleife beendet; der Anwei-sungsblock wird
nicht mehr durchlaufen.
4.4.2 while- und do-while-Schleife
Die while-Schleife kann äquivalent zur for-Schleife benutzt werden, z. B.:
(1) while ( i < 10 ) (2) do {
{
Anweisungsblock; i=i+1;
Anweisungsblock; i=i+1;
} while ( i < 10);
}
Das Beispiel unter (1) entspricht obiger for-Schleife.
Unter (2) wird zuerst der Anweisungsblock ausgeführt und danach geschieht
erst die Überprüfung. Schleifen können mit dem
break-
Befehl abgebrochen
werden, dies ist manchmal auch notwendig.
Selbstverständlich steht der "Anweisungsblock" synchron für eine Reihe von
C-Befehlen.
5 Beispielprogramm II
/*
Programm berechnet die Fakultät einer Zahl
*/
# include <stdio.h>
double fakultaet ( double );
/* Funktion fakultaet gibt nur double-Werte zurück */
void main (void)
{
double n, nfakultaet;
do {
printf("\n\nBitte geben Sie einen Wert fuer n ein: ");
scanf ("%lf", &n);
/* Wert von n in Fkt. geben und Fakultät berechnen */
nfakultaet = fakultaet ( n );
if (nfakultaet != -1)
9
{
printf("\n\nDie Fakultaet fuer %.0f ergibt: %.0f\n\n",
n, nfakultaet);
}
else
{
printf ("\n\nDie Fakultaet fuer %.0f ist nicht
definiert!",n);
}
} while ( nfakultaet = -1 );
}
/* Fkt. fuer die Berechnung der Fakultaet */
double fakultaet ( double n )
{
int i; /* Diese Variablen gelten nur in der */
double fak = 1; /* Funktion! */
if (n >= 0)
{
for (i = 1; i <= n; i++)
{
fak = fak * i; /* fak wird n-mal mit i mulipliziert*/
}
}
else
{
fak = -1; /* Fehlercode - wird fak zugewiesen bei n < 0 */
}
return fak; /* fak-Wert wird an fakultaet(n) zurückgegeben */
}
6 Funktionen
Funktionen sind ein probates Mittel um Programme zu struktur-ieren, vor
allem, wenn bestimmte Teilbereiche eines Programms immer wieder benötigt
werden. [Kernighan/Ritchie] schreibt auf S. 26 zur Problematik folgendes:
"Eine Funktion ist eine beque- me Möglichkeit, eine Berechnung
einzukapseln...Funktionen sind wirklich die einzige Art und Weise, um mit
der möglichen Kom-plexität großer Programme fertig zu werden".
Die Berechnung der Fakultät geschieht hier in der Funktion
double fakultaet
(double n)
[Zeiner S. 163 - 169]. Nur
n
wird hier in die Funktion
übergeben, es gibt an wie oft die Schleife durchlaufen werden soll. Am Ende
der Iteration gibt die Funk-tion einen Wert
fak
zurück, der im
Hauptprogramm ausgegeben wird, wenn die entsprechende Bedingung erfüllt
ist. Ist
n
negativ gibt die Funktion -1 zurück. Die äußere do-while-
Schleife ist eigentlich unnötig, sie läuft solange, bis der Benutzer für
n
einen positiven Wert eingegeben hat.
10
7 Literatur
Kernighan, Brian W. / Ritchie Dennis M.:
Programmieren in C mit
dem C reference manual in deutscher Sprache. München/Wien
1983.
Zeiner, Karlheinz: Programmieren lernen mit C, 2. verbesserte
Auflage, München/Wien 1996.
Chirlian, Paul M./: Der Einstieg in C. Haar bei München 1984.
Kommentare
Dieser Text kann über folgende URL aufgerufen und zitiert werden: