Mazura. h 2. Vertiefung

Größe: px
Ab Seite anzeigen:

Download "Mazura. h 2. Vertiefung"

Transkript

1 Prof. Dr. D rer. nat. Peer Johannsen Prof. Dr.-Ing. Andreas Mazura Dipl. Ing. (FH) Peter Bitterlich Dipl. Ing. (FH) Andreas Reber Dipl. Inf. Christophh Ußfeller FAKULTÄT FÜR TECHNIK STUDIENGÄNGE MECHATRONIK MEDIZINTECHNIK Labor Software-Entwicklung 2 Vorbereitungsaufgaben für Versuch h 2 C-Programmierung Vertiefung Sommersemesterr 2013 Seite 1 von 13

2 Vorbemerkungen Literatur Sie können gerne Literatur und Bücher zur Programmierung in C verwenden und mit in das Labor bringen. Insbesondere die Nachschlagewerke C Die Programmiersprache C. Ein Nachschlagewerk C Programmierung Eine Einführung des Regionalen Rechenzentrums für Niedersachsen / Leibnitz Universität Hannover (RRZN) sind inklusive handschriftlicher Ergänzungen sowohl im Labor als auch in der Prüfung als Hilfsmittel zugelassen. Was Sie im 1. Semester gelernt haben Sie sollten vertraut und geübt sein im Umgang mit der graphischen Darstellung von Algorithmen durch Programmablaufpläne und Struktogramme, mit der Definition und Initialisierung von Variablen in der Programmiersprache C, mit dem Umgang mit den Datentypen int, float und double mit dem Zuweisungsoperator und den mathematischen Operatoren, mit den Betriebssystemfunktionen zur Eingabe und Ausgabe und mit der mathematischen Bibliothek, mit der Blockanweisung, den Schleifen und den Auswahlanweisungen, mit der Deklaration und dem Aufruf von Funktionen und Unterprogrammen und mit der Verwendung von Funktionsparametern und Rückgabewerten Wiederholen Sie ggf. diese Inhalte zur Vorbereitung auf die Laborversuche! Allgemeine Vorbereitung auf den Laborversuch Wiederholen Sie die neuen Inhalte der Vorlesung und machen Sie sich vertraut mit Feldern (Arrays) und mit den Datentypen enum und struct mit der Eingabe und Speicherung von Text in C (Strings) mit Zeigern und deren Verwendung mit dem Konzept der Rekursion und rekursiven Funktionen mit der Wirkungsweise der Präprozessor-Direktiven Lesen Sie weiterhin die Hinweise auf der Internetseite des Labors. Hinweise zu den Vorbereitungsaufgaben Die Bearbeitung der Vorbereitungsaufgaben sowie die Teilnahme an den Softwarelaboren dienen Ihrer persönlichen Übung im Programmieren mit der Programmiersprache C. Hierbei ist die selbstständige Bearbeitung der jeweiligen Aufgaben eine wichtige Prüfungsvorbereitung für die Klausur. Die Vorbereitung auf das Labor und das Bearbeiten der Vorbereitungsaufgaben sind Bestandteil der Prüfungsleistung für das Labor! Eine unvorbereitete Teilnahme an den Laborterminen ist nicht möglich! Versuchen Sie nicht, diese Vorbereitung durch Nachschlagen der Lösungen im Internet oder Abschreiben abzukürzen. Spätestens in der Prüfung werden Sie sich darüber freuen können, dass Sie die Aufgaben selbst gelöst haben. Die Lösungen der Vorbereitungsaufgaben sind zum Labortermin mitzubringen, C-Programme in digitaler Form (z.b. USB-Stick, so dass sie im Labor weiterverwendet werden können), Struktogramme in handschriftlicher Form. Labor Software-Entwicklung 2 Versuch 1 Seite 2 von 13

