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 10: Eigene Bibliotheken Patrick Schreier Abteilung für Angewandte Mathematik Vorlesung vom 14. Juli 2014

2 Gliederung eigene Bibliotheken Zeiger und Felder (Wdh.) Zeichenketten (Wdh.) Strukturierte Datentypen (Wdh.) Funktionen und Funktionsaufrufe (Wdh.) Dynamische Speicherverwaltung (Wdh.)

3 Eigene Bibliotheken Wenn einzelne Module ausreichend getestet und für gut befunden wurden, kann man sie in eigenen Bibliotheken zusammenfassen. Eigene Bibliotheken kann man erzeugen, indem man Objektdateien unter der Verwendung des Kommandos $ ar zusammenfügt.

4 Eigene Bibliotheken Wir möchten als Beispiel einen Bibliothek erstellen, die algebraische Operationen mit vollbesetzten Matrizen vom Datentyp double realisiert. Für eine Matrix führen wir eine Struktur ein: struct double_matrix{ double **index; double *values; int n, m; }; n und m speichert die Dimension der Matrix index soll den Zugriff auf die Matrix realisieren values speichert die Einträge a i,j der Matrix es soll gelten a i,j = Matrix.index[i][j]

5 Wdh: Matrix und Konsekutiver Speicher Zunächst wir ein Speicherbereich für die ganze Matrix angelegt: /* allocate memory first */ buffer = (double *) malloc(m*n*sizeof(double)); if(!buffer) return 1; Dann initialisieren wir A als Doppelzeiger: /* initialize A */ A = (double **) malloc(m*sizeof(double *)); if(!a) return 1; for(i = 0; i < m; ++i) A[i] = &buffer[i*n] ; Indexzugriff über a i,j =A[i][j]. Das Freigeben des Speichers erfolgt durch: /* free storage */ free(a); free(buffer);

6 Header matrix.h Die Definition der Struktur schreiben wir in eine neue Header-Datei matrix.h. Um Schreibarbeit zu ersparen definieren wir den neuen Datentyp Matrix, durch struct double_matrix{ double **index; double *values; int n, m; }; typedef struct double_matrix Matrix;

7 Header matrix.h Wir möchten für unseren Datentyp noch einige grundlegende Operationen festlegen: int initdoublematrix( Matrix *A, int m, int n); void freedoublematrix( Matrix *A ); void printdoublematrix( Matrix *A); Diese Funktionen soll das Initialisieren einer Matrix unseres Datentyps, die Rückgabe des angelegten Speichers und eine einfache Ausgabe auf der Konsole realisieren. Die tatsächliche Implementierung der Funktionen (Definition) steht dann später in der Datei matrix.c.

