1 / 67

Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1

Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1. Hochschule Fulda – FB ET Sommersemester 2010 http://www.rz.hs-fulda.de/et Peter Klingebiel, HS Fulda, DVZ. Zeichensatz von C 1.

Download Presentation

Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Informatik IIGrundlagen der ProgrammierungProgrammieren in CGrundlagen C 1 Hochschule Fulda – FB ET Sommersemester 2010 http://www.rz.hs-fulda.de/et Peter Klingebiel, HS Fulda, DVZ

  2. Zeichensatz von C 1 • Buchstaben (incl. Unterstrich)ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ • Ziffern0123456789 • Semikolon (z.B. am Ende einer Anweisung); • Punkt (Gleitpunktzahlen, Selektionsoperator). Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  3. Zeichensatz von C 2 • Sonderzeichen (Operatoren, Satzzeichen)()[]<>+-*/%^~&|=!?,: • Anführungszeichen (Einzelzeichen, Strings)'" • Blockklammern{ } • Fluchtzeichen (für Sonderzeichen)\ • Doppelkreuz (Preprozessordirektiven)# Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  4. Reservierte Worte in C 1 • C kennt 32 reservierte Worteauto break case charconst continue default dodouble else enum externfloat for goto ifint long register returnshort signed sizeof staticstruct switch typedef unionunsigned void volatile while Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  5. Reservierte Worte in C 2 • auto Speicherklasse automatisch • break Verlassen von Schleife/Mehrfachauswahl • case Auswahl in Mehrfachauswahl • char Typbezeichner für Zeichen • const Attribut bei Typangabe • continue Fortsetzungsanweisung • default Standardauswahl bei Mehrfachauswahl • do Schleifenanweisung • double Typbezeichner Fließkommazahl • else Teil von Einfach-, Mehrfachalternative Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  6. Reservierte Worte in C 3 • enum Typbezeichner für Aufzählungstyp • extern Speicherklasse extern • float Typbezeichner Fließkommazahl • for Schleifenanweisung • if Alternative oder bedingte Anweisung • int Typbezeichner Ganzzahl • long Typbezeichner Ganzzahl • register Speicherklasse Register • return Rückkehranweisung • short Typbezeichner Ganzzahl Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  7. Reservierte Worte in C 4 • signed Typbezeichner, -modifizierer • sizeof Operator zur Größenbestimmung • static Speicherklasse statisch • struct Strukturvereinbarung • switch Auswahlanweisung • typedef Typnamenvereinbarung • union Datenstruktur mit Alternativen • unsigned Typbezeichner, -modifizierer • void Typbezeichner • while Schleifenanweisung Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  8. Datentypen 1 • Menge von Werten undMenge von Operationen auf diesen Werten • Konstanten / Variablen • Datentypen bestimmen • Darstellung der Werte im Rechner • benötigten Speicherplatz • zulässige Operationen • Festlegung des Datentyps • implizit durch Schreibweise bei Konstanten • explizit durch Deklaration bei Variablen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  9. Datentypen 2 • Vordefinierte Grunddatentypenchar Zeichen (ASCII-Kode, 8 Bit)int Ganzzahl (maschinenabhängig, meist 16 oder 32 Bit)float Gleitkommazahl (32 Bit, IEEE, etwa auf 6 Stellen genau)double doppelt genaue Gleitkommazahl (64 Bit, IEEE, etwa auf 12 Stellen genau)void ohne Wert (z.B. Zeiger) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  10. Datentypen 3 • Type-Modifier spezifizieren Grunddatentypenshort int, long int- legen Länge der Ganzzahl fest- maschinenabhängig, 16 Bit, 32 Bit - int kann auch fehlenlong double- Gleitkommazahl, erw. Genauigkeit- oft 128 Bit, IEEEsigned, unsigned- char/int mit/ohne Vorzeichen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  11. Bezeichner 1 • Bezeichner (Identifier) für Konstanten, Variablen, Funktionen, Typen usw. müssen mit einem Buchstaben oder Unterstrich beginnen • danach können Buchstaben, Unterstriche und Ziffern folgen • Groß- und Kleinschreibung wird streng unterschieden • keine Sonderzeichen (z.B. $ oder #) • keine reservierten Worte • Vorsicht bei vordefinierten Funktionsnamen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  12. Bezeichner 2 • Syntaxdiagramm Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  13. Bezeichner 3 • Backus-Naur-Form (BNF)letter ::= A|B|…|Y|Z|a|b|…|y|z|_digit ::= 0|1|2|3|4|5|6|7|8|9identifier ::= letter { letter | digit } • BNF / EBNF zur Beschreibung formaler Sprachen • Vielfältige Formen / Notationen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  14. Bezeichner 4 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  15. Konstanten • Konstanten haben einen festgelegten, unveränderbaren Wert • explizite Deklaration, z.B.const float pi = 3.141; • implizite Notation, z.B.u= 2 * r * 3.141; • mittels CPP textuelle implizite Ersetzung#define PI 3.141...u = 2 * PI * r; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  16. Variablen 1 • Variable sind Platzhalter für Daten • haben einen festgelegten Speicherort, an dem der aktuelle Wert gespeichert wird • der aktuelle Wert (an seinem Speicherort)ist veränderbar • Attribute von Variablen: • Datentyp • Namen (Bezeichner, Identifier) • Lebensdauer / Speicherklasse • evtl. initialer Wert • Sichtbarkeit (Scope) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  17. Variablen 2 • Deklaration / Definition von Variablen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  18. Variablen 3 • Variablen-Definitionen, z.B.double u;short int i, tab = 5;char *hallo = "Hallo, Welt!"; • Position im Programm: • außerhalb von Funktionen • am Anfang eines Blocks, also nach { • Wert ist veränderbar (Zuweisung, Operation) • Programmstruktur  Lebensdauer / Scope Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  19. Wie speichert C? 1 • Hauptspeicher Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  20. Wie speichert C? 2 • Beispiel: Zugriff auf Variable Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  21. Wie speichert C? 3 • Vor Programmstart Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  22. Wie speichert C? 4 • Programmstart und Aufruf von main() Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  23. Wie speichert C? 5 • Zuweisung a = 4; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  24. Wie speichert C? 6 • Zuweisung b = 8; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  25. Wie speichert C? 7 • Berechnung a * b; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  26. Wie speichert C? 8 • Zuweisung c = a * b; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  27. Wie speichert C? 9 • Danach Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  28. Exkurs: Zeiger 1 • Wdh: Jede Variable hat einen Speicherort,d.h. eine Adresse im Hauptspeicher • Zeiger (Pointer) sind Variable, die auf eine andere Variable verweisen, oderexakter: den Speicherort bzw. die Adresse dieser Variablen als Wert haben • Pointerdefinition: int*ip;int i = 5; • Adresszuweisung: ip = &i; • Zugriff auf Wert: *ip = *ip + *ip; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  29. Exkurs: Zeiger 2 • Zugriff auf Variable mit Pointer Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  30. Exkurs: Zeiger 3 • Vor Programmstart Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  31. Exkurs: Zeiger 4 • Programmstart und Aufruf von main() Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  32. Exkurs: Zeiger 5 • Zuweisung i = 5; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  33. Exkurs: Zeiger 6 • Zuweisung ip = &i; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  34. Exkurs: Zeiger 7 • Berechnung *ip + *ip; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  35. Exkurs: Zeiger 8 • Zuweisung *ip = *ip + *ip; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  36. Exkurs: Zeiger 9 • Danach Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  37. Exkurs: Zeiger 10 • Warum und wozu Zeiger? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  38. Exkurs: Zeiger 11 • In anderes Programmiersprachen, z.B. Ada oder Pascal, werden Pointer meist nur für dynamische Datentypen verwendet • In C werden Zeiger leider schon von Anfang an für einfache Grundoperationen benötigt! • Pointer notwendig für Eingaben:scanf("%d", &i); • Pointer notwendig als Funktionsparameter:doit(int *i) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  39. Noch ein Exkurs: Ein-/Ausgabe 1 • Wdh: Aufbau eines C-Programms:#include <stdio.h>int main(void){ int a, b, c; scanf("%d", &a); scanf("%d", &b); c = a * b; printf("c = %d\n", c); return(0);} Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  40. Noch ein Exkurs: Ein-/Ausgabe 2 • Jedes laufende C-Programm (= Prozess) hat voreingestellt drei Ein-/Ausgabekanäle: • stdin Standardeingabe, meist Tastatur • stdout Standardausgabe, meist Bildschirm • stderr Standardfehlerausgabe, Bildschirm • Die Standardkanäle sind umlenkbar:$ meinprog <InFile >OutFile 2>ErrFile • Bei einigen C-Compilern ist unter Windows auch der Kanal stdprn als Standarddrucker definiert Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  41. Noch ein Exkurs: Ein-/Ausgabe 3 • Einfache zeichenweise Ein- und Ausgabe mit getchar() und putchar(), z.B.:int c;c = getchar(); /* Zeichen von stdin */putchar(c); /* Zeichen auf stdout */ • Formatierte Ein- und Ausgabe mit printf() und scanf(), z.B.:int c;scanf("%c", &c);printf("%c", c); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  42. Noch ein Exkurs: Ein-/Ausgabe 4 • Obacht: getchar() liefert, bzw. putchar() benötigt als Parameter den Typ int! • Typumwandlung von char  int erfolgt meist automatisch • Hauptgründe: • historisch ist char eine Art Untertyp von int • die Zeichenkonstante EOF als Endekennzeichner für die Eingabe ist in stdio.h als -1 definiert • Simples Kopierprogrammfragment:while((c = getchar())!= EOF) putchar(c); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  43. Noch ein Exkurs: Ein-/Ausgabe 5 • Formatierte Ausgabe mit printf() • Aufruf: printf(fmt, args) • printf() konvertiert und gibt die Parameter args unter Kontrolle des Formatstrings fmt auf stdout aus • Der Formatstring fmt ist eine Zeichenkette • Parameter args können auch fehlen • Die Parameter args müssen den Typ haben, wie er im Formatstring fmt angegeben ist Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  44. Noch ein Exkurs: Ein-/Ausgabe 6 • Formatierte Eingabe mit scanf() • Aufruf: scanf(fmt, args) • scanf() konvertiert und liest die Parameter args unter Kontrolle des Formatstrings fmt von stdin ein • Der Formatstring fmt ist eine Zeichenkette • Die Parameter args müssen den Typ haben, wie er im Formatstring fmt angegeben ist • Die Parameter args müssen Pointer sein Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  45. Noch ein Exkurs: Ein-/Ausgabe 7 • Wichtige Formatzeichen: %c Einzelzeichen / char%d Ganzzahl / int%ld Ganzzahl / long int%f Gleitkommazahl / float%lf Gleitkommazahl / double%s Zeichenkette / char * • Wichtige Sonderzeichen\n Newline, Zeilensprung\t Tabulator\0 EOS - Endezeichen in String\' einfaches Anführungszeichen '\" doppeltes Anführungszeichen "\% Prozentzeichen %\\ Fluchtzeichen \ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  46. Noch ein Exkurs: Ein-/Ausgabe 8 • Beispiele:char c;int a, b;double d;printf("integer a und b eingeben: ");scanf("%d %d", &a, &b);printf("a=%d b=%d\n", a, b);printf("char c und double d: ");scanf("%c %lf", &c, &d);printf("c=%c d=%lf\n", c, d); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  47. Noch ein Exkurs: Ein-/Ausgabe 9 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  48. Funktionsaufruf und Parameter • Parameterübergabe als Werte (call by value), z.B. bei printf() • Variable werden als Werte in den Adressraum der Funktion kopiert • Parameterübergabe als Adresse (call by reference), z.B. bei scanf() • Adressen der Variablen werden in den Adressraum der Funktion kopiert • In Funktion sind die Parameter Zeiger Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  49. Call by value 1 • Beispiel: Funktionsaufruf cbv Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

  50. Call by value 2 • Vor Programmstart Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

More Related