Einführung in die Progammiersprache C close

Bitte warten

Bitte installieren Sie den Flash Player, wenn kein E-Book erscheint.

Einführung in die Progammiersprache C

Autor: Heiko Dierstein
Fach: Informatik - Programmierung

Lesen Sie im E-Book



Details

Institut: Fachhochschule
Tags: Einführung, Progammiersprache
Kategorie: Hausarbeit
Jahr: 1998
Seiten: 11
Note: 2
Sprache: Deutsch
Dateigröße: 149 KB
Archivnummer: V107084
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:

http://www.grin.com/e-book/107084/