Upload
sigismund-hendriks
View
105
Download
0
Embed Size (px)
Citation preview
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
Einführung in C
Grundprinzipien
21.10.2002 OpenGL Praktikum (S2) 2
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
Agenda Sitzung 2für den 21.10.2002
• Programmaufbau • Grundlegende Datentypen• Arrays• Statements• Funktionen• Einstieg in die Stringverarbeitung• Programmierstil
21.10.2002 OpenGL Praktikum (S2) 3
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
1. Zusammensetzung eines C-Programms• Header-Dateien
• Programm-Dateien
• Libraries
21.10.2002 OpenGL Praktikum (S2) 4
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
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()
21.10.2002 OpenGL Praktikum (S2) 5
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
Beispiel
#include <stdio.h>void hello() // a very simple function{ printf (“Hello !\n”);}main() // all work starts here{ hello {};}
21.10.2002 OpenGL Praktikum (S2) 6
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
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)
21.10.2002 OpenGL Praktikum (S2) 7
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
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;
21.10.2002 OpenGL Praktikum (S2) 8
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
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
21.10.2002 OpenGL Praktikum (S2) 9
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
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}};
21.10.2002 OpenGL Praktikum (S2) 10
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
7. Statements
• Vergleiche– größer >, kleiner <, gleich ==, ungleich !=, usw ...
• Logische Verknüpfungen– und &&– oder ||– nicht !
(((i == j) && (m!=10)) || !(k >=50))
21.10.2002 OpenGL Praktikum (S2) 11
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
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;
21.10.2002 OpenGL Praktikum (S2) 12
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
7. Statements
• Bedingungenif (a==b) {
; // do this
}
else {
; // do that
}
21.10.2002 OpenGL Praktikum (S2) 13
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
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;
}
21.10.2002 OpenGL Praktikum (S2) 14
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
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 }}
21.10.2002 OpenGL Praktikum (S2) 15
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
7. Statements
• While-SchleifeWhile (exp == TRUE) {
; // do something
}
• Do-While-Schleifedo
; // do something
while (cond == TRUE);
21.10.2002 OpenGL Praktikum (S2) 16
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
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);
21.10.2002 OpenGL Praktikum (S2) 17
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
9. Stringverarbeitung
• String-Deklaration#define MAXCHARS 80
char str1[MAXCHARS], str2[MAXCHARS];
• Einfachste Manipulationenfor (i=0; i<MAXCHARS]; i++) { str1[i] = str2[i];}
21.10.2002 OpenGL Praktikum (S2) 18
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
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);
21.10.2002 OpenGL Praktikum (S2) 19
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
9. Stringverarbeitung
• Wichtige Konstante:’\n’ Zeilenende
‘\0’ Stringende
EOL End Of Line
EOF End Of File
21.10.2002 OpenGL Praktikum (S2) 20
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
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 (...);
21.10.2002 OpenGL Praktikum (S2) 21
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
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);
21.10.2002 OpenGL Praktikum (S2) 22
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
10. Programmierstil
• Jeweils 4 Stellen einrücken.• Block {
...}
• Funktion{ ...}
21.10.2002 OpenGL Praktikum (S2) 23
TU-München Institut für Informatik, Lehrstuhl für Angewandte Softwaretechnik
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.