23
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretech [email protected] Einführung in C Grundprinzipien

TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik [email protected] Einführung in C Grundprinzipien

Embed Size (px)

Citation preview

Page 1: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

Einführung in C

Grundprinzipien

Page 2: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 2

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

Agenda Sitzung 2für den 21.10.2002

• Programmaufbau • Grundlegende Datentypen• Arrays• Statements• Funktionen• Einstieg in die Stringverarbeitung• Programmierstil

Page 3: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 3

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

1. Zusammensetzung eines C-Programms• Header-Dateien

• Programm-Dateien

• Libraries

Page 4: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 4

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

2. Struktur von Programm-Dateien

• Preprocessor Kommandos• Kommentare

/* dies ist ein Kommentar */

// dies ist eine einzelne Kommentarzeile

• (Globale) Variablen )mit möglicher Initialisierung• Funktionen

besondere Funktion main()

Page 5: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 5

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

Beispiel

#include <stdio.h>void hello() // a very simple function{ printf (“Hello !\n”);}main() // all work starts here{ hello {};}

Page 6: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 6

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

3. Preprocessor-Kommandos

• Includes#include <standard_header.h>

#include “my_header.h”

• Macros#define PI 3.14

#define ARRAY_SIZE 100

#define SUM(x,y) (x+y)

Page 7: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 7

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

4. Grundlegende Datentypen• Leer void• Integer

– int, unsigned int int i;– long, unsigned long long l; unsigned long ul;– short, unsigned short short s; unsigned short us;

• Character– char, unsigned char char c; unsigned char uc;

• Enum enum color{red,green,blue}; enum color favorite;

• Floating point– float float f;– double double d;

Page 8: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 8

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

5. Arrays

• Deklaration#define MAX_ELEMS 10

int n[MAX_ELEMS], *m, *k;

double matrix[4][4];

• Zugriffmatrix[j][k] = (double) n[i];

m = n;

k = &(n[5]);

n[0]n[1]n[2]n[3]n[4]n[5]n[6]n[7]n[8]n[9]

n m

k

Page 9: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 9

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

6. Initialisierungen

int i=0;

int n[] = {3,2,8,10,4,7};

double mat[][]= {{1.0,0.0,0.0,0.0},

{0.0,1.0,0.0,0.0},

{0.0,0.0,1.0,0.0},

{0.0,0.0,0.0,1.0}};

Page 10: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 10

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

7. Statements

• Vergleiche– größer >, kleiner <, gleich ==, ungleich !=, usw ...

• Logische Verknüpfungen– und &&– oder ||– nicht !

(((i == j) && (m!=10)) || !(k >=50))

Page 11: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 11

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

7. Statements

• Zuweisungen#define FALSE 0i = 10; j = f(x); b = (exp(x)==FALSE)i++; i--;i+=3; i-=5; d*=PI; n/=2;

• Typkonversionen (casts)i = (int) d;d = (double) i;

Page 12: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 12

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

7. Statements

• Bedingungenif (a==b) {

; // do this

}

else {

; // do that

}

Page 13: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 13

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

7. Statements• Switch statements

char c = ‘b’;

switch (c) {

case ‘a’: ; // do something

break;

case ‘b’: ; // do something else

break;

case ‘c’: ; // do yet something else

break;

}

Page 14: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 14

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

7. Statements

• For-Schleifefor (i=0; i<IMAX; i++) { ; // do something}for ( ; ; ) v++; // infinite loop

– Nestedfor (i=0; i<IMAX; i++) { for (j=0; j<JMAX; j++) { ; // do something }}

Page 15: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 15

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

7. Statements

• While-SchleifeWhile (exp == TRUE) {

; // do something

}

• Do-While-Schleifedo

; // do something

while (cond == TRUE);

Page 16: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 16

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

8. Funktionen• Spezifikation

void myFunctionA (int i, double d, int vals[]) { ; // do something}int myFunctionB (int i, int j, char str[]){ int val; ; // do something return val;}

• AufrufmyFunctionA (k,f,v);ival = myFunctionB(g,h,s);

Page 17: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 17

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

9. Stringverarbeitung

• String-Deklaration#define MAXCHARS 80

char str1[MAXCHARS], str2[MAXCHARS];

• Einfachste Manipulationenfor (i=0; i<MAXCHARS]; i++) { str1[i] = str2[i];}

Page 18: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 18

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

9. Stringverarbeitung

• Wichtige schon existierende Funktionen#include <string.h>

int strlen (char *str);

int strcmp (char *s1, char *s2);

char *strcpy (char *dest, char *src);

char *strcat (char *dest, char *src);

Page 19: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 19

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

9. Stringverarbeitung

• Wichtige Konstante:’\n’ Zeilenende

‘\0’ Stringende

EOL End Of Line

EOF End Of File

Page 20: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 20

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

9. Stringverarbeitung

• Eingabe#include <stdio.h>sscanf (char *str, char *format, ...pointers to variables );

sscanf (str, “%d %d %d”, &v1, &v2, &v3);auch: fscanf (...), scanf ();

• Ausgabesprintf (char *str, char *format, ...variables...);sprintf (str, “i = %d\n”, i);auch: fprintf (...), printf (...);

Page 21: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 21

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

9. Stringverarbeitung

• Konversion#include <stdlib.h>double strtod (char *str, char **ptr);long strtol (char *str, char **ptr, int base);unsigned long strtoul (char *str, char **ptr, int base);

double atof (char *str);int atoi (char *str);long atol (char *str);

Page 22: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 22

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

10. Programmierstil

• Jeweils 4 Stellen einrücken.• Block {

...}

• Funktion{ ...}

Page 23: TU-MünchenInstitut für Informatik, Lehrstuhl für Angewandte Softwaretechnik openglcoach@globalse.org Einführung in C Grundprinzipien

21.10.2002 OpenGL Praktikum (S2) 23

TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik

[email protected]

10. Programmierstil

• Macros nur in großen Buchstaben.

• Variable und Funktionen beginnen mit kleinem Buchstaben, zusammengesetzte Wörter haben intern jeweils große Buchstaben.

• Kennzeichnende Vorsilbe bei Funktionen und globalen Variablen.