Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

Größe: px
Ab Seite anzeigen:

Download "Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften"

Transkript

1 Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 5: Funktionen, Gültigkeitsbereiche und Rekursion Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg i. Br. Vorlesung vom 23. Mai 2016

2 Motivation: Binomialkoeffizienten Gegeben seien Zahlen n, k N mit k n. Der Binomialkoeffizient n über k ( n n! = k) k! (n k)! entspricht der Anzahl der k-elementigen Teilmengen einer Menge mit n Elementen. Um dies direkt zu berechnen, muss die Fakultät 3 mal ausgewertet werden: int fac_n = 1; for(int i = 2; i <= n; i = i+1) fac_n = fac_n * i; Allerdings wollen wir diese Schleife nicht 3 mal schreiben müssen.

3 Motivation: Binomialkoeffizienten Stattdessen schreiben wir eine Funktion für die Fakultät: int fac ( int n ) int fac_n = 1; for(int i = 2; i <= n; i = i+1) fac_n = fac_n * i; return fac_n; Unser Binomialkoeffizient könnte dann wie folgt aussehen: int nk = fac( n ) / (fac( k ) * fac( n - k ));

4 Inhalt Funktionen Die Funktion main Gültigkeitsbereiche Rekursive Funktionen Beispiel: Ein kleiner Taschenrechner

5 Funktionen Funktionen berechnen aus ihren Argumenten ein Ergebnis, den Rückgabewert. Funktionen können mehrfach und überall im Programm aufgerufen. Die Typen von Rückgabewert und Argumenten bilden den Prototyp der Funktion. Syntax: type 0 identifier 0 ( type 1 identifier 1,..., type n identifier n ) type 0 Typ der Rückgabewertes identifier 0 Name der Funktion type i Typ des i-ten Arguments identifier i Name es i-ten Arguments Die Argumentenliste kann auch leer sein.

6 Definition von Funktionen Eine Funktion wird definiert durch ihren Prototypen gefolgt von einem Anweisungsblock. Syntax: type 0 identifier 0 ( type 1 identifier 1,..., type n identifier n ) statement... Beispiel: int fac ( int n ) int fac_n = 1; for( int i = 2; i <= n; i = i + 1 ) fac_n = fac_n * i; return fac_n;

7 Die return-anweisung Syntax: return expression ; expression Ausdruck für den Rückgabewert Semantik: Verlasse die Funktion und gebe den Wert des Ausdrucks zurück. Der Typ des Ausdrucks muss mit dem Typ des Rückgabewertes der Funktion übereinstimmen. Ist Typ des Rückgabewertes void, muss der Ausdruck leer sein. Hinweis: Im Fall der Funktion main wird das Programm beendet.

8 Funktionsaufrufe Funktionsaufrufe sind elementare Ausdrücke. Syntax: identifier ( expression 1,..., expression n ) identifier Name der Funktion expression i Ausdruck für das i-te Funktionsargument Semantik: Rufe die Funktion mit den angegebenen Werten auf. Typ: Rückgabetyp der Funktion identifier. Wert: Rückgabewert der Funktion identifier. Die Typen der Ausdrücke müssen zu den Typen der Argumente im Funktionsprototypen passen. Achtung: Die Auswertungsreihenfolge der Argumente ist implementierungsabhängig.

9 Deklaration von Funktionen Funktionen müssen bekannt sein, bevor sie benutzt werden. Beispiel: 1 #include <stdio.h> 2 3 int print main () 4 5 printf( "The factorial of %d is %d", n, fac( n ) ); int fac ( int n ) 9 10 int fac_n = 1; 11 for( int i = 2; i <= n; i = i + 1 ) 12 fac_n = fac_n * i; 13 printf( "The factorial of %d is %d", n, fac_n ); 14 return fac_n; 15 Falsch: Zum Zeitpunkt des Aufrufes ist der Prototyp der Funktion fac unbekannt.

10 Deklaration von Funktionen Wir können dem Compiler eine Funktion bekannt geben, indem wir sie deklarieren. Dazu schreiben wir den Prototypen der Funktion gefolgt von einem Semikolon. Syntax: type 0 identifier 0 ( type 1 identifier 1,..., type n identifier n ) ; Beispiel: int fac ( int n );

11 Implizite Deklaration von Funktionen Historisch mussten Funktionen nicht vor Benutzung deklariert werden: Sie wurden dann bei der ersten Verwendung implizit deklariert. Die Typen der Argumente kann der Compiler aus dem Aufruf ermitteln. Der Rückgabetyp wurde auf int festgelegt. Sie können zu zu schwer auffindbaren Fehlern führen. Seit C99 sind implizite Funktionsdeklarationen verboten. Warnung: Viele moderne Compiler (z.b. gcc Version 5) akzeptieren sie trotzdem. Sie geben lediglich eine Warnung aus.