3 Hinweis: Zur Informations-Beschaffung kann auch das Internet verwendet werden, hier ein Beispiel: Aufgabe 1: Bitte bearbeiten Sie mindestens die Aufgaben 1b, 1c, 2a und 2c. Zur Speicherung und Verwaltung gleichartiger Daten unbekannter Anzahl eignet sich die Datenstruktur Vektor. Der Begriff Vektor wird hierbei nicht im mathematischen Sinn verwendet, sondern bezeichnet eine Datenstruktur zur Verwaltung dynamisch allokierter Felder. Hierbei ist wahlfreier Zugriff auf die Elemente des Feldes möglich. Eine Besonderheit der Datenstruktur ist, dass es möglich ist, Elemente am Ende anzufügen und vom Ende zu entnehmen. Damit stellt der Vektor auch die Funktionalität eines Stack zur Verfügung. Damit nicht bei jeder Einfüge- und Entnahmeoperation die Kapazität des dynamisch allokierten Feldes angepasst werden muss, hat der Vektor die Information über seinen Füllstand. Sobald der Füllstand die Kapazität des Feldes übersteigt, wird eine Größenanpassung für das Feld durchgeführt. Ein solcher Vektor kann also mit den 3 Komponenten Adresse des ersten Feldelements (Adresse des ersten Datums), Anzahl der für das Feld bereitgestellten Elemente Kapazität und der Anzahl der momentan gültigen Elemente Füllstand beschrieben werden. Die Datenstruktur Vektor sei in der Programmiersprache C definiert durch: typedef struct{ int* data; // Zeiger auf das erste Element des Feldes unsigned int capacity; // Anzahl der Elemente des Feldes unsigned int size; // Anzahl gueltiger Elemente }Vector; Hierbei stehen bereits die Funktionen int* vector_get_mem( unsigned int capacity ); zur Erzeugung eines Feldes der Elementanzahl capacity und void vector_free_mem( int* data ); zur Freigabe eines dynamisch erzeugten Feldes zur Verfügung. Labor Software-Entwicklung 2 Versuch 1 Seite 3 von 13

4 a) Entwerfen Sie einen Programmablaufplan für die Operation void vector_resize( Vector* vector, unsigned int new_capacity ); Diese Funktion soll die Kapazität von vector auf new_capacity setzen. Hierfür muss neuer Speicher für das Feld bereitgestellt werden. Anschließend werden die nach der Größenanpassung noch gültigen Elemente aus dem alten in den neuen Speicher kopiert und danach wird der nun nicht mehr benötigte alte Speicher freigegeben. Weiterhin müssen die Komponenten capacity und size auf die entsprechenden Werte gesetzt werden. Das Bereitstellen des Speichers für ein Feld der Elementzahl capacity soll durch Aufruf der Funktion int* vector_get_mem( unsigned int capacity ); und das Freigeben nicht mehr benötigten Speichers soll durch Aufruf der Funktion erfolgen. void vector_free_mem( int* data ); b) Entwerfen Sie einen Programmablaufplan für die Operation void vector_push_back( Vector* vector, int value ); Diese Funktion soll den Wert value an das Ende des gültigen Speichers anfügen. Falls hierbei die Kapazität von vector überschritten würde, so muss zuerst eine Größenanpassung durch den Aufruf von void vector_resize( Vector* vector, unsigned int new_capacity ); erfolgen. Die Kapazität von vector sollte sich dabei verdoppeln, darf aber 1 nicht unterschreiten. Beim Anfügen eines Wertes wird der Füllstand von vector um 1 erhöht. c) Entwerfen Sie einen Programmablaufplan für die Operation int vector_pop_back( Vector* vector ); Diese Funktion soll den Wert der letzten gültigen Speicherstelle von vector zurückgeben, und den Füllstand von vector um 1 verkleinern. Der C-Header in Anhang 1 darf zur Bearbeitung der Aufgabe herangezogen werden. Labor Software-Entwicklung 2 Versuch 1 Seite 4 von 13