8 matrix.c int initdoublematrix( Matrix *A, int m, int n) { int i, j; // Speicher allozieren: A->values = (double*)malloc(m*n*sizeof(double)); if( A->values == NULL ) return 1; A->index = (double**)malloc(m*sizeof(double*)); if( A->index == NULL ) return 1; A->m = m; A->n = n; //Speicherbloecke zuweisen: for(i = 0; i < m; i++) A->index[i] = &A->values[i*n]; // Matrix mit 0 Eintraegen initialisieren for( i = 0; i < m; i++ ) for( j = 0; j < n; j++ ) A->index[i][j] = 0.; return 0; }

9 matrix.c void freedoublematrix( Matrix *A ) { free(a->index); free(a->values); } void printdoublematrix( Matrix * A) { int i,j; printf(" m = %d, n = %d \n", A->m, A->n); //Ausgabe der Matrix: for( i = 0; i < A->m; i++){ for( j = 0; j < A->n; j++ ) printf("%lf ", A->index[i][j] ); printf("\n"); } }

10 Header einbinden Die Quelltextdatei matrix.c muss dann neben den Header aus der Standardbibliothek: #include<stdio.h> #include<stdlib.h> auch den selbsterstellten Header matrix.h einbinden: #include"matrix.h" damit innerhalb von matrix.c der Datentyp Matrix bekannt ist.

11 Weitere Module erstellen Wir möchten nun die Bibliothek um eine Funktion erweitern, die Matrix-Vektor-Multiplikation mit unserem Datentyp realisiert. Als n-vektor verstehen wir ein double-array der Länge n: double *x = (double*)malloc( n * sizeof(double) ); Die Funktion können wir also folgendermaßen deklarieren: void matrix_vector( Matrix *A, double *x, double *y); Dabei soll eine Matrix A mit einem Vektor x multipliziert werden. Das Ergebnis wird in y gespeichert. Die Funktion soll dann in einer neuen Datei matrix_vektor.h deklariert werden.

12 Header Guards Um die Funktion void matrix_vector( Matrix *A, double *x, double *y); in matrix _ vektor.h zu deklarieren, müssen wir den Datentyp Matrix kennen. Wir möchten also matrix.h einbinden, um sicher zu sein, dass der Datentyp bekannt ist. Um bei mehrfachem Einbinden, mehrfache Definitionen von Funktion und Datentypen zu verhindern, baut man sogenannte Header Guards ein: #ifndef EXAMPLE_H #define EXAMPLE_H //some code #endif // EXAMPLE_H example.h

13 Header Guards Header Guards (oder auch Include Guard, Include Wachter ) sorgen dafür, dass eine Headerdatei nur einmal eingebunden wird. Für jede Headerdatei wird ein eindeutiges Makro verwendet, hier: EXAMPLE_H. #ifndef EXAMPLE_H fragt ob EXAMPLE_HH schon definiert wurde, falls ja ist die Datei schon kompiliert und der Präprozessor überspringt den #ifndef... #endif Block. #ifndef EXAMPLE_H #define EXAMPLE_H //some code #endif // EXAMPLE_H

14 matrix.h mit Header Guard Die fertige Headerdatei matrix.h mit Header Guard, könnte dann so aussehen: 1 #ifndef MATRIX_H 2 #define MATRIX_H 3 4 struct double_matrix{ 5 double **index; 6 double *values; 7 int n, m; 8 }; 9 typedef struct double_matrix Matrix; int initdoublematrix( Matrix *A, int m, int n); 12 void freedoublematrix( Matrix *A ); 13 void printdoublematrix( Matrix *A); #endif // MATRIX_H

15 matrix_vektor.h Für die Matrix-Vektor-Multiplikation vereinbaren wir den Header matrix_vektor.h: 1 #ifndef MATRIX_VECTOR_H 2 #define MATRIX_VECTOR_H 3 4 #include "matrix.h" 5 6 void matrix_vector( Matrix *A, double *x, double *res); 7 8 #endif // MATRIX_VECTOR_H

16 matrix_vektor.c Die tatsächliche Implementierung der Matrix-Vektor-Multiplikation erfolgt dann in matrix_vektor.c: 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include "matrix.h" 4 5 void matrix_vector( Matrix *A, double *x, double *res) { 6 int i, j; 7 for( i = 0; i < A->m; i++) 8 res[i] = 0.; 9 for( i = 0; i < A->m; i++) 10 for( j = 0; j < A->n; j++) 11 res[i] += A->index[i][j] * x[j]; 12 }

17 Bibliothek erstellen Insgesammt haben wir nun die Module matrix.c mit Header matrix.h matrix_vektor.c mit Header matrix_vektor.h Wir wollen nun diese Module zu einer Bibliothek verbinden. Zunächst werden die Objektdateien matrix.c und matrix_vektor.o erstellt über $ gcc -c matrix.c $ gcc -c matrix_vektor.c Mit ar -r können sie diese zu einer Bibliothek libdoublematrix.a zusammenfassen: $ ar -r libdoublematrix.a matrix.o matrix_vector.o

18 Bibliothek verwenden Möchten man nun die Funktionalität von libdoublematrix.a in einem Programm main.c verwenden, müssen zunächst beide Header eingebunden werden: #include "matrix.h" #include "matrix_vektor.h" und linkt das Programm durch $ gcc -o prog_name main.c libdoublematrix.a

19 Bibliothek verwenden Alternativ kann man einen Header doublematrix.h erstellen, der die Präprozessor-Direktiven : #include "matrix.h" #include "matrix_vektor.h" enthält. Dann muss im Hauptprogramm nur doublematrix.h eingebunden werden. ist die Bibliothek in einem anderen Verzeichnis untergebracht, muss das beim Linken mit der Option -L angegeben werden und die Bibliothek wird mit -l angegeben. $ gcc -o prog_name main.c -L<Verzeichnis> -ldoublematrix Der Präfix lib und der Suffix.a werden dabei weggelassen.

20 einfaches Makefile einfaches Makefile, um die Bibliothek libdoublematrix.a zu erstellen: 1 install: matrix.o matrix_vector.o 2 ar -r libdoublematrix.a matrix.o matrix_vector.o 3 4 matrix.o: matrix.c 5 gcc -c matrix.c 6 7 matrix_vector.o: matrix_vector.c 8 gcc -c matrix_vector.c 9 10 clear: 11 rm -f *.o *.a

21 Gliederung eigene Bibliotheken Zeiger und Felder (Wdh.) Zeichenketten (Wdh.) Strukturierte Datentypen (Wdh.) Funktionen und Funktionsaufrufe (Wdh.) Dynamische Speicherverwaltung (Wdh.)

22 Zeigertypen und -variablen Für jeden Typ typename erhalten wir einen Zeigertyp typename * Ein Zeiger ist eine Variable von einem Zeigertyp. Der Typ typename gibt an, auf welchen Typ ein Zeiger verweist: typename *identifier; Beispiele: int *p; /* pointer to int */ double *q; /* pointer to double */

23 Der Adressoperator & Jedes Objekt (Variablen, Konstanten, Funktionen, etc.) belegt Platz im Speicher. Der Speicher eines Systems ist adressiert, d. h. jede Position im Speicher hat eine Adresse. Jedem Objekt ist damit eine eindeutige Adresse zugeordnet. Die Adresse eines Objekts ermitteln wir mit dem Adressoperator &: double x; &x; Der Typ des Ausdrucks &x ist ein Zeigertyp: double *p = &x;

24 Initialisierung von Zeigern In einem Zeiger kann die Adresse eines Objekts gespeichert werden. double x; double *p = &x; int a; int *q = &a; Die Typen der Ausdrücke links und rechts einer Zuweisung müssen übereinstimmen! Ein besonderer Zeigerwert ist die Null: double *p = 0; int *q = 0; Jeder Zeiger (egal welchen Typs) kann mit diesem Wert belegt werden.

25 Dereferenzieren von Zeigern Soll auf das Objekt zugegriffen werden, auf das ein Zeiger verweist, spricht man vom Dereferenzieren des Zeigers. Mit dem Inhaltsoperator * spricht man den Speicherbereich an, auf den ein Zeiger verweist: double x = 1.; double *p = &x; *p = 2.; printf("x = %f\n", x); /* x = 2. */ Das Dereferenzieren eines ungültigen Zeigers ist verboten und führt in der Regel zum sofortigen Programmabbruch: double *p = 0; *p; /* error: p not properly initialized */

26 Übung zu Zeigern Sei a vom Typ int und p vom Typ int *. Welche der folgenden Anweisungen lässt p auf a zeigen? 1. * p = a; 2. p = *a; 3. &p = a; 4. p = &a;

27 Übung zu Zeigern Sei a vom Typ int und p vom Typ int *. Welche der folgenden Anweisungen lässt p auf a zeigen? 1. * p = a; 2. p = *a; 3. &p = a; 4. p = &a;

28 Übung zu Zeigern Sei b vom Typ int und q vom Typ int *. Welche der folgenden Anweisungen weist b den Wert des Objekts zu, auf das q zeigt? 1. * q = b; 2. &b = q; 3. b = *q; 4. b = &q;

29 Übung zu Zeigern Sei b vom Typ int und q vom Typ int *. Welche der folgenden Anweisungen weist b den Wert des Objekts zu, auf das q zeigt? 1. * q = b; 2. &b = q; 3. b = *q; 4. b = &q;

30 Felder Für jeden Datentyp (elementar oder benutzerdefiniert) kann ein Feld angelegt werden. Ein Feld ist eine zusammenhängende Folge von Objekten gleichen Typs: a[0] a[1] a[2] Zur Vereinbarung muss neben Typ und Name die Länge des Feldes angegeben werden: int a[3];

31 Zugriff auf Feldelemente Auf die einzelnen Elemente eines Felds wird über einen Index zugegriffen: int a[3]; a[0], a[1], a[2]; /* access all entries */ In C beginnen Indizierungen immer mit dem Wert 0. Der letzte gültige Index eines Felds der Länge N ist dann N 1. Achtung: Beim Elementzugriff findet keine Bereichsüberprüfung statt: int a[3]; a[99]; /* wrong, invalid index */

32 Zusammenhang von Zeigern und Felder Sei int a[3]; ein Feld. Sein Name a ist ein Ausdruck vom Typ int *. Sein Wert entspricht der Adresse des ersten Elements von a: a == &a[0] Die folgenden Zuweisungen sind daher identisch: int *p = &a[0]; int *p = a;

33 Unterschiede von Zeigern und Feldern Ein Zeiger ist eine Variable, deren Wert sich (durch Zuweisungen, Inkrementoperatoren, etc.) ändern kann: int a[3]; int *p = a; ++p; /* p points to a[0] */ Ein Feldname ist keine Variable. Ausdrücke wie a = p oder ++a sind daher nicht erlaubt.

34 Gliederung eigene Bibliotheken Zeiger und Felder (Wdh.) Zeichenketten (Wdh.) Strukturierte Datentypen (Wdh.) Funktionen und Funktionsaufrufe (Wdh.) Dynamische Speicherverwaltung (Wdh.)

35 Zeichenketten Eine Zeichenkette ist eine zusammenhängende Folge von char-einträgen. char str[32]; sprintf(str, "hello"); stdio.h */ /* sprintf is contained in Ein besonderes Zeichen, das Terminierungszeichen \0, markiert das Ende einer Zeichenkette: 'h''e''l''l''o''\0 ''X''Y''Z'

36 Stringkonstanten Stringkonstanten sind Zeichenketten, die in doppelte Anführungszeichen gesetzt sind: "hello" Ein Feld vom Typ char lässt sich mit einer Stringkonstanten initialisieren: char str[] = "hello"; Bei der Initialisierung eines char-feldes mit einer Stringkonstanten wird automatisch das Terminierungszeichen hinzugefügt. Das Feld str belegt also 6 Byte: sizeof(str) = 6.

37 Stringhandling Die C-Standardbibliothek stellt eine Reihe von Funktionen zum Arbeiten mit Strings bereit, z. B.: size_t strlen(const char *str); char *strcpy(char *dest, const char *src); char *strncpy(char *dest, const char *src, size_t n); Alle hier beschriebenen Funktionen sind in der Datei string.h enthalten.

38 Übung zu Vereinbarungen Welche der folgenden Vereinbarungen sind korrekt? Aus welchen Gründen sind die übrigen falsch? 1. double größe; 2. unsigned int u; 3. char c = z ; 4. char str[] = hallo ; 5. double b[ 2 ] = { 9., 3. };

39 Übung zu Vereinbarungen Welche der folgenden Vereinbarungen sind korrekt? Aus welchen Gründen sind die übrigen falsch? 1. double größe; 2. unsigned int u; 3. char c = z ; 4. char str[] = hallo ; 5. double b[ 2 ] = { 9., 3. };

40 Gliederung eigene Bibliotheken Zeiger und Felder (Wdh.) Zeichenketten (Wdh.) Strukturierte Datentypen (Wdh.) Funktionen und Funktionsaufrufe (Wdh.) Dynamische Speicherverwaltung (Wdh.)

41 Vereinbarung von Strukturen Strukturen gehören zu den benutzerdefinierten Datentypen. Eine Struktur wird definiert durch Angabe des Schlüsselworts struct, ihres Namens und ihrer Elemente in geschweiften Klammern mit abschließendem Strichpunkt. Beispiel: struct Student { char name[64]; char matrikelnr[16]; };

42 Variablen von strukturierten Datentypen Eine Variable vom Typ struct Student wird wie folgt definiert: struct Student student; Mit der Definition kann eine Variable von strukturiertem Datentyp initialisiert werden: struct Student student = {"Max Mustermann", " "}; Zeiger auf Objekte von strukturiertem Datentyp kann man so anlegen: struct Student *pstudent = &student; Merke: Das Schlüsselwort struct muss immer mit angegeben werden.

43 Auswahloperatoren Die Auswahloperatoren. und -> erlauben den Zugriff auf die Elemente einer Struktur. Beispiel: struct Student student; sprintf(student.name, "Max Mustermann"); sprintf(student.matrikelnr, " "); Der Auswahloperator -> darf nur auf Zeiger angewandt werden: student->name; /* equals: (*student).name */

44 Gliederung eigene Bibliotheken Zeiger und Felder (Wdh.) Zeichenketten (Wdh.) Strukturierte Datentypen (Wdh.) Funktionen und Funktionsaufrufe (Wdh.) Dynamische Speicherverwaltung (Wdh.)

45 Funktionen vereinbaren Bei Funktionen unterscheidet man zwischen Deklaration und Definition: Die Deklaration vereinbart lediglich Rückgabetyp, Namen und Parameterliste der Funktion. Erst die Definition legt die Aktionen fest, die bei Funktionsaufruf ausgeführt werden sollen.

46 Übung zu Funktionsdeklarationen Wie lauten die Deklarationen der folgenden Funktionen? square ist eine Funktion, die eine double-größe erwartet und ihr Quadrat zurückgibt:

47 Übung zu Funktionsdeklarationen Wie lauten die Deklarationen der folgenden Funktionen? square ist eine Funktion, die eine double-größe erwartet und ihr Quadrat zurückgibt: double square(double x);

48 Übung zu Funktionsdeklarationen Wie lauten die Deklarationen der folgenden Funktionen? sort ist eine Funktion, die ein Feld elements von Integer-Zahlen und dessen Länge N als Parameter erhält und einen Zeiger auf das erste Feldelement zurückgibt.

49 Übung zu Funktionsdeklarationen Wie lauten die Deklarationen der folgenden Funktionen? sort ist eine Funktion, die ein Feld elements von Integer-Zahlen und dessen Länge N als Parameter erhält und einen Zeiger auf das erste Feldelement zurückgibt. int *sort(int elements[], int N);

50 Übung zu Funktionsdeklarationen Wie lauten die Deklarationen der folgenden Funktionen? innerproduct ist eine Funktion, die zwei konstante Zeiger auf struct Vector übergeben bekommt und eine double-größe zurückgibt:

51 Übung zu Funktionsdeklarationen Wie lauten die Deklarationen der folgenden Funktionen? innerproduct ist eine Funktion, die zwei konstante Zeiger auf struct Vector übergeben bekommt und eine double-größe zurückgibt: double innerproduct(const struct Vector *x, const struct Vector *y);

52 Funktionszeiger Ist der Prototyp einer Funktion (bestehend aus Rückgabetyp, Namen und Parameterliste) bekannt, lässt sich ein Zeiger auf die Funktion definieren. Beispiel: double square(double x); double (*f)(double) = square; Um eine Funktion über einen Zeiger auszuwerten, gibt es mehrere Möglichkeiten: double x = f(2.); /* x = 4. */ double x = (*f)(2.); /* x = 4. */

53 Übergabe per Wert Betrachten wir die folgende einfache Funktion: void settozero(double x) { x = 0; } Beim Funktionsaufruf double x = 1.; settozero(x); printf("x = %f\n", x); /* x = 1. */ wird lediglich der Funktionswert des Arguments an die Funktion übergeben.

54 Übergabe per Referenz Als Übergabe per Referenz bezeichnet man die Übergabe von Zeigern an Funktionen: void settozero(double *x) { *x = 0; }... double x = 1.; settozero(&x); printf("x = %f\n", x); /* x = 0. */ Zwar wird wieder eine Kopie an die Funktion übergeben (die des Zeigers!). Die Funktion greift aber auf den Speicherplatz von x zu, und die lokalen Änderungen werden im gesamten Programm wirksam.

55 Gliederung eigene Bibliotheken Zeiger und Felder (Wdh.) Zeichenketten (Wdh.) Strukturierte Datentypen (Wdh.) Funktionen und Funktionsaufrufe (Wdh.) Dynamische Speicherverwaltung (Wdh.)

56 Funktionen zur dynamischen Speicherverwaltung Die folgenden Methoden zur dynamischen Speicherverwaltung sind in der Datei stdlib.h enthalten: /* allocate memory */ void *malloc(size_t size); /* allocate and initialize memory */ void *calloc(size_t number, size_t size); /* deallocate memory */ void free(void *ptr); /* try to resize memory at given address */ void *realloc(void *ptr, size_t size);

57 Anfordern von Speicher In der Regel müssen wir Speicher für eine Zahl n von Objekten von bekanntem Typ typename anlegen. Der Speicherbedarf hierfür beträgt gerade n*sizeof(typename); Beispiele (Speicher für 100 Integer-Werte reservieren): int *p = (*int) malloc(100*sizeof(int)); int *q = (*int) calloc(100,sizeof(int)); Was ist der Unterschied zwischen malloc und calloc?

58 Fehlerbehandlung Der Rückgabewert der Methoden zum Anfordern von Speicher void *malloc(size_t size); void *calloc(size_t number, size_t size); void *realloc (void *ptr, size_t size); ist jeweils ein Zeiger vom Typ void *. Im Fehlerfall, d. h. konnte der Speicher nicht angelegt werden, hat der Rückgabewert den Wert Null,sprich der Zeiger ist ungültig. Beispiel: size_t size = 4; void *p = malloc(size); if(!p) printf("error");

59 Zugriff auf dynamisch erzeugten Speicher Mit malloc oder calloc angelegter Speicher ist zusammenhängend. Auf die Elemente des erzeugten Speicherblocks wird über den Operator [] und einen Index zugegriffen. Beispiel: int i, size = 4; int *p = (int*) malloc(size*sizeof(int)); assert(p); /* remember to include assert.h */ for(i = 0; i < size; ++i) p[i] = 0;

60 Freigeben von Speicher Dynamisch angelegter Speicher muss freigegeben werden, wenn er nicht mehr verwendet wird und anderen Prozessen zur Verfügung stehen soll. Die Funktion void free(void *ptr); gibt den Speicherbereich, auf den ptr zeigt und der über malloc oder calloc angelegt wurde, wieder frei. Beispiel: int *p = (int*) malloc(4*sizeof(int));... free(p); Auf freigegebenen Speicher darf nicht mehr zugegriffen werden.

61 Autoren Autoren die an diesem Skript mitgewirkt haben: : Christoph Gersbacher 2014 : Patrick Schreier This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License. licenses/by-sa/4.0/legalcode

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

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

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

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

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

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

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

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 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

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert

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

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

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C Übersicht Felder, Rückblick Mehrdimensionale Felder Rückblick Vereinbarung von Feldern: typ name [anzahl]; typ name = {e1, e2, e3,..., en} Die Adressierung von Feldelementen beginnt bei 0 Die korrekte

Mehr

Objektbasierte Entwicklung

Objektbasierte Entwicklung Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Name, Vorname Matrikelnummer Probeklausur zur Vorlesung Einführung in die Programmierung WS 2008/09 Dauer: 2 Stunden Hinweise: Schreiben Sie Ihren Namen und Ihre Matrikelnummer auf dieses Deckblatt und

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Übungsblatt 3: Algorithmen in Java & Grammatiken

Übungsblatt 3: Algorithmen in Java & Grammatiken Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015

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

Erstellen einer digitalen Signatur für Adobe-Formulare

Erstellen einer digitalen Signatur für Adobe-Formulare Erstellen einer digitalen Signatur für Adobe-Formulare (Hubert Straub 24.07.13) Die beiden Probleme beim Versenden digitaler Dokumente sind einmal die Prüfung der Authentizität des Absenders (was meist

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 MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

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 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

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt

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

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

2. Semester, 2. Prüfung, Lösung

2. Semester, 2. Prüfung, Lösung 2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter

Mehr

Einführung in die Programmierung (EPR)

Einführung in die Programmierung (EPR) Goethe-Center for Scientific Computing (G-CSC) Goethe-Universität Frankfurt am Main Einführung in die Programmierung (EPR) (Übung, Wintersemester 2014/2015) Dr. S. Reiter, M. Rupp, Dr. A. Vogel, Dr. K.

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Excel Funktionen durch eigene Funktionen erweitern.

Excel Funktionen durch eigene Funktionen erweitern. Excel Funktionen durch eigene Funktionen erweitern. Excel bietet eine große Anzahl an Funktionen für viele Anwendungsbereiche an. Doch es kommt hin und wieder vor, dass man die eine oder andere Funktion

Mehr

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. www.blogger.com ist einer davon.

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. www.blogger.com ist einer davon. www.blogger.com Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. www.blogger.com ist einer davon. Sie müssen sich dort nur ein Konto anlegen. Dafür gehen Sie auf

Mehr

Anwendungsbeispiele Buchhaltung

Anwendungsbeispiele Buchhaltung Rechnungen erstellen mit Webling Webling ist ein Produkt der Firma: Inhaltsverzeichnis 1 Rechnungen erstellen mit Webling 1.1 Rechnung erstellen und ausdrucken 1.2 Rechnung mit Einzahlungsschein erstellen

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

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 7: Matrizen, Vektoren und dynamische Speicherverwaltung Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Lehrer: Einschreibemethoden

Lehrer: Einschreibemethoden Lehrer: Einschreibemethoden Einschreibemethoden Für die Einschreibung in Ihren Kurs gibt es unterschiedliche Methoden. Sie können die Schüler über die Liste eingeschriebene Nutzer Ihrem Kurs zuweisen oder

Mehr

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern 1 Einleitung Lernziele Symbolleiste für den Schnellzugriff anpassen Notizenseiten drucken eine Präsentation abwärtskompatibel speichern eine Präsentation auf CD oder USB-Stick speichern Lerndauer 4 Minuten

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

DOKUMENTATION VOGELZUCHT 2015 PLUS

DOKUMENTATION VOGELZUCHT 2015 PLUS DOKUMENTATION VOGELZUCHT 2015 PLUS Vogelzucht2015 App für Geräte mit Android Betriebssystemen Läuft nur in Zusammenhang mit einer Vollversion vogelzucht2015 auf einem PC. Zusammenfassung: a. Mit der APP

Mehr

Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"

Praxisorientierte Einführung in C++ Lektion: Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm) Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte

Mehr

Grundlagen der Informatik - 6. Praktikum

Grundlagen der Informatik - 6. Praktikum Grundlagen der Informatik - 6. Praktikum In diesem Praktikum soll es neben der Anwendung von Funktionsdefinitionen auch um einfache Prinzipien der verteilten Quelltext-Strukturierung gehen. Diese spielt

Mehr

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld Sharing. Auf dem Bildschirm sollte folgendes Fenster erscheinen: Einleitung Unter MacOS X hat Apple die Freigabe standardmäßig auf den "Public" Ordner eines Benutzers beschränkt. Mit SharePoints wird diese Beschränkung beseitigt. SharePoints erlaubt auch die Kontrolle

Mehr

Grundlagen der Programmiersprache C++

Grundlagen der Programmiersprache C++ / TU Braunschweig Grundlagen der Programmiersprache C++ Um den Studierenden den Einstieg in die FE-Programmierung zu erleichtern werden die wesentlichen Elemente eines C-Programmes beschrieben, soweit

Mehr

Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung)

Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung) Hochschule München, FK 03 SS 2014 Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung) Zulassung geprüft: (Grundlagenteil) Die Prüfung ist nur dann gültig, wenn Sie die erforderliche Zulassungsvoraussetzung