12 Seiteneffekte Funktionen können Seiteneffekte haben. Beispiel: int fac ( int n ) int fac_n = 1; for( int i = 2; i <= n; i = i + 1 ) fac_n = fac_n * i; printf( "%d! = %d.\n", n, fac_n ); return fac_n; Hier wird bei jeder Berechnung das Ergebnis zusätzlich ausgegeben. Eine Funktion hat einen Seiteneffekt (engl. side effect), wenn Sie den Zustand des Programms verändert. Eine Funktion ohne Seiteneffekte heißt pur (engl. pure). In C gibt es keine Möglichkeit, Funktionen als pur zu kennzeichnen.

13 Der leere Datentyp void Manche Funktionen, etwa printf haben kein Ergebnis, sondern nur Seiteneffekte. Für diesen Fall gibt es den Datentyp void. Eine void-funktion muss nicht mit einer return-anweisung verlassen werden. Eine return-anweisung in einer void-funktion darf keinen Wert enthalten; sie lautet: return ; Beispiel: void print_fac ( int n ) printf( "%d! = %d.\n", n, fac( n ) );

14 Inhalt Funktionen Die Funktion main Gültigkeitsbereiche Rekursive Funktionen Beispiel: Ein kleiner Taschenrechner

15 Die Funktion main Beim Programmstart wird automatisch die Funktion main aufgerufen. Der Prototyp von main kann folgende Formen haben: int main () int main ( int argc, char *argv[] ) eine implementierungsabhängige Form Die zweite Form bekommt zusätzlich die Arguments, die auf der Kommandozeile angegeben werden. Ansonsten ist die Funktion main nicht besonders ausgezeichnet.

16 Programmargumente In der Form int main ( int argc, char *argv[] ) bekommt main die Arguments des Programms übergeben. argc Anzahl der Argumente (nichtnegativ) argv Feld der Länge argc von nullterminierten Strings Das erste Argument ist der Programmname (falls argc > 0). Er ist Implementierungsabhängig und kann leer sein (""). Das Programm darf die Stings in argv verändern.

17 Programmargumente Beispiel: #include <stdio.h> int main ( int argc, char *argv[] ) for( int i = 0; i < argc; i = i+1 ) printf( "argv[ %d ] = \"%s\"\n", i, argv[ i ] ); return 0; liefert folgende Ausgabe: $./args arg1 "argument 2" arg3 argv[ 0 ] = "./args" argv[ 1 ] = "arg1" argv[ 2 ] = "argument 2" argv[ 3 ] = "arg3"

18 Der Rückgabewert von main Der Rückgabewert von main gibt üblicherweise Auskunft über den Zustand des Programms bei Programmende. Die Datei stdlib.h definiert hierfür zwei Konstanten: EXIT_SUCCESS Das Programm wurde normal (erfolgreich) beendet. Unter Unix ist dieser Wert 0. EXIT_FAILURE Das Programm wurde aufgrund eines Fehlers beendet. Unter Unix kann dies eine beliebige, nichtverschindende Zahl sein. Die genaue Interpretation des Rückgabewertes ist nicht vorgeschrieben.

19 Inhalt Funktionen Die Funktion main Gültigkeitsbereiche Rekursive Funktionen Beispiel: Ein kleiner Taschenrechner

20 Gültigkeitsbereiche Variablen sind nicht global gültig, sondern nur in ihrem Gültigkeitsbereich (engl. scope). Der Gültigkeitsbereich einer (lokalen) Variablen ist der Block, in dem sie deklariert wurde. Außerhalb ihres Gültigkeitsbereiches ist die Variable nicht sichtbar und kann auch nicht verwendet werden. Beispiel: int s = 1; for( int i = 1; i <= 5; i = i + 1 ) int k = i*i; s = s + k; printf( "%d %d\n", s, k ); Fehler: k ist außerhalb des Schleifenrumpfes nicht mehr gültig.

21 Gültigkeitsbereiche Variablennamen können in jedem Block neu verwendet werden. In diesem Fall überdeckt die lokale Variable eine in einem umgebenden Block Gültigkeitsbereich (engl. scope). Beispiel: int s = 0; for( int i = 1; i <= 3; i = i + 1 ) int s = i*i; printf( "inner: %d\n", s ); printf( "outer: %d\n", s ); Ausgabe: inner: 1 inner: 4 inner: 9 outer: 0

