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
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
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 Speicherplä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); -> scanf(”%lf”, &c); -> printf(”%f”, c); double 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 verglichen. 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
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)
} else
}
} 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.
Arbeit zitieren:
Heiko Dierstein, 1998, Einführung in die Progammiersprache C, München, GRIN Verlag GmbH
Dieser Text kann über folgende URL aufgerufen und zitiert werden:
Einbetten
DOI
Formatvorlage (Microsoft Word) für eine Diplomarbeit, Masterarbeit, Ha...
Für MS Word 2003 - Update 2010
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 25 Seiten
Formatvorlage (OpenOffice) für eine Diplomarbeit, Masterarbeit, Hausar...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 35 Seiten
Formatvorlage / Vorlage zur Erstellung einer Diplomarbeit, Bachelorarb...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 15 Seiten
Formatvorlage / Vorlage für eine Diplomarbeit / Hausarbeit
Für MS Word 2007 - dotx
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 25 Seiten
Anleitung zum Erstellen schriftlicher Arbeiten: Der Aufbau einer wisse...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 20 Seiten
Erstellen einer schriftlichen Hausarbeit
Vorlagen, Muster, Formulare, Infobroschüren
Hausarbeit, 14 Seiten
Grundtechniken wissenschaftlichen Arbeitens
Bibliografieren - Reden - Schr...
Vorlagen, Muster, Formulare, Infobroschüren
Skript, 46 Seiten
Ratgeber zur Erstellung wissenschaftlicher Arbeiten. Diplomarbeiten - ...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 39 Seiten
Heiko Dierstein hat den Text Einführung in die Progammiersprache C veröffentlicht
Heiko Dierstein hat einen neuen Text hochgeladen
Einführung in die Anglo-Amerikanische Rechtssprache (Introduction to A...
Introduction to Anglo-American...
B. Sharon Byrd
Eine Einführung in die Typografie. Une Initiation à la Typographie. An...
Anne Denestas, Camille Gallet, Maria Hoffmann-Dartevelle, Bruce Mayo
Einführung in das deutsche Recht und die deutsche Rechtssprache
Heike Simon, Gisela Funk-Baker
Einführung in die Phänomenologie der Erkenntnis. Vorlesung 1909
Edmund Husserl, Elisabeth Schuhmann
0 Kommentare