OSUE Einführung in C. Denise Ratasich. März /60. basierend auf Slides von Roland Kammerer, Bernhard Frömel

Größe: px
Ab Seite anzeigen:

Download "OSUE Einführung in C. Denise Ratasich. März /60. basierend auf Slides von Roland Kammerer, Bernhard Frömel"

Transkript

1 1/60 Denise Ratasich basierend auf Slides von Roland Kammerer, Bernhard Frömel Institut für Technische Informatik Technische Universität Wien Betriebssysteme UE SS16 März 2016

2 2/60 Einleitung Historisches Warum C? Standards Erste Schritte Teil I Einleitung

3 3/60 Historisches Einleitung Historisches Warum C? Standards Erste Schritte 1964: MIT, General Electrics, Bell Labs und AT&T wollten neues Betriebssystem entwickeln (Multics) 1969: Zu teuer Bell Labs steigt aus Gruppe um Ken Thompson (Bell Labs) sucht Alternativen zu Multics und will das System in Assemblersprache entwickeln nicht portabel zeitaufwändig fehleranfällig ldi r16, 0xFF out DDRC, r16 ldi r16, 0x00 out PORTC, r16 Alternativen zur Assemblersprache wurden gesucht. C entwickelte sich als Nachfolger der Sprache B, ALGOL (ALGOrithmic Language)

4 4/60 Warum C? Einleitung Historisches Warum C? Standards Erste Schritte Früher: Heute: Portabilität Erweiterbarkeit durch Libraries Performance (vgl. Betriebssystem-Kernel: Windows, Linux, BSDs,... ) Viele Libraries vorhanden Hardwarenahe Programmierung Computergraphik, Spiele Auch moderne Interpreter in C geschrieben (Python, Perl, Ruby,... ) Viele Generatoren erzeugen C-Code (z.b. Matlab/Simulink)

5 Einleitung Historisches Warum C? Standards Erste Schritte Standards 1978: Quasistandard durch Ritchie und Kernighan im Buch The C Programming Language 1989: ANSI-C bzw. C : C-99 Nicht von allen Compilern implementiert Nicht einmal gcc unterstützt ihn vollständig Der für verwendete Standard 2011: C-11 $ gcc std=c99 pedantic Wall D_XOPEN_SOURCE=500 \ D_BSD_SOURCE g c filename. c heute: Neuer Quasistandard (zumindest in der Free/OpenSource Welt) durch gcc 1 und gnu extensions Wobei selbst gnu-extensions teilweise nur informell spezifiziert sind LLVM/clang 1 5/60

6 6/60 Hello, C World Einleitung Historisches Warum C? Standards Erste Schritte #include <stdio.h> int main(void) { (void) printf("hello, C World\n"); } return 0;

7 7/60 Einleitung Historisches Warum C? Standards Erste Schritte Kompiliervorgang Source Code muss in Maschinensprache übersetzt werden Code Präprozessor Compiler Linker $ gcc o prog prog. c # a l l e s in einem S c h r i t t $. / prog # Programm starten Einzelschritte (fyi only): Präprozessor: $ gcc E prog. c [.. ] extern i n t p r i n t f ( const char r e s t r i c t format,... ) ; [.. ] Compiler, Linker: $ gcc v o prog prog. c [.. ] <.. >/ cc1 [.. ] prog. c [.. ] o /tmp/ccpmj9ab. s [.. ] as V Qy o /tmp/ccdr6ueb. o /tmp/ccpmj9ab. s [.. ] <.. >/ c ollect2 [.. ] o prog [.. ] crtn. o

8 8/60 Kommentare Einleitung Historisches Warum C? Standards Erste Schritte /* Ich bin ein Kommentar in C-89 */ // Ich einer aus dem C-99-Standard // Ich ende immer am Zeilenende /* mehrere Zeilen sind okay */ Code kommentieren (Funktionen, etc.) strukturieren (einrücken, Zeilenumbrüche, etc.)

9 9/60 Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren Teil II Variablen &

10 10/60 Definition Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren Für Variablen muss Speicherplatz reserviert werden (je nach Datentyp) Name wird festgelegt Das passiert bei der Definition Definition darf nur einmal im Code vorkommen int i; /* Integer Variable i, + Definition */

11 11/60 Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren Variablen haben einen Typ Dieser Typ muss dem Compiler bekannt gemacht werden Bekanntgabe bei der extern int j; /*, Definition wo anders */ darf mehrmals vorkommen Nicht jede ist eine Definition Jede Definition ist eine Oft wird zwischen und Definition nicht unterschieden Es wird für beides der Begriff verwendet

12 12/60 Initialisierung Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren Nachdem eine Variable einen Speicherplatz hat, ist der anfängliche Inhalt noch undefiniert (oder wurde schon zur Compilezeit in einen vorinitialisierten Speicherbereich gelegt) Initialisierung weist der Variablen einen Wert zu Zuweisung erfolgt mit = int k = 23; /* hier mit Initialisierung */

13 13/60 Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren int i; int i, j, k; int i, j = 23, k = 42; /* Korrekt, schlechter Stil */ int i, char b; /* Fehler */ int i; char b; /* Korrekt */

14 14/60 Byte im C99 Standard Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren A byte is composed of a contiguous sequence of bits, the number of which is implementation-defined. ISO/IEC 9899:TC3, Committee Draft September 7, 2007

15 15/60 Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren Ganze Zahlen char: 1 Byte (Byte muss laut Standard nicht 8 Bit lang sein). Wird oft zum Speichern von Zeichen und Strings verwendet short int: Mindestens 16 Bit int: natürliche Größe, meist 32 oder 64 Bit long int: Mindestens 32 Bit long long int: Mindestens 64 Bit. Erst ab C-99. Tatsächliche Größe in <limits.h> ersichtlich Mit C-99 wurden standardisierte Typen eingeführt (<stdint.h>): z.b., uint32_t, int8_t,... Es gibt vorzeichenlose und vorzeichenbehaftete Varianten (zb. signed int, unsigned int) Literale können hexadezimal (0x als präfix) und oktal (0 als präfix) angegeben werden (zb: 0x8, 024)