5 Aufgabe 2: Zur Speicherung und Verwaltung gleichartiger Daten unbekannter Anzahl eignet sich die Datenstruktur verkettete Liste. Eine Liste ist eine lineare Struktur, deren Elemente das jeweilige zu speichernde Datum sowie Verweise auf Vorgänger- und Nachfolgerknoten tragen. Existieren nur die Verweise auf die jeweiligen direkten Nachfolger, so spricht man von einer einfach verketteten Liste. Gibt es auch Verweise auf die direkten Vorgänger, so wird die Struktur doppelt verkettete Liste genannt. Im Gegensatz zu dynamisch verwalteten Feldern ist das Verändern der Elementanzahl mit sehr wenig Aufwand (ohne Umkopieren) zu erreichen. Weiterhin ist es sehr einfach möglich, Elemente an einer beliebigen Position einzufügen oder zu löschen. Ein Nachteil gegenüber Feldern ist jedoch, dass es keinen direkten Zugriff auf die einzelnen Elemente gibt. Die Verweise auf Vorgänger- und Nachfolgerknoten können bei einer Implementierung in der Programmiersprache C durch Zeiger auf Knoten realisiert werden. Hierbei zeigt die ungültige Adresse 0 den Start bzw. das Ende der Liste an -- der Startknoten hat keinen Vorgänger und der Endknoten hat keinen Nachfolger. In folgender Abbildung sehen Sie eine doppelt verkettete Liste, die aus den drei Knoten A, B und C besteht. Dabei steht next* für den Verweis auf den Nachfolger und prev* Für den Verweis auf den Vorgänger. In einer Beispiel-Implementation sei der Typ Node zur Darstellung der einzelnen Knoten folgendermaßen definiert: struct _Node{ struct _Node * next; // Zeiger auf den Nachfolgerknoten struct _Node * previous; // Zeiger auf den Vorgaengerknoten int data; // Das Datum }; typedef struct _Node Node; Labor Software-Entwicklung 2 Versuch 1 Seite 5 von 13

6 Mit Hilfe der Funktion Node* node_new( int value ); können Sie einen neuen Knoten mit dem Wert value anlegen, die Funktion liefert einen Zeiger auf den neuen Knoten zurück. Vorgänger und Nachfolger sind als ungültig markiert. Die zu nun von Ihnen zu bearbeitende Aufgabe möge an folgender Abbildung verdeutlicht werden: a) Entwerfen Sie einen Programmablaufplan für die Operation Node* node_insert_after( Node* parent, NodeData value ); Diese Funktion soll einen neuen Knoten mit dem Wert value anlegen und hinter dem Knoten parent in die Liste eintragen. Die Funktion soll einen Zeiger auf den neu erstellten Knoten zurückgeben. (Füge neuen Knoten D hinter Knoten B ein.) b) Entwerfen Sie einen Programmablaufplan für die Operation Node* node_insert_before( Node* parent, NodeData value ); Diese Funktion soll einen neuen Knoten mit dem Wert value anlegen und vor dem Knoten parent in die Liste eintragen. Die Funktion soll einen Zeiger auf den neu erstellten Knoten zurückgeben. (Füge neuen Knoten D vor Knoten B ein.) Labor Software-Entwicklung 2 Versuch 1 Seite 6 von 13

7 c) Entwerfen Sie einen Programmablaufplan für die Operation void node_delete( Node* node ); Diese Funktion soll den Knoten node aus der Liste löschen, indem sie die Verweise in Vorgänger- und Nachfolgerknoten von node anpasst. Anschließend soll der nun nicht mehr verwendete Speicher durch den Aufruf free(node) wieder freigegeben werden. (Lösche Knoten D.) Der C-Header in Anhang 2 darf zur Bearbeitung der Aufgabe herangezogen werden. Labor Software-Entwicklung 2 Versuch 1 Seite 7 von 13

8 Anhang 1: #ifndef VECTOR_H #define VECTOR_H #include <stdio.h> #include <stdlib.h> #include <assert.h> //#define _VECTOR_PAYLOAD_CHAR #define _VECTOR_PAYLOAD_INT //#define _VECTOR_PAYLOAD_DOUBLE #if defined _VECTOR_PAYLOAD_CHAR #define FORMAT "%c" typedef unsigned char VectorData; #elif defined _VECTOR_PAYLOAD_INT #define FORMAT "%i" typedef int VectorData; #elif defined _VECTOR_PAYLOAD_DOUBLE #define FORMAT "%lf" typedef double VectorData; #endif typedef unsigned int uint; Definition des Typs "Vector" zur Modellierung eines Feldes variabler Elementzahl. > Die Elementzahl eines Vectors kann im Gegensatz zu statisch allokierten Feldern zur Laufzeit des Programms festgelegt und veraendert werden. > Eine Variable des Typs "Vector" hat die Komponenten "data" vom Typ "Zeiger auf VectorData" > Dies ist der Verweis auf den dynamisch allokierten Speicher > Dort befindet sich die Nutzlast in Form eines Feldes von "VectorData" "capacity" vom Typ "uint" > Allokierte Elementzahl des Feldes "data" > Das Feld "data" umfasst "capacity" Elemente > Maximaler Fuellstand des Feldes "size" vom Typ uint > Aktueller Fuellstand des Feldes > Fuer das Feld kann mehr Speicher reserviert worden, als momentan benutzt wird. typedef struct{ VectorData* data; uint capacity; uint size; }Vector; Allokation eines Feldes von "VectorData". Das Feld umfasst capacity Elemente. Gibt Addresse des ersten Elementes des Feldes zurueck. VectorData* vector_get_mem( uint capacity ); Labor Software-Entwicklung 2 Versuch 1 Seite 8 von 13

