Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 4 Hochschule Fulda – FB ET Sommersemester 2010

Ähnliche Präsentationen


Präsentation zum Thema: "Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 4 Hochschule Fulda – FB ET Sommersemester 2010"—  Präsentation transkript:

1 Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 4 Hochschule Fulda – FB ET Sommersemester Peter Klingebiel, HS Fulda, DVZ

2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ2 Anweisungen Anweisung im allgemeinsten Sinn:

3 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ3 Ausdrücke 1 Ausdrücke (siehe auch früherer Abschnitt) –Definitionen, Zuweisungen, … –arithmetische, logische, … Operationen, … Bei Zuweisungen zu beachten: gültiger l-value und r-value –l-value (left, location) Variable mit Speicherplatz –r-value (right, read) auswertbarer Ausdruck Beispiel: int i, j; i = 9 / 3; /* gültiger l-value */ 45 = j; /* ungültiger l-value */

4 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ4 Ausdrücke 2 Sind die Zuweisungen korrekt?

5 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ5 Blöcke 1 Zusammenfassung mehrerer Anweisungen Geklammert mit { } v.a. bei Funktionen, Kontrollstrukturen, aber auch lokale Blöcke, Unterblöcke zur Definition z.B. von lokalen Variablen, insbesondere Hilfsvariablen legt Lebensdauer von Variablen fest legt Sichtbarkeit (Scope) von Variablen fest Bei Namensgleichheit ist Variable des innersten Blocks sichtbar

6 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ6 Blöcke 2

7 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ7 Kontrollstrukturen Kontrolle des Programmablaufs abhängig von Ergebnis von Ausdrücken Selektionen / bedingte Anweisungen –Einfache Alternative if … else –Mehrfache Alternative if … else if … else –Fallunterscheidung switch Iterationen / Schleifen –Abweisende Schleife while –Annehmende Schleife do … while –Laufanweisung for

8 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ8 Selektionen 1 Bedingte Anweisung if Syntax: if (ausdruck) anweisung Struktogramm

9 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ9 Selektionen 2 Bedingte Anweisung if … else if (ausdruck) anweisung else anweisung

10 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ10 Selektionen 3 Anweisung kann ein Block sein, bei mehreren Ausdrücken Verwendung von { } notwendig Beispiel: int c, i;... c = getchar(); if (c != EOF) { if(i < 32) { putchar(c); i++ } }

11 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ11 Selektionen 4 Beispiel: Zeichen groß klein und vice versa int c;... c = getchar(); if ( (c >= 'A' && c = 'a' && c = 'A' && c <= 'Z') c = c – 'A' + 'a'; else c = c – 'a' + 'A'; }...

12 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ12 Selektionen 5 Beispiel: ctoggle.c

13 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ13 Selektionen 6 Mehrfache Alternative if … else if … else if (ausdruck_1) anweisung_1 else if(ausdruck_2) anweisung_2 else if(ausdruck_3) anweisung_3 else if (ausdruck_n) anweisung_n else /* kann auch fehlen */ anweisung_else

14 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ14 Selektionen 7 Syntaxdiagramm

15 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ15 Selektionen 8 Mehrfache Alternative / Fallunterscheidung switch switch(ausdruck){ case k1: anweisung_1; break; case k2: anweisung_2; break;... default: anweisung_default; }

16 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ16 Selektionen 9 Syntaxdiagramm

17 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ17 Selektionen 10 Beispiel enum color { red, green, blue }; enum color col = red; switch(col) { case red: printf("Farbe: rot\n"); break; case green: printf("Farbe: grün\n"); break; case blue: printf("Farbe: blau\n"); break; default: printf("Farbe: nicht definiert!\n"); }

18 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ18 Selektionen 11 Beispiel: lettercount.c

19 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ19 Selektionen 12 Beispiel: mydraw3.c

20 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ20 Iterationen 1 Abweisende Schleife while, manchmal auch kopfgesteuerte Schleife genannt Syntax while (ausdruck) anweisung Bedingung ausdruck wird vor Ausführung vom Schleifenkörper anweisung geprüft Schleifenkörper wird nur ausgeführt, wenn Bedingung ausdruck wahr ist

21 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ21 Iterationen 2 Struktogramm Beispiel: int c; while ((c = getchar()) != EOF){ putchar(c); }

22 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ22 Iterationen 3 Nicht-annehmende Schleife do while, machmal auch: fußgesteuerte Schleife Syntax do anweisung while (ausdruck) Bedingung ausdruck wird erst am Ende des Schleifenkörperts geprüft Schleife wird mindestens einmal durchlaufen

23 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ23 Iterationen 4 Struktogramm Beispiel char *s1, *s2; do *s2++ = *s1++; while (*s1);

24 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ24 Iterationen 5 Beispiel: stringcopy() mit while -Schleife void stringcopy(char *s1, char *s2) { while(*s1) *s2++ = *s1++; *s2 = '\0'; } Beispiel: void stringcopy mit do-Schleife void stringcopy(char *s1, char *s2) { do *s2++ = *s1++; while(*s1); }

25 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ25 Iterationen 6 Laufanweisung oder abweisenden Schleife mit for Syntax for(ausdruck1; ausdruck2; ausdruck3) anweisung

26 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ26 Iterationen 7 Beispiel: Summenbildung von 1 … 100 int x, i; x = 0; for (i = 1; i <= 100; i++) x = x + i; eine Alternative int x, i; for (x = 0, i = 1; i <= 100; i++) x += i;