16 16/60 Fließkommazahlen Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren float: einfache Genauigkeit double: doppelte Genauigkeit long double: erweiterte Genauigkeit Über die interne Darstellung wird im Standard keine Aussage getroffen Kein Unterschied zwischen vorzeichenbehaftet und vorzeichenlos immer vorzeichenbehaftet

17 17/60 Wertebereich Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren Ob eine Variable vorzeichenbehaftet oder vorzeichenlos verwendet wird, entscheidet über ihren Wertebereich. Die gezeigten Wertebereiche sind nicht im Standard spezifiziert, sie dienen der Veranschaulichung. Type signed unsigned char -128 bis bis 255 short int bis bis long int bis 0 bis

18 18/60 sizeof Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren Der Operator sizeof wird zur Ermittelung des Speicherbedarfs verwendet int i; (void) printf("%lu Byte(s)\n", sizeof i); (void) printf("%lu Byte(s)\n", sizeof (int));

19 19/60 Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren #define MYCONST (23) /* oder */ const int i = 23; MYCONST wird vom Präprozessor ersetzt. Erklärung des Präprozessors folgt später const definiert eine typisierte Konstante im Code. Darf/Kann nicht geändert werden

20 20/60 Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren Scope Vor C-99 mussten Variablen am Anfang eines Blocks deklariert werden Variablen sind innerhalb ihres Blocks sichtbar #include <stdio.h> int main(void) { int i = 23, j = 42; { int i; i = 2323; (void) printf("%d, ", i); (void) printf("%d, ", j); } (void) printf("%d\n", i); return 0; } $ 2323, 42, 23

21 21/60 C99 Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren #include <stdio.h> int main(void) { /* i, j nicht am anfang eines blocks */ for (int i = 0; i < 10; ++i) { (void) printf("%d\n", i); int j = 23; (void) printf("%d\n", j); } return 0; }

22 22/60 static Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren static weist einer Variablen einen festen Speicherplatz zu. Sie behält dadurch ihren Zustand Auf eine statische Variable kann von außen (Block oder Datei) nicht zugegriffen werden #include <stdio.h> void foo() { static int i = 23; (void) printf("%d, ", i); i = i + 1; } int main(void) { foo(); foo(); foo(); return 0; } $ 23, 24, 25,

23 23/60 extern Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren Deklariert Variablen, die in einer anderen Datei definiert inc.c sind int g_variable = 1; [..] g_variable++; [..] dec.c extern int g_variable; [..] g_variable--; [..]

24 Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren volatile Variable kann sich außerhalb des Programmkontexts ändern Wichtig für hardwarenahe Programmierung (z.b. Interrupthandler, die Inhalt einer Variablen ändern) (fyi only:) Umsetzung von volatile leider Compiler-abhängig, saubere Lösungen verwenden Memory Barriers 2 volatile char keypressed = ; long count = 0; while (keypressed!= x ) { ++count; } Ohne volatile würde der Compiler die while-schleife zu while(1) optimieren, da sich aus seiner Sicht keypressed nicht ändern kann /60

25 25/60 Beispiel Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren extern const volatile unsigned long int rt_clk; Eine long int Variable ohne Vorzeichen, deren Inhalt man nicht zuweisen kann (von der man aber lesen kann), deren Inhalt sich außerhalb des Programmkontexts ändern kann, die an einer anderen Stelle definiert wird

26 26/60 Increment/Decrement Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren Mit ++ und -- können Variablen um eins erhöht bzw. vermindert werden Präfix (++i) und postfix (i++) sind möglich: Präfix Operator in/dekrementiert, gibt neuen Wert zurück Postfix Operator in/dekrementiert, gibt alten Wert zurück Nach Möglichkeit präfix verwenden (auch im Hinblick auf C++) int n; int m = 0; n = ++m; $ n = 1, m = 1 int n; int m = 0; n = m++; $ n = 0, m = 1

27 Rangfolge/Assoziativität 3 Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren c = sizeof (x) + ++a / 3; c = (sizeof (x) + ((++a) / 3)); a = 5 / 2 * 3; a = (5 / 2) * 3; /* links nach rechts */ i = 3; a = i + i++; /* i == 4, a ==? (laut Standard implementierungsabhaengig!) */ i = 2; a = i i; /*??? */ 3 man operator 27/60

28 28/60 Vergleichsoperatoren & Logische Operatoren Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren Operator Bedeutung < kleiner als > größer als <= kleiner oder gleich >= größer oder gleich!= ungleich == gleich && logisches und logisches oder! Negation und && werden short circuit ausgewertet

29 29/60 Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren Bitweise Operatoren Operator Bedeutung & und oder exklusives oder (xor) Einerkomplement >> Rechs-Shift << Links-Shift x: y: x & y: Für bitweise und arithmetische Operatoren existieren die Versionen Op= (z.b. i += 5 gleichbedeutend mit i = i + 5;)

30 30/60 Shift Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren << und >> zum bitweisen shiften unsigned char i = 7; /* */ i <<= 1; /* */ printf("%d\n", i); /* 14 */ printf("%d\n", 1 << 7); /* 128 == 2 hoch 7 */ Bei vorzeichenbehafteten Variablen mit negativem Wert ist das Verhalten undefiniert. int i = -7; i <<= 1; printf("%d\n", i); /* -14??? undefiniert */