22 Gültigkeitsbereich von Schleifenvariablen Beispiel: for( int i = 1; i <= 3; i = i + 1 ) printf( "inner: %d\n", s ); printf( "outer: %d\n", i ); Auch das ist falsch, denn die for-schleife ist äquivalent zu int i = 1; while( i <= 3 ) printf( "inner: %d\n", s ); i = i + 1; Also: Schleifenvariablen sind nur innerhalb der Schleife gültig.

23 Call-by-Value In C werden Argumente als Werte an Funktionen übergeben (call-by-value). Die Funktion kann sie nicht ändern. Beispiel: void initialize ( int a ) a = 0; int main () int a = 1; initialize( a ); printf( "a = %d\n", a ); /* a = 1 */ return 0; Die Funktion initialize besitzt eine Variable a, die mit dem Wert des Ausdrucks a initialisiert wird: 1. Offensichtlicher wird dies, wenn man beachtet, dass folgende Aufruf gültig ist: initialize( 1 ); Es gibt keinen Zusammenhang zwischen der Variablen a in initialize und der Variablen a in main.

24 Übergabe von Referenzen Manchmal möchte man aber Variablen beim Aufrufer verändern. In diesem Fall möchte man Referenzen übergeben (call-by-reference). In C muss man dies simulieren, indem man Zeiger auf die Variablen übergibt. Beispiel: void swap ( int *a, int *b ) int c = *a; *a = *b; *b = c; int main () int a = 1, b = 2; swap( &a, &b ); printf( "a = %d, b = %d\n", a, b ); /* a = 2, b = 1 */ return 0;

25 Übergabe von Feldern Eine Besonderheit stellen Felder als Argumente dar. Erinnerung: Ist a ein Feld vom Typ T, so ist der Ausdruck a vom Typ T. Beispiel: void f1 ( int x[] ); void f2 ( int x[ 5 ] ); void f3 ( int *x ); Alle drei Funktionsprototypen sind quivalent. Konsequenzen: Felder werden immer als Referenz übergeben. Die Anzahl der Feldelemente hat keinen Einfluss auf den Typ. Sie dient lediglich der Dokumentation.

26 Rückgabe von Feldern Funktionen können keine Felder zurückgeben. Lösungsmöglichkeiten: Das Feld für den Rückgabewert wird als Argument erwartet: void squares( int n, int s[] ) for( int i = 0; i < n; i = i + 1 ) s[ i ] = i*i; Man gibt einen Zeiger auf das Feld zurück (dynamische Speicherverwaltung). Man gibt einen benutzerdefinierten Datentyp zurück. Dynamische Speicherverwaltung und benutzerdefinierte Datentypen behandeln wir später.

27 Inhalt Funktionen Die Funktion main Gültigkeitsbereiche Rekursive Funktionen Beispiel: Ein kleiner Taschenrechner

28 Rekursive Funktionen Funktionen dürfen sich auch selber aufrufen. Damit lassen sich rekursive Algorithmen einfach implementieren. Beispiel: 1 double power ( double x, int n ) 2 3 if( n == 0 ) 4 return 1.0; 5 else 6 return x * power( x, n - 1 ); 7 Eine Rekursion braucht eine Abbruchbedingung (Zeile 2 3), sonst terminiert die Funktion nicht (vgl. Endlosschleife).

29 Rekursive Berechnung von Binomialkoeffizienten Die Formel ( ) n n! = k k! (n k)! ist für die Implementierung ungeeignet. Die Zahl n! wird schnell sehr groß: Bereits 13! = benötigt mehr als 32 Bit, um dargestellt zu werden. Hingegen ist ( ) 13 = 1716 relativ klein. 6 Die Binomialkoeffizienten lassen sich aber auch rekursiv berechnen. Für 0 < k < n gilt: ( ) ( ( ) n + 1 n n = +. k + 1 k) k + 1

30 Rekursive Berechnung von Binomialkoeffizienten Für 0 < k < n gilt: ( n = k) ( ) n 1 + k 1 ( ) n 1. k Beispiel: int binomial ( int n, int k ) if( (k == 0) (k == n) ) return 1; else return binomial( n-1, k-1 ) + binomial( n-1, k );

31 Divide and Conquer Klassisches Anwendungsfeld für Rekursion ist das Zerlegen großer Probleme in kleinere ( Teile und Herrsche ). Beispiel: /* let x be a sorted array */ /* find the position of i in the interval [begin,end) */ int binary_search ( int x[], int begin, int end, int i ) if( begin >= end ) /* empty interval */ return -1; const int mid = (end - begin) / 2; if( i == x[ mid ] ) return mid; if( i < x[ mid ] ) return binary_search( x, begin, mid ); else return binary_search( x, mid+1, end );