9 Freigabe des dynamisch erzeugten Feldes data. void vector_free_mem( VectorData* data ); Initialisierung von vector zur Aufnahme von capacity Elementen. Allokation eines Feldes von capacity Elementen Aktueller und maximaler Fuellstand wird auf capacity gesetzt Die einzelnen Elemente sind noch nicht initialisiert. (Zufaelliger Inhalt der einzelnen Eintraege) Bsp: Vector x; vector_init(&x,17); // fuer x.data wurden 17 Elemente reserviert // x.capacity == 17 // x.size == 17 void vector_init( Vector* vector, uint capacity ); Loeschen der Inhalte von vector. Freigabe des dynamisch allokierten Speichers. v >size = 0, v >capacity = 0 void vector_clear( Vector* vector ); Abfrage, ob vector leer ist. > leer: Gibt 0 zurueck > nicht leer: Gibt 1 zurueck int vector_is_empty( Vector* vector ); Veraenderung der Groesse der Nutzlast von vector. Falls new_capacity == vector >capacity, beendet sich diese Funktion sofort. Andernfalls wird mit "vector_get_mem" neuer Speicher new_data fuer new_capacity Elemente bereitgestellt. werden alle noch gueltigen Eintraege von vector >data nach new_data kopiert (vector >size und new_capacity beachten) wird vector >data mittels "vector_free_mem" freigegeben wird mit den Zuweisungen vector >data = new_data vector >capacity = new_capacity vector >size = Anzahl der gueltigen Eintraege die Groessenanpassung von vector abgeschlossen Bsp: Vector x; vector_init(&x,17); // x hat 17 Elemente vector_resize(&x,39); // x hat 39 Elemente vector_resize(&x,4); // x hat 4 Elemente void vector_resize( Vector* vector, uint new_capacity ); Labor Software-Entwicklung 2 Versuch 1 Seite 9 von 13

10 Anhaengen des Wertes value an das Ende des verwendeten Speichers von vector. Falls der reservierte Speicher ist schon vollstaendig belegt ist Dann vector_resize(vector, 2*vector >capacity) Hinweis: Sonderfall vector >capacity==0 beachten vector >data[vector >size]=value vector >size um 1 erhoehen Bsp: Vector x; uint i; vector_init(&x,4); // x.size==4, x.capacity==4 for( i = 0; i < x.size; ++i ){ x.data[i] = i; } vector_push_back(&x,12); // x.size==5, x.capacity=8 void vector_push_back( Vector* vector, VectorData value ); Rueckgabe des letzen Elementes von vector, dieses wird dabei aus vector entfernt. Wert des letzten Elementes von vector in temporaerer Variable speichern Optional: Groessenanpassung fuer vector, beispielsweise bei Unterschreiten einer bestimmten Auslastung (size pro capacity) vector >size um 1 verkleinern Rueckgabe der temporaeren Variable Bsp: Vector x; uint i; VectorData tmp; vector_init(&x,4); // x.size==4, x.capacity==4 for( i = 0; i < x.size; ++i ){ x.data[i] = i; } while(!vector_is_empty(&x) ){ tmp = vector_pop_back(&x); // Alle Elemente von x extrahieren } VectorData vector_pop_back( Vector* vector ); Abfrage des Elementes an Stelle index. VectorData vector_get( Vector* vector, uint index ); Setzen des Wertes von Element index auf value. void vector_set( Vector* vector, uint index, VectorData value ); Ausgabe von vector auf der Standardausgabe. void vector_print( Vector* vector ); #endif/* VECTOR_H Labor Software-Entwicklung 2 Versuch 1 Seite 10 von 13