Mehr

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

Second Steps in eport 2.0 So ordern Sie Credits und Berichte Second Steps in eport 2.0 So ordern Sie Credits und Berichte Schritt 1: Credits kaufen, um Zugangscodes generieren zu können Wählen Sie Credits verwalten und klicken Sie auf Credits kaufen. Geben Sie nun

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep 1. Erstellen Sie ein neues Rechnungsformular Mit book n keep können Sie nun Ihre eigenen

Mehr

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem

Mehr

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg. Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

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

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

PVL 3 - Roulette. (5 Punkte) Abgabe bis 20.12.2015

PVL 3 - Roulette. (5 Punkte) Abgabe bis 20.12.2015 PVL 3 - Roulette (5 Punkte) Abgabe bis 20.12.2015 Beim Roulette wird in jeder Runde eine von 37 Zahlen (0-36) ausgespielt. Dabei können Geldbeträge direkt auf eine Zahl zwischen 1 und 36 gesetzt werden

Mehr

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank Die Entscheidung Advoware über VPN direkt auf dem lokalen PC / Netzwerk mit Zugriff auf die Datenbank des zentralen Servers am anderen

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

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2014, 16. Juli 2014 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.:

Mehr

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Prof. Dr. Ulrich Breitschuh Hochschule Anhalt(FH) Fachbereich Informatik Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Hinweis: Die Aufgaben 3, 6 und 8 sind testatpichtige Aufgaben.