27 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ27 Iterationen 8 for-Schleife ist eigentlich eine while-Schleife ausdruck1 while(ausdruck2){ anweisung ausdruck3 } Beispiel: stringcopy() mit for void stringcopy(char *s1, char *s2) { for ( ; *s1; s1++, s2++) *s2 = *s1; *s2 = '\0'; }

28 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ28 Iterationen 9

29 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ29 Iterationen 10 Schleifensteuerung break –bricht die Ausführung der Schleife bzw. switch- Anweisung ab und verlässt diese continue –bricht den aktuellen Schleifendurchlauf ab –setzt mit Ausführung des Schleifenkopfes fort Endlosschleife while(1)... for(;;)...

30 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ30 Iterationen 11 Beispiel: eingabegesteuertes Programm int c; while(1) { c = getchar(); if(c = 'Q') break; switch(c) { case 'A': funca(); break; case 'B': funcb(); break;... } }

31 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ31 Funktionen 1 Funktionen sind Programmteile (Blöcke) mit Namen, ggfs. Parametern und ggfs. einem Rückgabewert elementare Bausteine für Programme –gliedern umfangreiche Aufgaben in kleinere Komponenten –reduzieren Komplexität –Wiederverwendung von Komponenten –verbergen Details der Implementierung vor anderen Programmteilen (black box)

32 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ32 Funktionen 2 dienen der Abstraktion Name und Parameter abstrahieren –vom tatsächlichen Programmstück –von Darstellung und Verwendung der Daten Verwendung –mehrfach benötigte Programmstücke werden einmal erstellt und können durch Angabe des Funktionsnamens aufgerufen werden –schrittweise Abstraktion möglich Entwurf top-down oder bottom-up

33 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ33 Funktionen 3 Beispiel: Summenbildung int summe(int a, int b) { int sum = 0, i; for(i = a; i <= b; i++) sum += i; return(sum); } Beliebig immer wieder verwendbar: s1 = summe(20, 50); s2 = summe(2, 120);

34 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ34 Funktionen 4 Beispiel

35 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ35 Funktionen 5 vor Programmstart

36 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ36 Funktionen 6 Programmstart: Speicherreservierung

37 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ37 Funktionen 7 Kopieren des aktuellen Parameters a

38 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ38 Funktionen 8 Aufruf der Funktion quadrat()

39 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ39 Funktionen 9 In Funktion quadrat(): berechnen

40 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ40 Funktionen 10 Returnwert liefern in a kopieren

41 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ41 Funktionen 11 Rückkehr aus quadrat() nach main()

42 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ42 Funktionen 12 Nach Rückkehr

43 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ43 Funktionen 13 Funktionsdefinition Schnittstelle (Typ, Name, Parameterliste) Typ –Datentyp, der von Funktion zurückgeliefert wird –Kann beliebiger Typ sein –void kein Rückgabewert (Prozedur) Name –Bezeichner kann beliebig gewählt sein –keine Schlüsselworte

44 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ44 Funktionen 14 Syntaxdiagramm Beispiel int add(int a, int b) { r = a + b; return(r); }

45 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ45 Funktionen 15 Formale Parameter beliebiger Typ, beliebiger Bezeichner formale Parameter Platzhalter für aktuelle an Funktion übergebene Parameter in Funktion wie vorbelegte lokale Variable

46 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ46 Funktionen 16 Beliebiger Block mit {} geklammert Zusätzliche Anweisung return(ausdruck) Rückkehr aus der Funktion Bei void-Funktion: nur return Nach Rückkehr aus Funktion Programm wird nach Funktionsaufruf fortgesetzt Typ von Ausdruck und Funktion müssen übereinstimmen Klammern bei return können entfallen

47 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ47 Funktionen 17 Aufruf einer Funktion –jeder Funktionsaufruf ist ein Ausdruck –void-Funktionen können keine Teilausdrücke sein wie Prozedur in anderen Sprachen

48 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ48 Funktionen 18 Die Ausdrücke in der Parameterliste werden vor dem Sprung in die Funktion ausgewertet aktuelle Parameter Anzahl und Typen der Ausdrücke der aktuellen Parameter müssen mit denen der formalen Parameter in der Definition der Funktion übereinstimmen Die Auswertungsreihenfolge der Parameter- ausdrücke ist nicht festgelegt

49 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ49 Funktionen 19 Regeln für Funktionen Funktionen werden global definiert, damit keine lokalen Funktionen möglich main() ist normale Funktion, die aber beim Programmstart automatisch aufgerufen wird Rekursion ist problemlos möglich: int fak(int n) { if(n == 1) return(1); else return(n * fak(n-1)); }

50 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ50 Funktionen 20 Funktionen müssen deklariert sein, bevor sie aufgerufen werden können Name, Rückgabetyp und Parametertypen müssen dem Compiler bekannt sein Funktionsdefinition Funktion ist automatisch deklariert und bekannt sonst Prototype, z.B. in Headerdatei typ name ( liste der parametertypen ); Beispiele: double sin(double); double cos(double x);

51 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ51 Funktionen 21 Wdh: Parameterübergabe an Funktionen call by value –aktuelle Parameter werden in Speicherbereich der Funktion kopiert –in Funktion: Änderungen nur lokal in Funktion call by reference –In C nur über Zeiger realisierbar –Adresse der Parameter werden in Funktion kopiert –Änderungen an Parametern Änderungen an den originalen Variablen


Herunterladen ppt "Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 4 Hochschule Fulda – FB ET Sommersemester 2010"

Ähnliche Präsentationen


Google-Anzeigen