11 Anhang 2: #ifndef NODE_H #define NODE_H #include <stdlib.h> #include <stdio.h> //#define _NODE_PAYLOAD_CHAR #define _NODE_PAYLOAD_INT //#define _NODE_PAYLOAD_DOUBLE #if defined _NODE_PAYLOAD_CHAR #define FORMAT "%c" typedef unsigned char NodeData; #elif defined _NODE_PAYLOAD_INT #define FORMAT "%i" typedef int NodeData; #elif defined _NODE_PAYLOAD_DOUBLE #define FORMAT "%lf" typedef double NodeData; #endif Deklaration des Typs "struct _Node" > Es ist jetzt bekannt, dass es einen Typ "struct _Node" gibt, aber noch nicht, was dieser Typ ist. (Der Typ wurde noch nicht definiert.) struct _Node; Fuer bessere Lesbarkeit soll auf den Typ "struct _Node" mit dem Namen "Node" zugegriffen werden koennen. typedef struct _Node Node; Definition des Typs "struct _Node" zur Modellierung einer doppelt verketteten Liste Der Typ "struct _Node" bzw. "Node" dient hierbei als Element einer solchen Liste Ein solches Element traegt als Nutzlast ein Datum data und haelt Verweise auf seine direkten Vorgaenger und Nachfolger in der Liste Eine Variable vom Typ "struct _Node" bzw. "Node" besteht aus den Komponenten "next" vom Typ "Zeiger auf Node" > Verweis auf den direkten Nachfolger "previous" vom Typ "Zeiger auf "Node" > Verweis auf den direkten Vorgaenger "data" vom Typ "NodeData" > Die Nutzlast struct _Node{ Node* next; Node* previous; NodeData data; }; Labor Software-Entwicklung 2 Versuch 1 Seite 11 von 13

12 Allokiert Speicher fuer eine Variable knoten vom Typ "Node" und initialisiert knoten.next = 0, knoten.previous = 0, knoten.data = value Knoten traegt also schon die Nutzlast, ist aber noch nicht in die Liste eingebunden Gibt die Addresse dieser Variablen knoten zurueck. Node* node_new( NodeData value ); Erzeugt eine Variable knoten vom Typ "Node" mit der Nutzlast value. Knoten wird in die durch parent gegebene Liste direkt hinter parent eingetragen. Hierzu wird zuerst durch knoten.next = parent >next parent >next >previous = &knoten (falls parent >next valide ist) der vorherige direkte Nachfolger von parent nach knoten eingehangen. Danach wird mit parent >next = &knoten knoten.previous = parent knoten nach parent eingehangen. Gibt Addresse von knoten zurueck Node* node_insert_after( Node* parent, NodeData value ); Erzeugt eine Variable knoten vom Typ "Node" mit der Nutzlast value. Knoten wird in die durch parent gegebene Liste direkt vor parent eingetragen. Hierzu wird zuerst durch knoten.previous = parent >previous parent >previous >next = &knoten (falls parent >previous valide ist) der vorherige direkte Vorgaenger von parent vor knoten eingehangen. Danach wird mit parent >previous = &knoten knoten.next = parent knoten vor parent eingehangen. Gibt Addresse von knoten zurueck Node* node_insert_before( Node* parent, NodeData value ); Findet durch Rueckaertstraversion das erste Element knoten der durch node gegebenen Liste. Fuer knoten gilt: &knoten!=0 knoten.previous==0 Gibt Addresse von knoten zurueck Node* node_find_begin( Node* node ); Findet durch Vorwaertstraversion das letzte Element knoten der durch node gegebenen Liste. Fuer Knoten gilt: &knoten!=0 knoten.next==0 Gibt Addresse von knoten zurueck Labor Software-Entwicklung 2 Versuch 1 Seite 12 von 13

13 Node* node_find_end( Node* node ); Loescht das Element node aus der durch node gegebenen Liste und deallokiert den nicht mehr benoetigten Speicher. Hierbei werden direkte Vorgaenger und Nachfolger von node aktualisiert. void node_delete( Node* node ); Loescht in der durch node gegebenen Liste alle Elemente, die vor node stehen. void node_delete_head( Node* node ); Loescht in der durch node gegebenen Liste alle Elemente, die nach node stehen. void node_delete_tail( Node* node ); Loescht in der durch node gegebenen Liste alle Elemente. void node_delete_all( Node* node ); Gibt die Nutzlast aller auf node folgenden Elemente untereinander auf der Standardausgabe aus. void node_print_forward( Node* node ); Gibt die Nutzlast aller vor node stehenden Elemente untereinander auf der Standardausgabe aus. void node_print_reverse( Node* node ); Gibt die Nutzlast von node auf der Standardausgabe aus. void node_print_self( Node* node ); Gibt die Nutzlasten aller Elemente der durch node gegebenen Liste untereinander auf der Standardausgabe aus. void node_print( Node* node ); #endif/* NODE_H Labor Software-Entwicklung 2 Versuch 1 Seite 13 von 13

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

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

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

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere

Mehr

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

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

Mehr

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

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian Einführung in die Programmierung Arvid Terzibaschian 1 Konstanten 2 Motivation Unveränderliche, wichtige Werte mathematische Konstanten z.b. PI String-Konstanten wie z.b. häufige statische Meldungen mögliche

Mehr

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit, 08:00 09:30 Uhr (90 min) Aufgabenblätter 14 Seiten (einschl. Deckblatt) erreichbare Punktzahl 54 zugelassene

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

Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks)

Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungsziele: Skript: 1. Definieren einer dynamischen Datenstruktur 2. Dynamische Speicher Speicherallokation 3. Implementierung eines

Mehr

Dr. Monika Meiler. Inhalt

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

Mehr

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

Einführung in die Programmiersprache C

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

Mehr

Einführung in die 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

17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung 13.1. bis 17.1.2014

17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung 13.1. bis 17.1.2014 17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici 12.Übung 13.1. bis 17.1.2014 1 BEFRAGUNG http://1.bp.blogspot.com/- waaowrew9gc/tuhgqro4u_i/aaaaaaaaaey/3xhl 4Va2SOQ/s1600/crying%2Bmeme.png

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

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

Deklarationen in C. Prof. Dr. Margarita Esponda

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

Mehr

Zusammenfassung des Handzettels für Programmieren in C

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

Mehr

Eine Einführung in C-Funktionen

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

Mehr

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

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

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber 1) Welche Antworten zur Operatorüberladung sind richtig? (1) a) C++ - Operatoren können zusammen mit Objekten funktionieren b) C++ - Operatoren wird

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

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

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

Mehr

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

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

Mehr

1. Übung zu "Numerik partieller Differentialgleichungen"

1. Übung zu Numerik partieller Differentialgleichungen 1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:

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

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

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

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

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

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Einführung in die STL anhand eines ausgewählten Beispiels

Einführung in die STL anhand eines ausgewählten Beispiels Einführung in die STL anhand eines ausgewählten Beispiels Frank M. Thiesing http://home.t-online.de/home/ frank.thiesing/stl/stl-folien.pdf Inhalt Überblick über die C++ STL Container Iteratoren Algorithmen

Mehr

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

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

Mehr

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

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

Kurzeinführung in C. Johannes J. Schneider 27.10.2004

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

Mehr

C/C++ Programmierung

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

Mehr

Unterprogramme, Pointer und die Übergabe von Arrays

Unterprogramme, Pointer und die Übergabe von Arrays Unterprogramme, Pointer und die Übergabe von Arrays Unterprogramme Wie schon im Abschnitt über Funktionen erwähnt, versteht man unter einem Unterprogramm im engeren Sinn eine Prozedur, welche die Werte

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Zusammengesetzte Datentypen -- Arrays und Strukturen

Zusammengesetzte Datentypen -- Arrays und Strukturen Zusammengesetzte Datentypen -- und Strukturen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14

Mehr

C kompakt für Java-Programmierer

C kompakt für Java-Programmierer C kompakt für Java-Programmierer Prof. Dr. Carsten Vogt, FH Köln, Institut für Nachrichtentechnik, www.nt.fh-koeln.de/vogt/ Stand: Februar 2012 In der Übung und im Praktikum "Betriebssysteme und verteilte

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

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

Mehr

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Programmieren Tutorium

Programmieren Tutorium Programmieren Tutorium Tom Schildhauer Tutorium 12 Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by Tom Schildhauer,

Mehr

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen

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 Rückblick Schleifen while do-while for Methoden Verfahren: Intervallschachtelung 2 Wo

Mehr

Programmieren in C++ Arrays, Strings und Zeigerarithmetik

Programmieren in C++ Arrays, Strings und Zeigerarithmetik Programmieren in C++ Arrays, Strings und Zeigerarithmetik Inhalt Eindimensionale C-Arrays C-Strings und Strings (Mehrdimensionale C-Arrays) Arrays und Vektoren (C++) Unique Pointers (C++11) Zeigerarithmetik

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