Mehr

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

Mehr

Zusatzmodul Lagerverwaltung

Zusatzmodul Lagerverwaltung P.A.P.A. die kaufmännische Softwarelösung Zusatzmodul Inhalt Einleitung... 2 Definieren der Lager... 3 Zuteilen des Lagerorts... 3 Einzelartikel... 4 Drucken... 4 Zusammenfassung... 5 Es gelten ausschließlich

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr

Alltagsnotizen eines Softwareentwicklers

Alltagsnotizen eines Softwareentwicklers Alltagsnotizen eines Softwareentwicklers Entkoppeln von Objekten durch Callbacks mit c++-interfaces oder boost.function und boost.bind Tags: c++, entkoppeln, objekt, oop, callback, boost.bind, boost.function,

Mehr

Qt-Projekte mit Visual Studio 2005

Qt-Projekte mit Visual Studio 2005 Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung

Mehr

Design anpassen eine kurze Einführung

Design anpassen eine kurze Einführung Design anpassen eine kurze Einführung Das gesamte Layout von Papoo basiert auf modernen CSS Layouts die vollständig ohne Layout Tabellen funktionieren. Um schnell vorhandene Designs anpassen zu können

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden. In einer Website haben Seiten oft das gleiche Layout. Speziell beim Einsatz von Tabellen, in denen die Navigation auf der linken oder rechten Seite, oben oder unten eingesetzt wird. Diese Anteile der Website

