Präsentation herunterladen
Veröffentlicht von:Suse Lehde Geändert vor über 11 Jahren
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
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.