Sie sind auf Seite 1von 14

Erste Schritte in C 3.

Mai 2006 Tobias Landes

Warum C?

C wird oft als Midlevel-Sprache bezeichnet. C verbindet die Ubersichtlichkeit strukturierter Hoch sprachen mit der Machtigkeit, Flexibilitat und Hardware nahe von Assembler. C erlaubt die direkte Manipulation von Bits, Bytes und Adressen, also den grundlegenden funktionalen Elementen des von-Neumann-Rechners ideal zur Systemprogrammierung

Warum C? C schrankt den Programmierer in keiner Weise ein Verantwortung liegt beim Programmierer (z.B. keine Fehleruberprufung zur Laufzeit)

In C ist alles programmierbar, was auch in Assembler (also uberhaupt) programmierbar ist. C verlangt keine strenge Typisierung.
C besitzt nur sehr wenige Schlusselworter. C-Kenntnisse fordern das Verstandnis fur grundlegende Prinzipien, die in hoheren Sprachen verborgen werden.

Erstes C-Programm

#include <stdio.h> int main() { printf("Hello, world\n"); return 0; }

#include <stdio.h>: Einbinden der Ein-/Ausgabe-Funktionen Programm beginnt stets mit main Ruckgabewert von main ist int printf zur Ausgabe

Zweites C-Programm
#include <stdio.h> int main() { int fahr; double celsius; for (fahr = 0; fahr <= 300; fahr = fahr + 20) { celsius = (5.0/9.0) * fahr - 32; printf("%3d %6.1f\n", fahr, celsius); } return 0; }

Variablenvereinbarung: <Typ> <Name>; for-Schleife: for (<Start>; <Bedingung>; <Inkrement>) <Anweisung>; Block von mehreren Anweisungen: {<Anweisung>; ...} printf mit verschiedenen Formatierungen zur Ausgabe

Die Ausgabefunktion printf

int printf (<format>, <arg1>, ..., <argn>); <format> String mit Formatierangaben: %d Integer-Zahl %x.yf Fliepunkt-Zahl, mit x Stellen vor dem . und y Stellen danach %c Ein Zeichen %s Zeichenkette <argi> Argumente, die an entsprechender Stelle in <format> eingesetzt werden.

Weitere Grundlagen
#include <stdio.h> int main() { int x, a = 3, b = 4; x = a * b; while ((x == 12) || (x == 24)) { a++; b += 2; x = a * b; } return x; } /* /* /* /* /* a quivalent: while (! ((x != 12) && (x != 24))) { x = (++a) * (b += 2); */ */ */ */ */

Kommentare mit /* ... */


Initialisierung bei Variablenvereinbarung moglich

Zuweisung: =; Vergleichsoperatoren: ==, !=, <=, >=


&&/||: logisches Und/Oder, &/|: binares Und/Oder, !: Negation

Weitere Grundlagen
int main() { int x, a = 3, b = 4; x = a * b; while ((x == 12) || (x == 24)) { a++; b += 2; x = a * b; } return x; } /* /* /* /* /* a quivalent: while (! ((x != 12) && (x != 24))) { */ */ */ */ */

x = (++a) * (b += 2);

while-Schleife: while (<Bedingung>) <Anweisung>; oder do <Anweisung> while (<Bedingung>);, wenn die Bedingung erst nach einem Schleifendurchlauf gepruft werden soll.

Weitere Grundlagen
int main() { int x, a = 3, b = 4; x = a * b; while ((x == 12) || (x == 24)) { a++; b += 2; x = a * b; } return x; } /* /* /* /* /* a quivalent: while (! ((x != 12) && (x != 24))) { x = (++a) * (b += 2); */ */ */ */ */

Abkurzende Zuweisungsoperatoren: +=, -=, *=, /= Jede Zuweisung ist auch ein Ausdruck mit dem Wert der Zuweisung als Ergebnis Inkrementoperatoren ++/--: Reihenfolge von Operator und Variable bestimmt Reihenfolge von Inkrementierung und Auswertung

Schlechter Stil

#include <stdio.h> int main(){ int fahr; for (fahr=0; fahr<=300; fahr = fahr+20) {printf( "%3d %6.1f\n", fahr, (5.0/9.0)*fahr-32); } return 0; } Jeder Befehl in einer eigenen Zeile Einrucken entsprechend der Schachtelungstiefe Kommentare!

Funktionen und Variablen

Ein C-Programm besteht aus Funktionen und globalen Variablen.


Innerhalb der Funktionen konnen am Anfang (!) lokale Variablen deniert werden.

. . . aber keine Funktionen (Schachtelung)!

Datenstrukturen

Einfache Datentypen: int, char, float, usw. Beispiel: int i; Es gibt keinen boolschen Datentyp! Boolscher Wert mit int: 0 = false, sonst true
Felder (statische Lange) Beispiel: int n[100];

Datenstrukturen

Strukturen Beispiel:

struct Punkt { int x; int y; }; struct Punkt p; p.x = 10; p.y = 12;

struct { int x; int y; } p; p.x = 10; p.y = 12;

Vereinigungen Beispiel: union

value { int ival; float fval;

}; union value p; p.ival = 10;

Typdenitionen Neue Typen werden mit dem Schlusselwort typedef ver einbart. Beispiele: typedef int length; length ist synonym zu int

typedef struct Punkt { int x; int y; } punkt_t; punkt_t p; p.x = 10; p.y = 12;