32 Endrekursion Ist der rekursive Aufruf die letzte (elementare) Instruktion, so sprechen wir von einer Endrekursion (engl. tail-recursion). Beispiel: void power_impl ( double x, int n, double *result ) if( n == 0 ) return; *result = *result * x; power_impl( x, n - 1, result ); double power ( double x, int n ) double result = 1.0; power_impl( x, n, &result ); return result;

33 Endrekursion Bei einer Endrekursion kann der rekursive Aufruf durch einen Sprung an den Funktionsanfang ersetzt werden. Beispiel: void power_impl ( double x, int n, double *result ) start: if( n == 0 ) goto end *result = *result * x; n = n - 1; goto start end: Dies ist äquivalent zu void power_impl ( double x, int n, double *result ) for( ; n!= 0; n = n - 1 ) *result = *result * x;

34 Endrekursion Eine Endrekursion ist damit äquivalent zu einer Schleife. Die Behauptung, Rekursion sei weniger effizient als eine Schleife ist daher i.a. falsch. Das Umwandeln einer Endrekursion in eine Schleife ist ein Beispiel für eine Compiler-Optimierung. Der übersetzte Code wird dadurch effizienter. Achtung: Unser ursprüngliches Beispiel ist nicht endrekursiv. double power ( double x, int n ) if( n == 0 ) return 1.0; else return x * power( x, n - 1 ); Hier muss nach dem Aufruf von power noch das Ergebnis mit x multipliziert werden.

35 Inhalt Funktionen Die Funktion main Gültigkeitsbereiche Rekursive Funktionen Beispiel: Ein kleiner Taschenrechner

36 Beispiel: Ein kleiner Taschenrechner Wir können jetzt bereits sehr mächtige Programme schreiben. Im folgenden soll ein kleiner Taschenrechner vorgestellt werden. Dieser liest einen Ausdrücke vom Benutzer, wertet diese aus und gibt das Ergebnis aus. Eigenschaften: Er beherrscht die Grundrechenarten. Er beachtet Punktrechnung vor Strichrechnung. Er bisitzt 26 Variablen (a z), die jederzeit zugewiesen werden können.

37 Grammatik Grammatik: expression assignexpr assignexpr, expression assignexpr letter = assignexpr addexpr addexpr mulexpr + addexpr mulexpr - addexpr mulexpr preexpr * mulexpr preexpr / mulexpr preexpr - preexpr + preexpr powexpr powexpr powexpr ^ terminal terminal terminal ( expression ) letter float mulexpr preexpr White Space soll ignoriert werden.

38 Eingabebeispiel $./calc 1+2*2^ a=4,b=3,a*b (b-a)*(a+b) ^ i=1,j= k=i,i=j,j=j+k k=i,i=j,j=j+k k=i,i=j,j=j+k k=i,i=j,j=j+k k=i,i=j,j=j+k $

39 Die Funktion main int main () double vars[ 26 ]; for( int i = 0; i < 26; i = i + 1 ) vars[ i ] = 0.0; while( true ) char line[ 256 ]; getline( line, sizeof( line ) ); if( line[ 0 ] == \0 ) return 0; double result; const char *end = evalexpr( line, vars, &result ); if( end[ 0 ]!= \0 ) printf( "Error: Trailing characters \"%s\".\n", end ); abort(); else printf( "%lf\n", result );

40 Die Funktion evalexpr Die Funktion evalexpr wertet einen Ausdruck aus. const char *evalexpr ( const char *s, double *vars, double *result ) s = evalassign( s, vars, result ); while( s[ 0 ] ==, ) s = evalassign( s+1, vars, result ); return s; Argumente: s Zeiger auf Anfang des auszuwertenden Ausdrucks vars Feld für die 26 Variablen result Zeiger auf Variable für das Ergebnis Rückgabewert: Zeiger auf erstes nicht ausgewertetes Zeichen Für jede Regel in der Grammatik gibt es eine solche Funktion.

41 Die Funktion evalterminal const char *evalterminal ( const char *s, double *vars, double *result ) if( s[ 0 ] == ( ) s = evalexpr( s+1, vars, result ); if( s[ 0 ]!= ) ) printf( "Error: \ )\ expected.\n" ); abort(); else return s+1; else if( (s[ 0 ] >= a ) && (s[ 0 ] <= z ) ) *result = vars[ s[ 0 ] - a ]; return s+1; else char *end; *result = strtod( s, &end ); if( end == s ) printf( "Error: Terminal expression expected.\n" ); abort(); return end;