Mehr

Schnittstelle DIGI-Zeiterfassung

Schnittstelle DIGI-Zeiterfassung P.A.P.A. die kaufmännische Softwarelösung Schnittstelle DIGI-Zeiterfassung Inhalt Einleitung... 2 Eingeben der Daten... 2 Datenabgleich... 3 Zusammenfassung... 5 Es gelten ausschließlich unsere Allgemeinen

Mehr

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Howto Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Peter Bitterlich Markus Langer 12. Oktober 2012 Zusammenfassung Dieses Dokument erklärt Schritt für Schritt die Installation

Mehr

Tutorial. Bibliothek AutoGUITest V1.0. Windows-Benutzeroberflächen automatisiert testen. Ausgabe: 6.6.02. 06.06.02 / 13:51 Seite 1

Tutorial. Bibliothek AutoGUITest V1.0. Windows-Benutzeroberflächen automatisiert testen. Ausgabe: 6.6.02. 06.06.02 / 13:51 Seite 1 Bibliothek AutoGUITest V1.0 Windows-Benutzeroberflächen automatisiert testen Tutorial Ausgabe: 6.6.02 06.06.02 / 13:51 Seite 1 Inhalt 1 Übersicht...3 2 Funktionsweise...3 3 Funktionsumfang...3 4 Einsatz