Zugriff auf die Modul-EEPROMs

Zugriff auf die Modul-EEPROMs MAX-P- und P-Bibliotheken EEPROM-Zugriff 1 Zugriff auf die Modul-EEPROMs Jedes X-Bus-Modul verfügt über ein EEPROM, in dem modulspezifische Daten gespeichert werden. Neben einigen Bereichen, die vom Betriebssystem

Mehr

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

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

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

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

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 Reihungen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende Algorithmen auf Reihungen

Mehr

Klausur Grundlagen der Informatik

Klausur Grundlagen der Informatik Klausur Grundlagen der Informatik 11.03.2010 Hinweise: Bearbeitungszeit: 120 Minuten es sind keine Unterlagen (Bücher, Vorlesungsmitschriften, Übungen), Taschenrechner, Mobiltelefone (ausschalten und in

Mehr

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

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

Mehr

Programmieren in C. Die C-Standardbibliothek. Prof. Dr. Nikolaus Wulff

Programmieren in C. Die C-Standardbibliothek. Prof. Dr. Nikolaus Wulff Programmieren in C Die C-Standardbibliothek Prof. Dr. Nikolaus Wulff Die C-Standard Bibliothek Mit dem C Compiler werden viel fertige Bibliotheksfunktionen ausgeliefert. Eine genaue Kenntnis dieser Funktionen

Mehr

Informatik Repetitorium SS 2009. Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692

Informatik Repetitorium SS 2009. Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692 Informatik Repetitorium SS 2009 Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692 Operatoren und Datentypen Beispiel: Anweisungen Variable int a float b int c a= a % (int) (++b-1/4) Vorher 36 3.5 c=b

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 7 Prof. R. Westermann, A. Lehmann, R.

Mehr

Einführung in C++ mit Microsoft VS

Einführung in C++ mit Microsoft VS Einführung in C++ mit Microsoft VS Gliederung Allgemeines zu C++ und Unterschiede zu Java Header-Files Zeiger/Strukturen Namespaces Programmierstil Einführung in Microsoft VS Projekte und Solutions Debugger

Mehr

Klausur in Programmieren

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

Mehr

Nachklausur Programmieren / Algorithmen und Datenstrukturen 1

Nachklausur Programmieren / Algorithmen und Datenstrukturen 1 Programmieren / Algorithmen und Datenstrukturen Autor: Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt Datum: 7. Oktober 200 Nachklausur Programmieren / Algorithmen und Datenstrukturen Spielregeln

Mehr

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek C++ - Funktionen und mehr Kerstin Gößner und Ralf Wondratschek Übersicht Deklaration, Definition und Initialisierung Variablen- und Konstantendeklaration Funktionsaufrufe und rückgabewerte Technische Grundlage

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch

In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch Kapitel Matrizen in C++ In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch 1 const int n=10; 3 double a[n][n]; gegeben. Allerdings gibt es bei dieser Methode eine Reihe

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Erwin Grüner 15.12.2005

Erwin Grüner 15.12.2005 FB Psychologie Uni Marburg 15.12.2005 Themenübersicht Mit Hilfe der Funktionen runif(), rnorm() usw. kann man (Pseudo-) erzeugen. Darüber hinaus gibt es in R noch zwei weitere interessante Zufallsfunktionen:

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang

Mehr

1Schnelleinstieg 14. 2Wie aus einer einfachen Textdatei. 3 Wie man eigene Programme erstellt 30. Inhaltsverzeichnis. ein Programm wird 20

1Schnelleinstieg 14. 2Wie aus einer einfachen Textdatei. 3 Wie man eigene Programme erstellt 30. Inhaltsverzeichnis. ein Programm wird 20 Inhaltsverzeichnis Liebe Leserin, lieber Leser!...13 1Schnelleinstieg 14 Welche Vorkenntnisse benötigen Sie für dieses Buch?...16 An wen richtet sich dieses Buch?...16 Was benötigen Sie, um die Programmiersprache

Mehr

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

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

Mehr

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

"Einführung in die Programmierung" Krefeld, den 24. September 2013

Einführung in die Programmierung Krefeld, den 24. September 2013 Einführung in die Programmierung Matrikelnummer: Klausur zur Vorlesung "Einführung in die Programmierung" Krefeld, den 24. September 2013 Hinweise: Übertragen Sie bitte Name und Matrikelnummer deutlich

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

Moderne C-Programmierung

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

Mehr

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT Architektur Übersicht (allgemeine) OOP in C++ Polymorphie Virtuelle Funktionen Kompilieren Linken dynamische/statische Bibliotheken Tutorial: vs2008+ogre+(campus modell) Architektur (allgemeine) OOP in

Mehr

Computergrundlagen Programmieren in C

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

Mehr

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04) 10. Klassen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Objektorientierte Programmierung!Das Konzept der Klassen!Members!Objekte!Konstruktoren und Destruktoren!this-Pointer!Public und Private