42 Zwei weitere Funktionen als Beispiel const char *evalpowexpr ( const char *s, double *vars, double *result ) s = evalterminal( s, vars, result ); while( s[ 0 ] == ^ ) const double base = *result; s = evalterminal( s+1, vars, result ); *result = pow( base, *result ); return s; const char *evalmulexpr ( const char *s, double *vars, double *result ) s = evalprefixexpr( s, vars, result ); while( (s[ 0 ] == * ) (s[ 0 ] == / ) ) const double v = *result; const char op = s[ 0 ]; s = evalprefixexpr( s+1, vars, result ); if( op == * ) *result = v * (*result); else *result = v / (*result); return s;

43 Autoren Autoren die an diesem Skript mitgewirkt haben: : Christoph Gersbacher : Patrick Schön 2016 : Martin Nolte This work is licensed under a Creative Commons Attribution- ShareAlike 4.0 International (CC BY-SA 4.0) License.

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 7: Matrizen, Vektoren und dynamische Speicherverwaltung Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg

Mehr

Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C

Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C Übersicht Funktionen Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion Sinn von Funktionen Wiederverwendung häufig verwendeter nicht banaler Programmteile Wiederverwendung

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Programmiersprachen Einführung in C

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

Mehr

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 3: Anweisungen, Blöcke und Programmfluss Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg i. Br. Vorlesung

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,

Mehr

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter}); S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht

Mehr

Programmierung und Angewandte Mathematik

Programmierung und Angewandte Mathematik Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ablauf Was sind Funktionen/Methoden

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

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

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!

Mehr

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Tag 5 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Methoden Deklaration

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 und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

Mehr

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22 C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

10 Die Programmiersprache C99: Zusammenfassung

10 Die Programmiersprache C99: Zusammenfassung 10 Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 25. September 2014, 18:40 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html

Mehr

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Einführung in den Einsatz von Objekt-Orientierung mit C++ I Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen

Mehr

Elementare Datentypen in C++

Elementare Datentypen in C++ Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der

Mehr

Typ : void* aktuelle Parameter Pointer von beliebigem Typ

Typ : void* aktuelle Parameter Pointer von beliebigem Typ 2. Funktionen - Prototypvereinbarung typangabe funktionsname(parameterliste); - Funktionsdefinition typ funktionsname(parameterliste){ Anweisung - Funktionstyp -> Typ der Funktionswertes zulaessige Typangaben

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 Textausgabe per printf Die Funktion printf ist kein Bestandteil der C Sprache sondern gehört zur C Bibliothek. printf

Mehr

2. Unterprogramme und Methoden

2. Unterprogramme und Methoden 2. Unterprogramme und Methoden Durch Methoden wird ausführbarer Code unter einem Namen zusammengefasst. Dieser Code kann unter Verwendung von sogenannten Parametern formuliert sein, denen später beim Aufruf

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

C-Kurs 2010 Pointer. 16. September v2.7.3

C-Kurs 2010 Pointer. 16. September v2.7.3 C-Kurs 2010 Pointer Sebastian@Pipping.org 16. September 2010 v2.7.3 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. C-Kurs Mi Konzepte, Syntax,... printf, scanf Next

Mehr

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung Wiederholung Wozu? Schreiben Benutzen Rekursion?! Javakurs 2012, 3. Vorlesung maggyrz@freitagsrunde.org 5. März 2013 Wiederholung Wozu? Schreiben Benutzen Rekursion?! 1 Wiederholung 2 Wozu? 3 Schreiben

Mehr

einlesen n > 0? Ausgabe Negative Zahl

einlesen n > 0? Ausgabe Negative Zahl 1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf

Mehr

C++ - Funktionen und mehr -

C++ - Funktionen und mehr - C++ - Funktionen und mehr - Friedrich-Schiller-Universität Jena Kerstin Gößner und Ralf Wondratschek Prof. Dr. habil. Wolfram Amme Dipl.-Inf. Thomas Heinze Inhaltsverzeichnis 1 Einleitung 3 2 Deklaration,

Mehr

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

C-Crashkurs. Praktikum Systemmanagement und Sicherheit

C-Crashkurs. Praktikum Systemmanagement und Sicherheit C-Crashkurs Praktikum Systemmanagement und Sicherheit ZIELE DIESES KURSES 15.04.2014 Dipl.-Inf. M. Bohr C_Crashkurs 2 Compiler gcc verwenden geläufigste Datentypen in C kennen Fehlerbehandlung (ohne Ausnahmeklassen)

Mehr

1.4. Funktionen. Objektorientierte Programmierung mit C++

1.4. Funktionen. Objektorientierte Programmierung mit C++ mehrfache Deklarationen sind erlaubt für jede Funktion muss es (GENAU) eine Definition geben, ansonsten linker error [the one definition rule ODR] Deklarationen in *.h - Files, Definitionen in *.cpp -

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 1 Einführung Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Inhalte der Veranstaltung 1 Einführung das Maschinenmodell

Mehr

DAP2 Praktikum Blatt 1

DAP2 Praktikum Blatt 1 Fakultät für Informatik Lehrstuhl 11 / Algorithm Engineering Prof. Dr. Petra Mutzel, Carsten Gutwenger Sommersemester 2009 DAP2 Praktikum Blatt 1 Ausgabe: 21. April Abgabe: 22. 24. April Kurzaufgabe 1.1

Mehr

Vorlesungsprüfung Programmiersprache 1

Vorlesungsprüfung Programmiersprache 1 Vorlesungsprüfung Programmiersprache 1 Termin der Prüfung: 1) Di 20.03.2018 16:15 17:00 HSB 3 2) Di 15.05.2018 16:15 17:00 HSB 3 3) Di 12.06.2018 16:15 17:00 HSB 3 Stoffgebiete: 1) Ganzzahltypen: char,