Mehr

DLLs (dynamic loaded libraries) mit MingW erstellen

DLLs (dynamic loaded libraries) mit MingW erstellen DLLs (dynamic loaded libraries) mit MingW erstellen Autor: Michel D. Schmid Datum: April 2, 2009 Contents 1 Einführung 1 1.1 Open-Source Tools.......................................... 1 2 Beispiel 1:

Mehr

1. Zuerst muss der Artikel angelegt werden, damit später die Produktvarianten hinzugefügt werden können.

1. Zuerst muss der Artikel angelegt werden, damit später die Produktvarianten hinzugefügt werden können. Produktvarianten und Downloads erstellen Produktvarianten eignen sich um Artikel mit verschiedenen Optionen wie bspw. ein Herrenhemd in den Farben blau, grün und rot sowie in den Größen S, M und L zu verkaufen.

Mehr

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) 3.7 Erstellen einer Collage Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) Dann Größe des Dokuments festlegen beispielsweise A4 (weitere

Mehr

teamsync Kurzanleitung

teamsync Kurzanleitung 1 teamsync Kurzanleitung Version 4.0-19. November 2012 2 1 Einleitung Mit teamsync können Sie die Produkte teamspace und projectfacts mit Microsoft Outlook synchronisieren.laden Sie sich teamsync hier

Mehr

Kommunikations-Management

Kommunikations-Management Tutorial: Wie kann ich E-Mails schreiben? Im vorliegenden Tutorial lernen Sie, wie Sie in myfactory E-Mails schreiben können. In myfactory können Sie jederzeit schnell und einfach E-Mails verfassen egal

Mehr

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

P&P Software - Adressexport an Outlook 05/29/16 14:44:26 Adressexport an Outlook Wozu? Aus EASY können viele Daten im Excelformat ausgegeben werden. Diese Funktion kann zum Beispiel zum Export von Lieferantenadressen an Outlook genutzt werden. Hinweis Wir können

Mehr

CodeSaver. Vorwort. Seite 1 von 6

CodeSaver. Vorwort. Seite 1 von 6 CodeSaver Vorwort Die Flut der Passwörter nimmt immer mehr zu. Kontopasswörter, Passwörter für Homepages, Shellzugriffe, Registrierungscodes für Programme und und und. Da ich aber nicht sonderlich viel

Mehr

Anlegen eines DLRG Accounts

Anlegen eines DLRG Accounts Anlegen eines DLRG Accounts Seite 1 von 6 Auf der Startseite des Internet Service Centers (https:\\dlrg.de) führt der Link DLRG-Account anlegen zu einer Eingabemaske, mit der sich jedes DLRG-Mitglied genau

Mehr

Tevalo Handbuch v 1.1 vom 10.11.2011

Tevalo Handbuch v 1.1 vom 10.11.2011 Tevalo Handbuch v 1.1 vom 10.11.2011 Inhalt Registrierung... 3 Kennwort vergessen... 3 Startseite nach dem Login... 4 Umfrage erstellen... 4 Fragebogen Vorschau... 7 Umfrage fertigstellen... 7 Öffentliche

Mehr

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Erstellen der Barcode-Etiketten:

Erstellen der Barcode-Etiketten: Erstellen der Barcode-Etiketten: 1.) Zuerst muss die Schriftart Code-39-Logitogo installiert werden! Das ist eine einmalige Sache und muss nicht zu jeder Börse gemacht werden! Dazu speichert man zunächst

Mehr

Info-Veranstaltung zur Erstellung von Zertifikaten

Info-Veranstaltung zur Erstellung von Zertifikaten Info-Veranstaltung zur Erstellung von Zertifikaten Prof. Dr. Till Tantau Studiengangsleiter MINT Universität zu Lübeck 29. Juni 2011 Gliederung Zertifikate Wer, Wann, Was Ablauf der Zertifikaterstellung

Mehr

desk.modul : Intercompany

desk.modul : Intercompany desk.modul : Intercompany Das AddIn wurde erstellt, um eine mandantenübergreifende Lagerverwaltung zu realisieren. Der Firma Mustermann erhält in der Belegerfassung Auskunft über den physikalischen Lagerbestand

Mehr

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten Vorname: Nachname: Matrikelnummer: Legen Sie zu Beginn Ihren Studentenausweis

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step by Step Webserver unter Windows Server 2003. von Christian Bartl Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr