Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Hochschule Fulda – FB ET Sommersemester 2010

Ähnliche Präsentationen


Präsentation zum Thema: "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 2010 Peter Klingebiel, HS Fulda, DVZ

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

3 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 */ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

5 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

7 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

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

10 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++ } } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

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

13 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

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

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

17 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"); } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

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

20 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

22 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

24 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); } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

26 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; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

27 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'; } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

29 Iterationen 10 Schleifensteuerung break continue
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(;;) ... Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

30 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; } } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

31 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) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

32 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

33 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); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

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

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

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

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

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

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

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

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

43 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

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

46 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

48 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

49 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)); } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

50 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); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

51 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ


Herunterladen ppt "Hochschule Fulda – FB ET Sommersemester 2010 "

Ähnliche Präsentationen


Google-Anzeigen