Mehr

Unterlagen. CPP-Uebungen-08/

Unterlagen.  CPP-Uebungen-08/ Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen

Mehr

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

Mehr

Informatik I - Übung 2 Programmieren in Eclipse

Informatik I - Übung 2 Programmieren in Eclipse Informatik I - Übung 2 Programmieren in Eclipse. / Info1 / HelloWorld / HelloWorld Wort1 Wort2 Daniel Hentzen dhentzen@student.ethz.ch 5. März 2014 1.2 Häufigste Fehler im Terminal auf Gross-/Kleinschreibung

Mehr

4.4 Imperative Algorithmen Prozeduren

4.4 Imperative Algorithmen Prozeduren 4.4.2 Prozeduren Der Wert eines Ausdrucks u in Zustand z Z lässt sich damit auch leicht definieren (jetzt W Z statt W σ ) Dazu erweitern wir die rekursive Definition von Folie 57 (Wert eines Ausdrucks):

Mehr

F Zeiger, Felder und Strukturen in C

F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F.1 Zeiger(-Variablen) 1 Einordnung Konstante: Bezeichnung für einen Wert a 0110 0001 Variable: Bezeichnung eines Datenobjekts

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Klassenvariablen, Klassenmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden

Mehr

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch darstellung Arbeiten mit darstellung werden im Computer durch (kleine) Zahlen dargestellt in C können im Datentyp char gespeichert werden, dieser umfasst ein Byte und gilt als Ganzzahltyp darstellung Arbeiten

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

Prozeduren vs. Funktionen

Prozeduren vs. Funktionen Prozeduren vs. Funktionen Mit der Formalisierung wird auch der Unterschied zwischen Prozeduren und Funktionen noch einmal klar. Der Aufruf beider Varianten bewirkt zunächst das Gleiche: die Eingabevariablen

Mehr

Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom Foliensatz 2

Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom Foliensatz 2 Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom 29.10. Foliensatz 2 Modularisierung (T) Eigene Headerdateien und Bibliotheken (P) Arten der Parameterübergabe (P) Arrays und Strukturen

Mehr

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

Computergrundlagen Programmieren in C

Computergrundlagen Programmieren in C Die Compilersprache C Computergrundlagen Programmieren in C Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Geschichte D. M. Ritchie, *1941 1971-73: Entwickelt von

Mehr

Arrays (Felder/Vektoren)

Arrays (Felder/Vektoren) Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von

Mehr

Grundlagen der Programmierung in C Funktionen

Grundlagen der Programmierung in C Funktionen Der erste Mechanismus für Code-Reuse! Grundlagen der Programmierung in C Funktionen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Ältester Mechanismus für Code-Reuse:

Mehr

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, 13.00-14.45 Uhr Bearbeitungszeit: 105 Minuten Schalten Sie ihr Mobiltelefon aus. Bei der Klausur ist als einziges

Mehr

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free() Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten

Mehr

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach  10. Zeiger C-Kurs 2012, 2. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 10. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff Programmieren in C Funktionen mit Zeigern und Adressen Prof. Dr. Nikolaus Wulff ByValue versus byreferenz C übergibt immer Kopien der Variablen an Funktionen. Es ist nur dann möglich die Werte von Variablen

Mehr

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

Mehr

Erste Schritte der Programmierung in C

Erste Schritte der Programmierung in C Erste Schritte der Programmierung in C C versus C++ Anatomie von C-Programmen für AVR- Mikrocontroller Unterschiede zwischen C++ und C 1 Grundlegende Unterschiede File-Extensions (Header und Quellcode)

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Es können ganze Programmteile aufgenommen werden. Mithilfe von Funktionen kann man denselben