Mehr

Fakultät Wirtschaftswissenschaft

Fakultät Wirtschaftswissenschaft Fakultät Wirtschaftswissenschaft Matrikelnr. Name Vorname KLAUSUR: Entwurf und Implementierung von Informationssystemen (32561) TERMIN: 11.09.2013, 14.00 16.00 Uhr PRÜFER: Univ.-Prof. Dr. Stefan Strecker

Mehr

KREDITVERZEICHNIS Konfiguration Ausgabe: 20.02.13 1/13. Dokumentation KREDITVERZEICHNIS. Teil 2. Konfiguration

KREDITVERZEICHNIS Konfiguration Ausgabe: 20.02.13 1/13. Dokumentation KREDITVERZEICHNIS. Teil 2. Konfiguration KREDITVERZEICHNIS Konfiguration Ausgabe: 20.02.13 1/13 Dokumentation KREDITVERZEICHNIS Teil 2 Konfiguration Stand 20.02.2013 KREDITVERZEICHNIS Konfiguration Ausgabe: 20.02.13 2/13 Inhalt 1. KONFIGURATION...

Mehr

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE

Mehr

Mehr zu Datentypen: Felder, Zeiger und Strukturen

Mehr zu Datentypen: Felder, Zeiger und Strukturen Mehr zu Datentypen: Felder, Zeiger und Strukturen Arbeiten allein mit einzelnen Variablen jeweils eines Basisdatentyps wird für komplexere Aufgaben schnell unpraktisch Verminderte Verständlichkeit und

Mehr

Praktikum Betriebssysteme 1. Aufgabe (1)

Praktikum Betriebssysteme 1. Aufgabe (1) FG TECHNISCHE INFORMATIK U BS 041 01 TH 09 Praktikum Betriebssysteme 1. Aufgabe (1) Es wird ein unter LINUX lauffähiges C++-Programm ptab, mit dem Informationen über die Partitionierung von Festplatten

Mehr

Übungspaket 19 Programmieren eigener Funktionen

Übungspaket 19 Programmieren eigener Funktionen Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame

Mehr

Modellierung und Programmierung

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

Mehr

Programmieren in C. Eigene Datentypen per typedef und Strukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Eigene Datentypen per typedef und Strukturen. Prof. Dr. Nikolaus Wulff Programmieren in C Eigene Datentypen per typedef und Strukturen Prof. Dr. Nikolaus Wulff C Datentypen Variablen in C sind immer von einem bestimmten Datentyp, z. B. int, float, char, etc. Zusätzlich definiert

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

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

Wirtschaftsinformatik I

Wirtschaftsinformatik I Wirtschaftsinformatik I - Tutorium 6/ 7 (April 2010) Zusatzinformationen - Lösungsvorschläge Wirtschaftsinformatik I Tutorium Jochen Daum (4.Semester BWL) Universität Mannheim Rechtshinweis: Diese Präsentation

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

Übung zur Vorlesung Programmieren in C

Übung zur Vorlesung Programmieren in C Übung zur Vorlesung Programmieren in C 6 Pointers Marvin Gülker Ruhruniversität Bochum Wintersemester 2015/2016 Marvin Gülker (Ruhruniversität Bochum) 6 Pointers Wintersemester 2015/2016 1 / 29 Gliederung

Mehr

5.4 Klassen und Objekte

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

Mehr

Kapitel 11: Wiederholung und Zusammenfassung

Kapitel 11: Wiederholung und Zusammenfassung Wiederholung und Zusammenfassung 1: Begriff und Grundprobleme der Informatik Begriff Informatik Computer als universelle Rechenmaschine Grenzen der Berechenbarkeit Digitalisierung Problem der Komplexität

Mehr

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

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

Mehr

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