31 31/60 Variablen & Definition Initialisierung Typen Scope Modifikatoren Operatoren unsigned char a, b, c; a = 4; b = 2; /* binär: a = 100, b = 010 */ c = a b; /* c = 6 */ b = a & c; /* b = 4 */ a += 3; /* a = a + 3 = 7 */ b %= 3; /* b = b % 3 = 1 (%.. modulo div) */ b = 0; if ( (b > 0) && ( (a / b) > 5) ) /*... */

32 32/60 Strukturen zur Kontrolle if switch for while/do-while continue/break Teil III Strukturen zur Kontrolle

33 33/60 if Strukturen zur Kontrolle if switch for while/do-while continue/break if (expression) statement else if (expression) statement else if (expression) statement /*... */ else statement In C gilt: 0 ist false, alles andere ist true (z.b. auch -1) Ratschlag: Nie auf die Klammerung von statement-blöcken vergessen/verzichten. Am besten auch einzeilige Statements in {} einschließen

34 Strukturen zur Kontrolle if switch for while/do-while continue/break goto fail; goto fail; Apple s libsecurity_ssl, sslkeyexchange.c: SSLVerifySignedServerKeyExchange (.. ).. i f ( ( err = SSLHashSHA1. update(&hashctx, &signedparams ) )!= 0) goto f a i l ; goto f a i l ; i f ( ( err = SSLHashSHA1. f i n a l (&hashctx, &hashout ) )!= 0) goto f a i l ;.. f a i l : SSLFreeBuffer(&signedHashes ) ; SSLFreeBuffer(&hashCtx ) ; return err ; Quellen: Security-55471/libsecurity_ssl/lib/sslKeyExchange.c 10_9_2_ssl/ Dank an Roland Kammerer für dieses Fall-Beispiel! 34/60

35 35/60 goto fail; goto fail; Strukturen zur Kontrolle if switch for while/do-while continue/break

36 Strukturen zur Kontrolle if switch for while/do-while continue/break goto fail; goto fail; Bitte auf Verwendung von goto in den regulären n verzichten. Negativbeispiel: #include <stdio.h> int main(void) { int i = 0; loopstart: ++i; if(i >= 5) goto printnum; contloop: if (i < 9) goto loopstart; goto end; printnum: (void) printf("i is %d\n", i); goto contloop; end: return 0; } 36/60

37 37/60 switch Strukturen zur Kontrolle if switch for while/do-while continue/break switch (expression) { case const-expr: statements case const-expr: statements /*... */ default: statements } Es dürfen nur als Vergleichswert verwendet werden Man sollte einen case immer mit break abschließen, sonst rutscht man in den nächsten case (siehe am Ende) Es sollte immer ein default case vorhanden sein

38 38/60 for Strukturen zur Kontrolle if switch for while/do-while continue/break for (expression1; expression2; expression3) statement Alle drei Expressions sind optional. Normalfall: expression1: Initialisierung des Zählers expression2: Überprüfung ob die Schleife fortgesetzt werden soll expression3: Den Zähler erhöhen

39 39/60 while/do-while Strukturen zur Kontrolle if switch for while/do-while continue/break while (expression) statement do statement while (expression); Bei do-while wird statement zumindest einmal ausgeführt

40 40/60 continue/break Strukturen zur Kontrolle if switch for while/do-while continue/break continue setzt beim nächsten Schleifendurchlauf der innersten Schleife fort for-schleife: expression3 wird ausgeführt, expression2 wird überprüft break verläßt die innerste Schleife und setzt nach ihr fort for-schleife: expression3 wird nicht mehr ausgeführt

41 41/60 Strukturen zur Kontrolle if switch for while/do-while continue/break int i; for (i = 0; i < 10; ++i) { (void) printf("hallo\n"); } switch (input) { case a : case A : (void) printf("a oder A\n"); break; default: (void) printf("fehler"); break; } i = 23; if (i == 42) { (void) printf("i ist 42\n"); }

42 42/60 Arrays Eindimensional Mehrdimensional Initialisierung Strings Teil IV Arrays

43 43/60 Eindimensional Arrays Eindimensional Mehrdimensional Initialisierung Strings Arrays werden zum Zusammenfassen von verwandten Werten gleichen Typs verwendet Typ Name[Größe]; int myarray[8]; myarray bietet Platz für 8 Integer Variablen Index von 0 bis 7 myarray[8] out-of-bounds

44 44/60 Mehrdimensional Arrays Eindimensional Mehrdimensional Initialisierung Strings Arrays können mehrere Dimensionen haben In C eigentlich syntactic sugar int myarray[2][3]; int myarray2[2][3][4];

45 45/60 Initialisierung Arrays Eindimensional Mehrdimensional Initialisierung Strings int myarr[2][3]= { {1,2,3}, {4,5,6}, }; int myarr2[2][3] = {1,2,3,4,5,6}; /* erste Version ist vorzuziehen */ int myarr3[] = {1, 2, 3, 4}; /* bei vollständiger Initialisierung kann die Größe weggelassen werden */

46 46/60 Strings Arrays Eindimensional Mehrdimensional Initialisierung Strings Strings sind in C Arrays von Zeichen (chars) Strings sind per Definition immer \0 terminiert. Essentiell für Funktionen die mit Strings arbeiten. Sie erkennen so das Ende eines Strings char string[] = "hallo, welt"; /* string is auto \0 terminated */ char s[6]; s[0] = h ; s[1] = a ; s[2] = l ; s[3] = l ; s[4] = o ; s[5] = \0 ; char str[] = { f, o, o, b, a, r, \0 }; (void) printf("%s\n", s); /* prints "hallo" */ s[3] = \0 ; (void) printf("%s\n", s); /* prints "hal" */

47 47/60 Funktionen Definition Globale und lokale Variablen Teil V Funktionen

48 48/60 Funktionen Definition Globale und lokale Variablen Definition von Funktionen Rückgabetyp Funktionsname(Parameterliste) { Anweisungen } Dienen der Lesbarkeit, Wiederverwendbarkeit und Wartbarkeit Müssen vor ihrer Verwendung bekannt gemacht werden int add(int a, int b) { return a + b; } int main(void) { int i; i = add(2, 3); /* i == 5 */ return 0; }

49 49/60 Funktionen Definition Globale und lokale Variablen Prototypen Wie bei Variablen wird zwischen Definition und unterschieden Ein Prototyp stellt eine dar und wird mit ; abgeschlossen /* Prototyp */ int add(int a, int b); /* int add(int x, int v); genau so gültig */ /* int add(int, int); ebenfalls OK */ /* int add(double, int); Falsch, später anderer Typ */ int main(void) { int i; i = add(2, 3); /* i == 5 */ return 0; } /* jetzt darf add nach dem Aufruf definiert werden */ int add(int a, int b) { return a + b; }

50 50/60 Global vs. lokal Funktionen Definition Globale und lokale Variablen Lokale Variablen sind nach dem Verlassen ihrer Funktion/ihres Blocks nicht mehr sichtbar Globale Variablen (außerhalb von Funktionen deklariert, meist am Anfang des Sourcecodes) behalten ihre Gültigkeit bis zum Ende des Programms Lokale Variablen überdecken globale Variablen Lokale Variablen beinhalten beim Deklarieren einen zufälligen Wert Globale Variablen werden in einen Speicherbereich abgelegt der mit 0 initialisiert ist

51 51/60 Funktionen Definition Globale und lokale Variablen int i; int j = 23; void foo() { int j = 42; (void) printf("%d\n", j); /* 42 */ } int main(void) { int k; (void) printf("%d\n", j); /* 23 */ foo(); (void) printf("%d\n", i); /* 0 */ (void) printf("%d\n", k); /* 1863 (zufällig) */ return 0; }

52 52/60 Pointer Allgemeines Speicherlayout Arithmetik man-pages Gefahren Teil VI Pointer

53 53/60 Allgemeines Pointer Allgemeines Speicherlayout Arithmetik man-pages Gefahren In C müssen Variableninhalte nicht über ihren Namen angesprochen werden Dies kann auch mit Pointern geschehen Pointer sind keine black magic, sie sind Variablen wie andere Variablen auch Unterschied: In ihnen ist eine Adresse gespeichert Wichtig für hardwarenahe Programmierung (Geschwindigkeitsvorteil) Leider auch extrem fehleranfällig Aber die coolen neuen Sprachen haben gar keine Pointer!! : Falsch, sie verstecken sie nur vor dem Programmierer/der Programmiererin

54 54/60 Pointer Allgemeines Speicherlayout Arithmetik man-pages Gefahren Pointer werden mit Typ *name deklariert Es wird nicht Speicher für eine Variable des Typs Typ alloziert, sondern ein Speicherbereich für den Typ Typ *, in dem eine Adresse gespeichert werden kann. Auf den Inhalt auf den ein Pointer zeigt, greift man mit dem Dereferenzierungsoperator * zu Auf die Adresse einer Variable greift man mit dem Adressoperator & zu int *p; /* ich bin ein pointer */ int* q; /* ich auch */ int* a, b; /* a ist ein pointer b aber _nicht_ */ int *a, b; /* a ja, b nein */ int *a, *b; /* a und b sind Pointer */

55 55/60 Pointer Allgemeines Speicherlayout Arithmetik man-pages Gefahren Speicherlayout int *a; int b = 17; a = &b; (void) printf("inhalt b: %d\n", b); /* 17 */ (void) printf("adresse b: %p\n", &b); /* 1462 */ (void) printf("inhalt a: %p\n", a); /* 1462 */ (void) printf("inhalt auf den a zeigt: %d\n", *a); /* 17 */ (void) printf("adresse von a: %p\n", &a); /* 874 */

56 56/60 Einfache Pointerarithmetik Pointer Allgemeines Speicherlayout Arithmetik man-pages Gefahren int ar[5] = {1, 2, 3, 4, 5}; int *p; p = &ar[0]; /* oder */ p = ar; /* ar ist kein Pointer, nur die Adresse! */ (void) printf("%d\n", *p); /* 1 */ *p += 22; (void) printf("%d\n", ar[0]); /* 23 */ p += 1; /* Pointer zeigt auf das naechste Element */ (void) printf("%d\n", *p); /* 2 */

57 57/60 Pointer und man Pointer Allgemeines Speicherlayout Arithmetik man-pages Gefahren $ man strcpy /* Ausgabe von "man strcpy" */ char *strcpy(char *dest, const char *src); /* mein C Code */ char *mysrc = "mystring"; char *mydest = /* momentan egal. Annahme: es ist genug Speicher vorhanden*/ (void) strcpy(mydest, mysrc); /*? */ /* oder doch eher */ (void) strcpy(*mydest, *mysrc); /*? */ man-page liest man so: strcpy will Variablen in denen Adressen stehen (*dest, *src). Wo steht die Adresse? In den Pointern, also muss man sie nicht dereferenzieren. (void) strcpy(mydest, mysrc)

58 Gefahren von Pointern Pointer Allgemeines Speicherlayout Arithmetik man-pages Gefahren Pointerarithmetik kann gefährlich werden wenn man nicht mit der nötigen Sorgfalt arbeitet Achtung: Null-Pointer-Dereferencing war 2009 das häufigste Sicherheitsproblem bei Red Hat 4 int ar[5] = {1, 2, 3, 4, 5}; int *p = &ar[0]; /* so sicher nicht! */ p += 23; /* möglicherweise ein Problem */ (void) printf("%d\n", *p); /* FAIL */ p = NULL; (void) printf("%d\n", *p); /* FAIL */ /60

59 59/60 Material Teil VII Material