Mehr

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff Programmieren in C Felder, Schleifen und Fließkommaarithmetik Prof. Dr. Nikolaus Wulff Addition von Zahlen 1 2 3 4 5 #include int main() { int x,y,z,sum; x = 1; y = 2; z = 4; sum = x + y + z;

Mehr

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen Informatik I Übung 2 : Programmieren in Eclipse 5. März 2014 Daniel Hentzen dhentzen@student.ethz.ch Downloads : http://n.ethz.ch/~dhentzen/download/ Heute 1. Nachbesprechung Übung 1 2. Theorie 3. Vorbesprechung

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Kontrollstrukturen Was sind Kontrollstrukturen Kontrollstrukturen erlauben es, ein Programm nicht nur Zeile für Zeile auszuführen,

Mehr

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente Themen Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente Formatierte Eingabe mit cin Die Formatierung der Eingabe ist der Ausgabe sehr ähnlich: Die Flags werden

Mehr

Speicherklassen (1) Lokale Variablen

Speicherklassen (1) Lokale Variablen Speicherklassen (1) Lokale Variablen Lokale Variablen beschränken sich auf die Funktionen, in denen sie definiert werden Sind in der Funktion gekapselt können also nur in der Funktion verändert werden

Mehr

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 2: Variablen, Datentypen und formatierte Ein-/Ausgabe Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");

Mehr

Globale Variablen Diverses. Globale Variablen. Globale Variablen

Globale Variablen Diverses. Globale Variablen. Globale Variablen lokale Variablen Variablen bisher nur am Anfang von Funktionen auch erlaubt: am Anfang innerer Codeblöcke (innerhalb geschweifter Klammern) in C99 und als gcc-erweiterung: an beliebiger Stelle innerhalb

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

Outline. 1 Einleitung. 2 Einführung in C. 3 Fortgeschrittenes in C. 4 Einführung in Emacs Lisp. 5 Einführung in Prolog. 6 Formale Semantik

Outline. 1 Einleitung. 2 Einführung in C. 3 Fortgeschrittenes in C. 4 Einführung in Emacs Lisp. 5 Einführung in Prolog. 6 Formale Semantik Outline 1 Einleitung 2 Einführung in C 3 Fortgeschrittenes in C 4 Einführung in Emacs Lisp 5 Einführung in Prolog 6 Formale Semantik Imperative Programmierung Imperatives Paradigma Ziel: Ablaufbeschreibung

Mehr

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16 C++ Teil 4 Sven Groß IGPM, RWTH Aachen 30. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 4 30. Apr 2015 1 / 16 Themen der letzten Vorlesung Funktionen: Definition und Aufruf Wert- und Referenzparameter,

Mehr

C/C++-Programmierung

C/C++-Programmierung 1 C/C++-Programmierung Speicherverwaltung, 0, const Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Speicherverwaltung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Programmiertechnik Kontrollstrukturen

Programmiertechnik Kontrollstrukturen Programmiertechnik Kontrollstrukturen Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Kontrollstrukturen? Kontrollstrukturen erlauben es, ein Programm nicht nur Zeile für Zeile auszuführen,

Mehr

Algorithmen zur Datenanalyse in C++

Algorithmen zur Datenanalyse in C++ Algorithmen zur Datenanalyse in C++ Hartmut Stadie 16.04.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 39 Einführung Datentypen Operatoren Anweisungssyntax Algorithmen zur Datenanalyse in

Mehr

Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden

Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden Dim arrayname (dim1,dim2, ) As Typ Bei eindimensionalen Feldern

Mehr

pue13 January 28, 2017

pue13 January 28, 2017 pue13 January 28, 2017 1 Aufgabe 1 (Klammern und Anweisungsblöcke) Wie Sie in der Vorlesung gelernt haben, werden Anweisungsblöcke in Java nicht durch Einrückung, sondern mithilfe von geschweiften Klammern

Mehr

Folien zur AG: Objektorientiertes Programmieren in C++ Einheit 5: Funktionen. Michael Hahsler, Gottfried Rudorfer und Werner J.

Folien zur AG: Objektorientiertes Programmieren in C++ Einheit 5: Funktionen. Michael Hahsler, Gottfried Rudorfer und Werner J. Folien zur AG: Objektorientiertes Programmieren in C++ Einheit 5: Funktionen Michael Hahsler, Gottfried Rudorfer und Werner J. Schönfeldinger 4. Dezember 2000 1 Aufbau dieser Einheit Aufbau von Funktionen

Mehr

Ein kleiner Blick auf die generische Programmierung

Ein kleiner Blick auf die generische Programmierung TgZero Technik.Blosbasis.net June 3, 2013 1 Inhaltsverzeichnis 1 Vorwort 3 2 Ein kleines Beispiel 3 3 Templates 3 4 Verschiedene Datentypen 4 5 Variadic Templates 5 6 Unterschied zwischen den Programmiersprachen

Mehr

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 4213 Variablen 17.834 float Flugzeug 36812736294 I write code Hund long String Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 3 + 4 1 Variablen sind wie Becher. Sie speichern etwas. // Variablen

Mehr

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen. Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe

Mehr

Einführung in die Programmierung Wintersemester 2010/11

Einführung in die Programmierung Wintersemester 2010/11 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 : Rekursion Inhalt Rekursion: Technik Rekursion

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.

Mehr

FH München, FB 03 FA WS 06/07. Ingenieurinformatik. Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz

FH München, FB 03 FA WS 06/07. Ingenieurinformatik. Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz FH München, FB 03 FA WS 06/07 Ingenieurinformatik Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz Zulassung geprüft vom Aufgabensteller: Teil I Aufg. 2 Aufg. 3 Aufg. 4 Aufg. 5 Summe Note Aufgabensteller:

Mehr

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 4 SS 2016

Mehr

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

Teil 5: Zeiger, Felder, Zeichenketten Gliederung Teil 5: Zeiger, Felder, Zeichenketten Gliederung Zeiger und Adressen Felder (Arrays) Zeichenketten (Strings) Zeigerarithmetik Mehrdimensionale Felder Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik

Mehr

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

C++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue

C++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue C++ - Einführung in die Programmiersprache Funktionen Leibniz Universität IT Services Anja Aue Subroutine (Unterprogramm) Lösung von Teilen einer Gesamtaufgabe. Kapselung von Anweisungen, die zu einer

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 und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

Mehr

Zeichenketten (1) Literale von Zeichenketten werden in doppelte Anführungszeichen gesetzt

Zeichenketten (1) Literale von Zeichenketten werden in doppelte Anführungszeichen gesetzt Zeichenketten (1) Literale Literale von Zeichenketten werden in doppelte Anführungszeichen gesetzt "Hallo Welt" Mehrere solcher Literale gelten als eine Zeichenkette, wenn sie nur durch Whitespaces (Leerzeichen,

Mehr

Funktionen, Zeiger und Arrays in C Software Entwicklung 1

Funktionen, Zeiger und Arrays in C Software Entwicklung 1 Funktionen, Zeiger und Arrays in C Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller 1 Funktionen Mit Hilfe von Funktionen kann man (wie mit Prozeduren bzw. Methoden in Java) eine Problemstellung

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)

Mehr

Vorlesung Objektorientierte Programmierung Klausur

Vorlesung Objektorientierte Programmierung Klausur Prof. Dr. Stefan Brass 16. Februar 2007 Dipl.-Inform. Annett Thüring Institut für Informatik MLU Halle-Wittenberg Vorlesung Objektorientierte Programmierung Klausur Name: Matrikelnummer: Studiengang: Aufgabe

Mehr

C-Grundlagen. zur Programmierung des MicroControllersystems MiCoWi

C-Grundlagen. zur Programmierung des MicroControllersystems MiCoWi 1. Datentypen C-Grundlagen zur Programmierung des MicroControllersystems MiCoWi Die Grafiken und Beispiele wurden dem Buch C von A bis z von Jürgen Wolf entnommen. Es werden hier die ANSI-Festlegungen

Mehr

Programmier-Befehle - Woche 10

Programmier-Befehle - Woche 10 Funktionen Rekursion Selbstaufruf einer Funktion Jeder rekursive Funktionsaufruf hat seine eigenen, unabhängigen Variablen und Argumente. Dies kann man sich sehr gut anhand des in der Vorlesung gezeigten

Mehr

Einführung in Java. Arne Hüffmeier. Angelehnt an Java-Vorkurs der Freitagsrunde. Methoden implementieren. Michelle Liebers, Dennis Hoffmann

Einführung in Java. Arne Hüffmeier. Angelehnt an Java-Vorkurs der Freitagsrunde. Methoden implementieren. Michelle Liebers, Dennis Hoffmann Einführung in Java Arne Hüffmeier Michelle Liebers, Dennis Hoffmann Tilman Lüttje, Jean Wiele Angelehnt an Java-Vorkurs der Freitagsrunde 1 / 44 1 Methoden implementieren Motivation Aufbau einer Methode

Mehr