60 60/60 Material Material C Programming Language - Kernighan & Ritchie Ausblick Präprozessor, Makros typedefs, structs, unions, casts, inline, void Speicherlayout, Alignment modulare Programmierung (extern, Header Dateien,... ) Funktionen und Pointer (als Argumente und return-wert), Funktionspointer

Einführung in C. Kammerer. Einführung in C. Roland Kammerer. Institut für Technische Informatik Technische Universität Wien. 3. & 4.

Einführung in C. Kammerer. Einführung in C. Roland Kammerer. Institut für Technische Informatik Technische Universität Wien. 3. & 4. Einführung in C Roland Institut für Technische Informatik Technische Universität Wien 3. & 4. Oktober 2011 Einleitung Historisches Warum C? Standards Erste Schritte Teil I Einleitung Historisches Einleitung

Mehr

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Grundlagen. Die Komponenten eines C Programms. Das erste Programm Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff Programmieren in C C Syntax Datentypen, Operatoren und Kontrollstrukturen Prof. Dr. Nikolaus Wulff Elementare Typen Imperative und objektorientierte Programmiersprachen bieten i.d.r. einen Satz elementarer

Mehr

Computergrundlagen Programmieren in C

Computergrundlagen Programmieren in C Computergrundlagen Programmieren in C Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2013/14 Die Sprache C D. M. Ritchie, 1941 2011 Entwickelt 1971-1973 aktueller Standard:

Mehr

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale

Mehr

[E-1] Wolf, Jürgen: C von A bis Z. Galileo Computing, 3. Auflage, 2009 http://download2.galileo-press.de/openbook/galileocomputing_c_von_a_bis_z.

[E-1] Wolf, Jürgen: C von A bis Z. Galileo Computing, 3. Auflage, 2009 http://download2.galileo-press.de/openbook/galileocomputing_c_von_a_bis_z. Literatur [E-1] Wolf, Jürgen: C von A bis Z. Galileo Computing, 3. Auflage, 2009 http://download2.galileo-press.de/openbook/galileocomputing_c_von_a_bis_z.zip [E-2] M.K. Johnson, E.W. Troan: Anwendungen

Mehr

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B. C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von

Mehr

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff Programmieren in C Operatoren, Variablen und deren Sichtbarkeit Prof. Dr. Nikolaus Wulff Auswertung von Ausdrücken Was passiert wenn ein Ausdruck wie z. B. int y,x=2; y = ++x * x++; im Computer abgearbeitet

Mehr

Moderne C-Programmierung

Moderne C-Programmierung Xpert.press Moderne C-Programmierung Kompendium und Referenz Bearbeitet von Helmut Schellong 1. Auflage 2005. Buch. xii, 280 S. ISBN 978 3 540 23785 3 Format (B x L): 15,5 x 23,5 cm Weitere Fachgebiete

Mehr

C Überlebenstraining

C Überlebenstraining C Überlebenstraining Dies ist nur ein Schnellkurs in C, der genug Einstiegswissen vermitteln soll, daß weiterführende Literatur schnell benutzt werden kann. Dies ist kein vollständiger Programmier oder

Mehr

Hello world. Sebastian Dyroff. 21. September 2009

Hello world. Sebastian Dyroff. 21. September 2009 Hello world Sebastian Dyroff 21. September 2009 1 / 35 Inhaltsverzeichnis Organisatorisches Hello World Typen und Operatoren Programmfluss Weitere Konstrukte Nützliche Tipps 2 / 35 Inhalte dieser Veranstaltung

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

MIKROPROZESSOR PROGRAMMIERUNG 8. VORLESUNG. LV-Nr. 439.026 SS2007 1 INSTITUT FÜR ELEKTRONIK BIT

MIKROPROZESSOR PROGRAMMIERUNG 8. VORLESUNG. LV-Nr. 439.026 SS2007 1 INSTITUT FÜR ELEKTRONIK BIT MIKROPROZESSOR PROGRAMMIERUNG 8. VORLESUNG BIT LV-Nr. 439.026 SS2007 1 Datendefinitionen b) Unterteilung nach Typen: (Teil 2) void leer Pointer 2/4 Bytes Adresse von Objekten Arrays bei allen Datentypen

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Zusammenfassung des Handzettels für Programmieren in C

Zusammenfassung des Handzettels für Programmieren in C Zusammenfassung des Handzettels für Programmieren in C In der handschriftlichen Kopie werden mehr Abkürzungen verwendet. Alles Grün markierte dient zum lernen und wird nicht auf den Handzettel übertragen.

Mehr

Grundlagen von C. Ausarbeitung von Jonas Gresens

Grundlagen von C. Ausarbeitung von Jonas Gresens Grundlagen von C Ausarbeitung von Jonas Gresens 1 Allgemein Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und

Mehr

Modellierung und Programmierung

Modellierung und Programmierung Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben

Mehr

Organisatorisches. Einführung in die Programmierung in C Hochschule Regensburg 13.03.2012.-13.07.2012 Universitätsstraße 31, 93053 Regensburg

Organisatorisches. Einführung in die Programmierung in C Hochschule Regensburg 13.03.2012.-13.07.2012 Universitätsstraße 31, 93053 Regensburg Organisatorisches Einführung in die Programmierung in C Hochschule Regensburg 13.03.2012.-13.07.2012 Universitätsstraße 31, 93053 Regensburg Prof. Dr. Jan Dünnweber Wenn Sie kommen...... kommen Sie pünktlich

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

DAP2-Programmierpraktikum Einführung in C++ (Teil 1) DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume

Mehr

Programmieren in C. -- ALLE Programmiersprachen sind HÄSSLICH -- Deklaration: erst der Datentyp, dann der Variablenname. Semikolon am Ende.

Programmieren in C. -- ALLE Programmiersprachen sind HÄSSLICH -- Deklaration: erst der Datentyp, dann der Variablenname. Semikolon am Ende. PROGRAMMIEREN IN C - EIN KURZÜBERBLICK 1 Programmieren in C -- ALLE Programmiersprachen sind HÄSSLICH -- Die einfachste Programmstruktur: main () -- was zu tun ist --- Vorgeordnete Definitionen: # include

Mehr

L6. Operatoren und Ausdrücke

L6. Operatoren und Ausdrücke L6. Operatoren und Ausdrücke 1. Arithmetische Operatoren: +, -, *, /, %, --, ++ 2. Zuweisung-Operatoren: =, +=, -=, *=, /= 3. Vergleichsoperatoren: =, ==,!= 4. Logische Operatoren:!, &&, 5.

Mehr

C-Programming Hands-on

C-Programming Hands-on C-Programming Hands-on Teil 1 Sebastian Meisner, sebastian.meisner@upb.de Fachgebiet Technische Informatik 1 Schnelleinführung in C Einführung Zeiger Häufige Stolpersteine Aufgaben Inhalt dieser Hands-on

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Einführung in die Programmiersprache C und in den C166-Compiler

Einführung in die Programmiersprache C und in den C166-Compiler Einführung in die Programmiersprache C und in den C166-Compiler Die vorliegenden Unterlagen sollen einen kurzen Überblick über die Software-Entwicklung in C geben. Diese Unterlagen erheben keinen Anspruch

Mehr

Propädeutikum. Dipl.-Inf. Frank Güttler

Propädeutikum. Dipl.-Inf. Frank Güttler Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik

Mehr

C++-Zusammenfassung. H. Schaudt. August 18, 2005

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

Mehr

Vorlesung 2: Programmieren mit C

Vorlesung 2: Programmieren mit C Vorlesung 2: Programmieren mit C URL zur Lehrveranstaltung http://www.fbmnd.fh-frankfurt.de/~raimann Folien zur Vorlesung, Übungsaufgaben,... Dr. J. Raimann 1 Dev C++ Kostenlose C/C++-Entwicklungsumgebung

Mehr

2 Einfache Rechnungen

2 Einfache Rechnungen 2 Einfache Rechnungen 2.1 Zahlen Computer, auch bekannt als Rechner, sind sinnvoller eingesetzt, wenn sie nicht nur feste Texte ausgeben, sondern eben auch rechnen. Um das Rechnen mit Zahlen zu verstehen,

Mehr

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden:

Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden: 3 Grundlagen 3.1 Starten eines C++ Programms Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden: 1. Programme, die vom Interpreter der Programmiersprache Zeile für Zeile interpretiert

Mehr

Die Programmiersprache C

Die Programmiersprache C Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Numerische Datentypen. Simon Weidmann

Numerische Datentypen. Simon Weidmann Numerische Datentypen Simon Weidmann 08.05.2014 1 Ganzzahlige Typen 1.1 Generelles Bei Datentypen muss man immer zwei elementare Eigenschaften unterscheiden: Zuerst gibt es den Wertebereich, zweitens die

Mehr

Einfache Rechenstrukturen und Kontrollfluss II

Einfache Rechenstrukturen und Kontrollfluss II Einfache Rechenstrukturen und Kontrollfluss II Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.informatik.uni-muenchen.de/lehre/ss06/infoii/ SS 06 Ziele Lernen imperative

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 11 Dynamische Feldvereinbarung... 11-2 11.1 Dynamische Vereinbarung von Vektoren... 11-3 11.2 Dynamische Vereinbarung von Matrizen... 11-5 11.3 Die Kommandozeile... 11-8 Propädeutikum 11-1/8 11

Mehr

C/C++ Programmierung

C/C++ Programmierung 1 C/C++ Programmierung Grundlagen: Anweisungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Anweisungen (Statements)

Mehr

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper Python Programmierung Kontaktdaten Homepage: http://wwwlehre.dhbw-stuttgart.de/~schepper/ Email: Volker. Schepper [A@T] yahoo.de Vorlesung Skriptsprachen Vorlesung: 06.03.2013 13.03.2013 20.03.2013 27.03.2013

Mehr

HEUTE. Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: Was ist Effizienz? vollständige Induktion

HEUTE. Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: Was ist Effizienz? vollständige Induktion 17.11.04 1 HEUTE 17.11.04 3 Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: was ist Effizienz? vollständige Induktion JAVA: Arrays die for -Schleife die Sprunganweisungen break und continue

Mehr

Microcontroller Kurs Programmieren. 09.10.11 Microcontroller Kurs/Johannes Fuchs 1

Microcontroller Kurs Programmieren. 09.10.11 Microcontroller Kurs/Johannes Fuchs 1 Microcontroller Kurs Programmieren 9.1.11 Microcontroller Kurs/Johannes Fuchs 1 General Purpose Input Output (GPIO) Jeder der Pins der vier I/O Ports kann als Eingabe- oder Ausgabe-leitung benutzt werden.

Mehr

Lösungsvorschlag zur 9. Übung

Lösungsvorschlag zur 9. Übung Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zur 9. Übung 1 Präsenzübungen 1.1 Schnelltest a) Welche der folgenden Aussagen über

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Objective-C CheatSheet

Objective-C CheatSheet App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController

Mehr

Technische Infor matik 2 C/C++-Kurs. Pointer und Arrays. 2007 AG Rechner netze 2.1

Technische Infor matik 2 C/C++-Kurs. Pointer und Arrays. 2007 AG Rechner netze 2.1 Technische Infor matik 2 C/C++-Kurs Pointer und Arrays 2007 AG Rechner netze 2.1 Pointer in C Pointer (Zeiger) Wichtiges Konzept in C/C++ InJava versteckt Umdenken erforder lich AmAnfang durchaus schwierig

Mehr

Kompaktkurs C-Programmierung

Kompaktkurs C-Programmierung Kompaktkurs C-Programmierung 26. 03. 2007 Franz Schenk Organisatorisches Vorlesung Accountvergabe Skriptverkauf Übungen: zwei Blöcke (13:15-14:45 / 14:45-16:15) Gruppenübung Rechnerübung Klausur Ferien:

Mehr

Prinzipieller Grundaufbau eines einfachen C-Programmes

Prinzipieller Grundaufbau eines einfachen C-Programmes Prinzipieller Grundaufbau eines einfachen C-Programmes C unterscheidet zwischen Groß- und Kleinschreibung! Siehe zu den folgenden Erklärungen auch das Programm am Ende der nächsten Seite. Am Anfang aller

Mehr

Übersicht. Race Conditions Buffer Overflows Heap Overflows Exkurs: Stackaufbau bei Intel x86 Exkurs: Shellcode Stack Overflows

Übersicht. Race Conditions Buffer Overflows Heap Overflows Exkurs: Stackaufbau bei Intel x86 Exkurs: Shellcode Stack Overflows Übersicht Race Conditions Buffer Overflows Heap Overflows Exkurs: Stackaufbau bei Intel x86 Exkurs: Shellcode Stack Overflows Integer Overflows Format-String-Angriffe (SQL) Injection Cross Site Scripting

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Eine Einführung in C-Funktionen

Eine Einführung in C-Funktionen Eine Einführung in C-Funktionen CGK-Proseminar 2014 Philip Gawehn 04.07.2014, Hamburg Inhaltsverzeichnis 1 Einleitung 2 2 Grundlagen 2 2.1 Der Aufbau einer Funktion....................... 2 2.2 Schlüsselwörter.............................

Mehr

Einführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian

Einführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian Einführung in die Programmierung Arvid Terzibaschian 1 Arrays 2 Arrays: Motivation Gegeben: monatliche Durchschnittstemperaturen der letzten 5 Jahre Gesucht: Mittelwerte für Jahre, Monate, Jahreszeiten,

Mehr

Grundlagen der Programmierung in C Basics

Grundlagen der Programmierung in C Basics Grundlagen der Programmierung in C Basics Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Was ist ein Programm? Abstrakt: Zeichenfolge entsprechend einer formalen

Mehr

Kontrollstrukturen. Bedingter Ablauf: if. Bedingter Ablauf: if-else

Kontrollstrukturen. Bedingter Ablauf: if. Bedingter Ablauf: if-else Kontrollstrukturen 1. Bedingter Ablauf: if, if-else 2. Blöcke von Code 3. Wiederholungsschleife: for mit Inkrement und Dekrement Operatoren 4. erweiterte Eigenschaften von printf() 5. Die relationalen

Mehr

Datentypen: Enum, Array, Struct, Union

Datentypen: Enum, Array, Struct, Union Datentypen: Enum, Array, Struct, Union C-Kurs 2013, 2. Tutorium Freitagsrunde http://wiki.freitagsrunde.org 10. September 2013 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for

Mehr

Kurzeinführung in C. Johannes J. Schneider 27.10.2004

Kurzeinführung in C. Johannes J. Schneider 27.10.2004 Kurzeinführung in C Johannes J. Schneider 27.10.2004 1 Einleitung C ist eine in vielen Bereichen sehr häufig verwendete Programmiersprache, die von der Betriebssystemprogrammierung bis hin zur Programmierung

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

4. Datentypen. Einleitung Eingebaute Datentypen. Konversion / Type-Cast. Operatoren. Übersicht Die Datentypen char, float und double Standardwerte

4. Datentypen. Einleitung Eingebaute Datentypen. Konversion / Type-Cast. Operatoren. Übersicht Die Datentypen char, float und double Standardwerte 4. Datentypen Einleitung Eingebaute Datentypen Übersicht Die Datentypen char, float und double Standardwerte Konversion / Type-Cast Datentyp von Literalen Operatoren Ausdrücke Allgemeine Informatik 2 SS09

Mehr

1.4.12 Sin-Funktion vgl. Cos-Funktion

1.4.12 Sin-Funktion vgl. Cos-Funktion .4. Sgn-Funktion Informatik. Semester 36 36.4.2 Sin-Funktion vgl. Cos-Funktion Informatik. Semester 37 37 .4.3 Sqr-Funktion Informatik. Semester 38 38.4.4 Tan-Funktion Informatik. Semester 39 39 .5 Konstanten

Mehr

Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Teil 1: Wiederholung C Heutige Agenda Nutzereingaben verarbeiten Teil 2: Grundlagen in C++ Erstes

Mehr

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean 01.11.05 1 Noch für heute: 01.11.05 3 primitie Datentypen in JAVA Primitie Datentypen Pseudocode Name Speichergröße Wertgrenzen boolean 1 Byte false true char 2 Byte 0 65535 byte 1 Byte 128 127 short 2

Mehr

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

Mehr

C/C++ Programmierung

C/C++ Programmierung 1 C/C++ Programmierung Verbunde, Reihungen, Zeiger Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Typen 6.2.5 Primitive

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

Fortgeschrittene C++-Programmierung

Fortgeschrittene C++-Programmierung Vorlesung: "Fortgeschrittene C++-Programmierung" 16.04.2009 Fortgeschrittene C++-Programmierung SS 2009 Teil 1 Sandro Andreotti - andreott@inf.fu-berlin.de 1 Vorlesung: "Fortgeschrittene C++-Programmierung"

Mehr

Zahlendarstellung Logikfunktionen Register Eingänge Infrarot senden TSOP-Effekte Weiterführendes U23 2008. Abend 3:

Zahlendarstellung Logikfunktionen Register Eingänge Infrarot senden TSOP-Effekte Weiterführendes U23 2008. Abend 3: #2 Abend 3: Alexander Neumann e.v. http://koeln.ccc.de Köln, 3.11.2008 Gliederung 1 Zahlendarstellung n-adische Darstellung natürlicher Zahlen negative Zahlen 2 Logikfunktionen 3 Register

Mehr

Programmieren in C. -- ALLE Programmiersprachen sind HÄSSLICH. -- Deklaration: erst der Datentyp, dann der Variablenname. Semikolon am Ende.

Programmieren in C. -- ALLE Programmiersprachen sind HÄSSLICH. -- Deklaration: erst der Datentyp, dann der Variablenname. Semikolon am Ende. PROGRAMMIEREN IN C - EIN KURZÜBERBLICK 1 Die einfachste Programmstruktur: main () -- was zu tun ist --- Vorgeordnete Definitionen: Programmieren in C -- ALLE Programmiersprachen sind HÄSSLICH. -- #include

Mehr

Informatik: Abschnitt 4

Informatik: Abschnitt 4 Informatik: Abschnitt 4 Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit

Mehr

Übersicht. C Funktionen. Funktion main. Funktionen. Funktionsdefinition und und Funktionsaufruf Deklaration von Funktionen

Übersicht. C Funktionen. Funktion main. Funktionen. Funktionsdefinition und und Funktionsaufruf Deklaration von Funktionen Übersicht Funktionsdefinition und und Funktionsaufruf Deklaration von Funktionen C Funktionen Gültigkeitsbereich und Speicherklasse Parameterübergabe Rückgabe des Funktionsresultats Mehr zu Funktionen

Mehr

Kurzeinführung in C++

Kurzeinführung in C++ Kurzeinführung in C++ Johannes J. Schneider 27.10.2004 1 Einleitung C++ ist eine heutzutage in vielen Bereichen sehr häufig verwendete Programmiersprache, die auf der Programmiersprache C aufsetzt, aber

Mehr

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Der Anfänger sollte nicht entmutigt sein, wenn er nicht die Voraussetzungen besitzt, um die Voraussetzungen zu verstehen...

Mehr

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek Proseminar C-Programmierung Strukturen Von Marcel Lebek Index 1. Was sind Strukturen?...3 2. Padding 5 3. Vor- und Nachteile von Padding..8 4. Padding gering halten 9 5. Anwendungsgebiete von Strukturen.11

Mehr

Übersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C:

Übersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C: Übersicht Einführung in die Programmierung Bachelor of Science die -Funktion Prof. Dr. Rethmann Fachbereich Elektrotechnik und Informatik Hochschule Niederrhein WS 009/0 Einführung in die Programmierung

Mehr

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Operatoren? Ein Operator ist eine in die Programmiersprache eingebaute Funktion,

Mehr

Fallunterscheidung: if-statement

Fallunterscheidung: if-statement Fallunterscheidung: if-statement A E 1 E 2 V 1 V 2 Syntax: if ( ausdruck ) Semantik: else anweisungsfolge_1 anweisungsfolge_2 1. Der ausdruck wird bewertet 2. Ergibt die Bewertung einen Wert ungleich 0

Mehr

C++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen

C++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen C++ Kurs Teil 1 "hello world" Vergleich von C++ und Java Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen C++ Spezialitäten Schlüsselwort 'const', Copy Constructor,

Mehr

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Compiler: Vom Code zum Maschinen-Code C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Prof. Dr. Jan Dünnweber Zusammenhänge: C und Assembler Hochsprachen

Mehr

Kapitel 3. Mein erstes C-Programm

Kapitel 3. Mein erstes C-Programm Kapitel 3 Mein erstes C-Programm 1 Gliederung Kapitel 3 Mein erstes C-Programm 3.1 Einleitung 3.2 Mein erstes C-Programm 3.3 Zusammenfassung 2 Problem Algorithmus Mittelwert für Messwerte berechnen DGL

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6

Mehr

Selber Programmieren

Selber Programmieren Selber Programmieren Wenn es für ein Problem keine fertige Lösung gibt, oder wenn man keine fertige Lösung finden kann, dann muss man sich das benötigte Werkzeug selbst herstellen: Ein eigenes Programm

Mehr

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte

Mehr

Übung 9 - Lösungsvorschlag

Übung 9 - Lösungsvorschlag Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe

Mehr

C Grundlagen. Die Zunahme von integrierter Software innerhalb elektronischer Geräte bedingt enorme Entwicklungskosten.

C Grundlagen. Die Zunahme von integrierter Software innerhalb elektronischer Geräte bedingt enorme Entwicklungskosten. C Grundlagen Die Zunahme von integrierter Software innerhalb elektronischer Geräte bedingt enorme Entwicklungskosten. Häufigste Programmiersprache für embedded systems ist Assembler. Ihr Vorteil ist, dass

Mehr

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen

Mehr

Multimedia im Netz Wintersemester 2011/12

Multimedia im Netz Wintersemester 2011/12 Multimedia im Netz Wintersemester 2011/12 Übung 01 Betreuer: Verantwortlicher Professor: Sebastian Löhmann Prof. Dr. Heinrich Hussmann Organisatorisches 26.10.2011 MMN Übung 01 2 Inhalte der Übungen Vertiefung

Mehr

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken Im Folgenden finden Sie jeweils die korrekte Antwort zu den im Buch abgedruckten Prüfungsfragen, soweit die Antworten in Textform

Mehr

Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen

Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik R.

Mehr

C-Programmierung: Druckversion

C-Programmierung: Druckversion C-Programmierung: Druckversion 1 C-Programmierung: Druckversion Vorwort C Programmierung Wikibooks Dieses Buch hat sich zum Ziel gesetzt, den Anwendern eine Einführung in C zu bieten, die noch keine oder

Mehr

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Lösung der Aufgaben (1/2) Lösung Aufgabe

Mehr