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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 C Grundlagen Die Zunahme von integrierter Software innerhalb elektronischer Geräte bedingt enorme Entwicklungskosten. Häufigste Programmiersprache für embedded systems ist Assembler. Ihr Vorteil ist, dass die Prozessoren die Programme wesentlich schneller abarbeiten als andere Programmiersprachen. Ihr Nachteil besteht darin jedoch, dass sie nicht selbst dokumentierend ist und somit unmöglich ist die Programme ohne Kommentare durch andere Programmierer zu erweitern. Selbst der Assemblerprogrammierer wird Probleme bekommen, wenn er dieses Programm nach einigen Monaten erweitern soll. Mit Hochsprachen wie der Programmiersprache C können Programmbibliotheken angelegt werden, wie z.b. die LCD-Steuerung. Dadurch wird es sehr einfach diese Programmbibliothek für den jeweiligen Mikrocontroller anzupassen. Es können bestimmte Programmlösungen modulartig in Projekte integriert werden. Auf diese Weise wird die Entwicklungszeit erheblich verkürzt, da so bestimmte Programmstrukturen von vorherigen Projekten intergriert werden können. Es sei an dieser Stelle ausdrücklich darauf hingewiesen, dass mit diesen Seiten nicht das Ziel verfolgt wird ein C-Lehrbuch zu ersetzen (Internet & Co. bieten hier reichlich Kurse an). An dieser Stelle sollen lediglich die wichtigsten Befehle der Programmiersprache C speziell für Mikrocontroller beschrieben werden. Dieser "kleine C-Kurs" ist folgendermaßen unterteilt: Datentypen in C Präprozessor Aufbau und Struktur eines C-Programmes Operatoren Kontrollstrukturen Arrays Zeiger Strukturen

2 Datentypen in C Variablen Während der Ausführung eines Programms müssen Daten verschiedenster Art verarbeitet und gespeichert werden. Es wird unterschieden zwischen Ganzzahlen, Zeichen, und Fließkommazahlen. Der Datentyp bestimmt die Größe des zu reservierenden Speicherplatz und gibt an, in welchem internen Format, ein Wert gespeichert wird. Folgende Datentypen gibt es: int char float double long double Speicherklassen int Integer (= engl.: Ganzzahl). Dieser Datentyp dient der Speicherung von ganzen Zahlen und belegt einen Speicherbereich von 2 Byte. Dementsprechend geht der Wertebereich von bis Durch Voranstellen von Attributen lässt sich dieser Grunddatentyp modifizieren. Mögliche Attribute sind: unsigned (= vorzeichenlos), long (= doppelte Länge) short (= kurz) Wird unsigned vorangestellt geht der Wertebereich von 0 bis Voranstellen von short bedingt, dass 2 Byte Speicher belegt werden. Voranstellen von long bedingt, dass 4 Byte Speicher belegt werden. long und short können auch wieder mit unsigned kombiniert werden. char Dient zur Speicherung von einem Zeichen oder ganzen Zahlen. Speicher: 1Byte. Wertebereich: -128 bis Wird unsigned vorangestellt geht der Wertebereich von 0 bis 255. float Dient der Speicherung von Fließkommazahlen. Speicher: 4 Byte Er hat eine Genauigkeit von 6 Stellen und einen Wertebereich von 1.2 E-38 bis 3.4 E+38 Double Dient der Speicherung von Fließkommazahlen. Speicher: 8 Byte 1 Bit Vorzeichen, 11 Bit Exponent, 52 Bit Mantisse. Er hat eine Genauigkeit von 15 Stellen. Wertebereich: 2.3 E-308 bis 1.7 E+308.

3 Long double Stellt man dem Datentyp double ein long voran, werden 10 Byte Speicher belegt. Davon werden das erste Bit für das Vorzeichen, 16 Bit für den Exponenten und 63 Bit für die Mantisse reserviert. Die Genauigkeit beträgt dann 19 Stellen. Wertebereich: 3.4 E-4932 bis 1.1 E Speicherklassen Jedes Objekt z.b. Variable hat ein Attribut Speicherklasse, das üblicherweise als erstes in einer Deklaration angeführt wird. Wenn keine angegeben sind, besitzt das Objekt die Speicherklasse auto. static Durch die Speicherklasse static ist ein Objekt global, jedoch nur im aktuellen C-Modul. Eine static- Variable innerhalb einer Funktion behält ihren Wert bis zum nächsten Funktionsaufruf bei. static int x; extern Durch extern werden externe Objekte, die sich in andere C-Module oder in der Library befinden, im aktuellen C-Modul bekannt gemacht. extern int lcd_zaehler; register Dem Compiler wird mit der Speicherklasse register mitgeteilt, dass diese Variable häufig benötigt wird und der Zugriff darauf optimiert werden sollte. Der Compiler kann z.b. diese Variable in ein Register des Prozessors speichern. Jedoch ist dem Compiler überlassen, was er daraus erzeugt. Sie wird in der Mikrocontroller-Programmierung nicht verwendet. register char zeichen auto Die Speicherklasse auto ist Standard innerhalb von Funktionen, d.h. diese Speicherklasse muss nicht benutzt werden. Die folgenden beiden Beispiele haben die gleiche Wirkung: auto char zeichen; char zeichen; Alle deklarierten Variablen außerhalb von Funktionen sind in allen Modulen eines Programmes bekannt. Variablen innerhalb einer Funktion existieren nur dann, wenn gerade diese Funktion ausgeführt wird. Diese Variablen behalten ihre Werte nicht bis zum nächsten Funktionsaufruf.

4 volatile Mit volatile weist man den Compiler darauf hin, dass der Wert dieser Variable von außerhalb verändert werden kann. Ein externer Prozess kann z.b. eine Interrupt Service Routine sein. Die Speicherklasse garantiert, dass bei jedem Lesezugriff auf diese Variable der Wert immer erneut aus dem Speicher gelesen wird. Sollte ein Interrupt-Routine eine entsprechende Speicherstelle ändern, ohne das jeweilige Register zu ändern, würden beim Auslesen der Variable falsche Werte entstehen, weil der Compiler nicht weiß, ob die Variable in der Interrupt-Routine verändert wurde. Um dies zu verhindern, verwendet man die Speicherklasse volatile. volatile unsigned long wert; const Ein Objekt mit dem Schlüsselwort const (für konstant) muß initialisiert werden und kann anschließend nicht mehr verändert werden. Ihm dürfen insbesondere keine neuen Werte zugewiesen werden. Der Compiler hat die Möglichkeit, const-objekte als normale Variablen in anderen Speicherbereichen zu verwalten. const double PI = ;

5 Präprozessor Bevor in C der Compiler den Quelltext zum Übersetzten bekommt, wird zuerst der Präprozessor aufgerufen, um den Programmcode vorzubereiten. Alle Ausdrücke im Programmcode, die mit einem # (Rautezeichen) beginnen, sind für den Präprozessor bestimmt. Wichtig ist, das Präprozessoranweisungen nicht mit einem Semikolon (;) beendet werden dürfen. Die Präprozessoranweisung ersetzt oder fügt einen Text ein, d.h. sie fügt z.b. eine Headerdatei ein oder ersetzt den Text mit einer symbolischen Konstante. Daneben kann der Präprozessor auch Makros bearbeiten und bestimmte Programmabschnitte steuern. Präprozessoranweisungen Anweisung #include #define #if #undef #elif #else #ifdef #ifndef #endif #error #pragma Bedeutung fügt einen Dateiinhalt ein z.b. eine Headerdatei definiert ein Makro oder eine symbolische Konstante Verzweige in Abhängigkeit von einem Ausdruck Aufheben von Makros, d.h. ab jetzt wird makro nicht mehr ersetzt Weitere Alternative wenn #if nicht zutrifft Alternative wenn #if, #ifdef oder #ifndef nicht zutreffen. Verzeige, wenn eine Präprozessorkonstante definiert wurde. Verzeige, wenn eine Präprozessorkonstante nicht definiert wurde. Abschluß für #if #ifdef oder #ifndef Fehlernachricht ausgeben. Herstellerspezifische Aktionen Dateieinbindung Die #include Anweisung ist eine der meist genutzten Möglichkeiten des Präprozessors. #include "Dateiname.h" Sucht Dateiname.h im aktuellen Verzeichnis #include <Dateiname.h> Sucht in "Standard"-Verzeichnissen Definition von symbolischen Konstanten Die #define Präprozessoranweisung ermöglicht die Definition von symbolischen Namen und Konstanten, z.b. #define PI Mit dieser Anweisung wird erreicht, das der Compiler an allen Stellen im Programm, an denen PI steht die Konstante einsetzt. Die Arbeit mit symbolischen Namen erleichert die Wartung von Programmen und verbessert die Lesbarkeit des Quellcodes. Es können auch Makros definiert werden. Ein Makro sieht ähnlich aus, wie eine Funktion. Allerdings handelt es sich bei dem Ersatztext um C-Anweisungen. #define square (x) (x * x)

6 Bedingte Übersetzung Ein weiterer Einsatzbereich des Präprozessors ist die Steuerung des Übersetzungsprozesses. Gedacht ist dies, um z.b. verschiedene Mikrocontroller mit dem gleichen Programm einzusetzen oder um bestimmte Abschnitte des Programmes ablaufen oder ausblenden zu können, für z.b. eine Fehlersuche. #if (picversion) #include <16C72A.h> #else #include <17C72.h> oder #ifdef DEBUG printf("a hat hier den Wert: %f\n", a); #endif Fehlernachrichten ausgeben Eigene Präprozessor-Fehlermeldungen lassen sich mit #error ausgeben, was außerdem den Compilierungsvorgang abbricht. #ifdef ALARM #error "ALARM" wurde ausgelöst! #endif

7 Aufbau und Struktur eines C-Programmes Nach Definition der C-Umgebung (Präprozessor, Datentypen) wird das Schlüsselwort "main" aufgerufen. Ohne dies wäre der Start eines Programmes nicht möglich. Denn eine main-funktion wird immer benötigt, damit der Compiler weiß, wo er beginnen muss, um das Programm zu übersetzen. Anschließend folgen " ( ) ", die verschiedene Funktionen kennzeichnen. Dann beginnt das eigentliche Programm durch den Blockbegrenzer " ", welcher somit den Blockbeginn darstellt. Um das Programm später zu beenden verwendet man den Blockbegrenzer " " für Blockende. Die geschweiften Klammern " " fassen demnach Anweisungen zu einem Block zusammen. Kommentare können folgendermaßen integriert werden : // Kommentar Kommentare können auch über mehrere Zeilen verlaufen. Mit " /* " beginnt ein Kommentar und mit " */ " endet das entsprechende Kommentar. Die Trennung einzelner Anweisungen erfolgt durch " ; ". unsigned int x,y; void main () y = 7; x = 0; while ( TRUE ) /* Endlosschleife (wird immer bei Mikrocontroller-Programmierung verwendet) */ x++; if (x == y ) printf(" Ereignis wurde ausgelöst! "); Nach dem hier ein einfacher Aufbau eines C-Programmes beschrieben wurde, folgen nun die wichtigsten und effektivsten Hilfsmitteln in C, die Funktionen. name ( Parameterliste, optional ) Vereinbarungen Anweisungen return Funktionswert, optional Dies ist ein Hilfsmittel, um Problemstellungen in kleine Teilprobleme zerlegen zu können. Typische Anwendungen für Funktionen sind immer wiederkehrende Aufgaben zu erledigen. Für die wichtigsten Aufgaben ( z.b. sin,cos,tan,usw.) gibt es bereits Funktionen, die in der C-Programmbibliothek enthalten sind.

8 Die return-anweisung darf an jeder beliebigen Stelle in der Funktion stehen. Durch den Aufruf dieser Anweisung erfolgt sofort der Rücksprung in die aufrufende Funktion. Die return-anweisung kann auch ganz fehlen und der Rücksprung erfolgt erst nach Ende der Funktion ( geschweifte Klammer " " ). Es kann auch ein Wert zurückgegeben werden. Dann wird hinter der return-anweisung in runden Klammern der Funktionswert angegeben. Bevor eine Funktion aufgerufen werden kann, muss diese deklariert werden. Dem Compiler müssen Funktionen immer vor der main()-funktion bekannt sein. Zum #include <stdio.h> void ausgabe(); void main() ausgabe();... void ausgabe() printf("hallo Welt\n");

9 Operatoren Operatoren stellen das Mittel zur Manipulation von Daten dar. Ein simples Beispiel ist der Additionsoperator `+'. Arithmetische Operatoren Arithmetische Kurzform-Operatoren relationale Operatoren Logische Operatoren Bitoperatoren Zuweisungsoperatoren Arithmetische Operatoren: Operatoren Beispiel Bedeutung ++ ++x vorherige Inkrementierung (Erhöhung um 1) ++ x++ nachfolgende Inkrementierung -- --x verherige Dekrementierung (Erniedrigung um 1) -- x-- nachfolgende Dekrementierung + x+2 Addition - x-3 Subtraktion * 3*x Multiplikation / x/4 Division % x%3 Modulo (Divisionsrest) = x = 4 + x Zuweisung Arithmetische Kurzform-Operatoren Operator Beispiel Bedeutung += x += 4 x = x + 4 -= x -= 4 x = x - 4 *= x *= 4 x = x * 4 /= x /= 4 x = x / 4 %= x %= 4 x = x % 4

10 relationale Operatoren Operator Beispiel Bedeutung < x < 4 kleiner als > x > 4 grösser als <= x <= 4 kleiner als oder gleich >= x >= 4 grösser als oder gleich == x == 4 Gleich!= x!= 3 ungleich Logischer Datentyp Mittels der logischen Operatoren ist es möglich zwei oder mehrere Vergleichoperationen auf einmal durchzuführen und als Ergebnis entweder den Wert für wahr oder für falsch zu erhalten. Operator Beispiel Bedeutung!!x logische Negation && x && y logisches UND x y logisches ODER = z = x && y Zuweisung If ( (!X ) && Y) If ( X Y ) Bitoperatoren: Mit den Bitoperatoren können einzelne Bits beeinflusst werden, dabei wird eine Bytevariable mittels dieser Bitoperationen mit einem Bitmuster verknüpft. Operator Beispiel Bedeutung << x << 2 Bits nach links schieben (Multiplikation mit 2er-Potenzen) >> x >> 2 Bit nach rechts schieben (Division mit 2er-Potenzen) & x & 4 bitweises UND ^ x ^ 4 bitweises Exklusiv-ODER (XOR) x 4 bitweises ODER ~ ~x bitweises negieren Beispiel 1: char x,y; char fertig; x = 3; y = x << 2; if (y == 12) fertig = 1;

11 An diesem Beispiel werden die Bits der Variable x um 2 Stellen nach links verschoben, wobei von rechts Nullen nachgezogen werden. Dies entspricht der Multiplikation mit binäre Darstellung der Zahl alle Bits um 2 Stellen nach links verschoben Die Variable y hat nun den Wert 12 ( ). Beispiel 2: x = x & y; Diese Anweisung bewirkt eine bitweise UND-Verknüpfung, d.h. das Ergebnis-Bit ist 1, wenn die Bits der beiden Operanden auch gleich 1 sind, ansonsten 0. In der binären Darstellung sieht das wie folgt aus: binäre Darstellung der Zahl binäre Darstellung der Zahl bitweises UND; Ergebnis: 2 Zuweisungsoperatoren Der einfachste Zuweisungsoperator ist "=". Dabei wird dem linken Operanden der Wert des rechten Operanden zugewiesen wird. Der Wert eines Zuweisungs-Ausdruckes ist der zugewiesene Wert. y = x + 3;

12 Kontrollstrukturen Kontrollstrukturen dienen dazu, ein Problem übersichtlich und strukturiert zu formulieren. Die wichtigsten Kontrollstrukturen sind Auswahl (Entscheidungen) und Schleifen. Dazu kommen noch einige andere Kontrollanweisungen. for - Schleife if - Anweisung switch - Anweisung while - Anweisung do while - Anweisung for - Schleife Bei der for-schleife handelt es sich um eine Schleife, deren Ausführung nach einer vorher bestimmten Anzahl von Durchläufen abbricht. Eine for-schleife hat immer folgende Struktur: for( Initialisierung; Fortsetzungsbedingung; Nachlaufanweisung ) Anweisungen; Bei der Initialisierung wird eine Zählervariable angegeben, die zur Erzeugung der Schleife verwendet wird. Der Anweisungsblock wird dann solange ausgeführt, bis die Fortsetzungs-Bedingung nicht mehr erfüllt ist. Die Nachlaufanweisung gibt an, was am Ende jedes Schleifendurchlaufs geschieht. int i,f[10]; for (i=0;i<10;i++) f[i] = i; Typische Fehler bei der Verwendung einer for-schleife: - Am Ende der Schleife darf kein Semikolon gesetzt werden, ausser es ist gewollt: for (i=1;i<9;i++); Korrekt wäre es: for (i=1;i<9;i++)

13 If - Anweisung Eine 'if'-anweisung wertet einen Bedingungs-Ausdruck aus und verzweigt je nach Wert des Ausdrucks. Sie kann optional einen else-zweig haben. Ist der Wert des Ausdrucks ungleich 0 (true), werden die Anweisungen ausgeführt, sonst werden sie übersprungen und es werden die Anweisungen des else-zweigs ausgeführt (falls vorhanden). Sie hat folgenden Aufbau: if (Ausdruck) Anweisung(en) else Anweisung(en) If (Schalter == 1) printf("schalter ist an"); else printf("schalter ist aus"); Es gibt noch ein Operator, der eine Ähnlichkeit besitzt mit der Kontrollstruktur if ( ) - else. Der ternäre Operator ist jedoch weniger aufwendig zu schreiben und kann mitten in Ausdrücke gesetzt werden. [Bedingung]? [Wert, wenn WAHR] : [Wert, wenn FALSCH] Hier ein Beispiel für ein ternären Operator : x = y<6? 1 : 0; // Wenn y<6 ist, dann ist x =1 sonst 0 Typische Fehler bei der Verwendung einer IF-Abfrage: Ein häufig gemachter Fehler ist if (value = 5). Hier wird der Variablen value der Wert 5 zugewiesen, und der Anweisungsblock wird ausgeführt. Dabei ist es jedoch egal, ob der Wert gleich 5 ist, denn value wird jetzt der Wert 5 zugewiesen. Diese IF-Abfrage ist also immer wahr. Der Compiler zeigt auch keinen Fehler. Die richtige Syntax wäre aber if (value == 5).

14 Switch - Anweisung Zur Mehrfachauswahl ist es anstelle von else-if Ketten oft günstiger die Kontrollstruktur, die für eine solche Mehrfachauswahl vorgesehen ist, zu verwenden. In C heißt diese Kontrollstruktur switch-case. Sie hat folgenden Aufbau: switch (Ausdruck) case Konstante1: Anweisung1; Break; case Konstante2: Anweisung2; Anweisung21; Break; case Konstante3: Anweisung3. break;.. default: Anweisung; Break; Wenn der Ausdruck in der Switch-Anweisung erfüllt ist, wird überprüft, ob der Ausdruck die unterschiedlichen Konstanten beinhaltet. Die Konstanten müssen ganzzahlig bzw. Zeichenketten sein. Die Default-Anweisung ist optional und wird angesprochen, wenn keine der anderen Bedingungen zutrifft. Es ist notwendig nach jeder Mehrfachauswahl eine break-anweisung zu setzen, da sonst die nächste Auswahl mit ausgeführt wird. Switch (Taste) case 1: printf("die Taste ist 1 wurde gedrückt"); break; case 2: printf("die Taste ist 2 wurde gedrückt"); break; case 3: printf("die Taste ist 3 wurde gedrückt"); break; default: printf("es wurde keine gültige Taste gedrückt"); break;

15 While - Anweisung In der While-Schleife wird zunächst eine Bedingung bewertet und danach die abhängige Anweisung ausgeführt: While (bedingung) anweisung1; anweisung2; While (Taste == 1) zeit++; - Fehler durch ein Semikolon am Ende einer While-Anweisung: int i=0; while (i<5);... Durch diesen Semikolon wird immer der Anweisungsblock innerhalb der geschweiften Klammer ausgeführt und hat nichts mehr mit der Bedingung der While-Schleife zu tun. Do while - Anweisung Im Gegensatz zur While-Schleife überprüft die do-while Schleife die Schleifenbedingung nach jedem einzelnen Schleifendurchlauf, so dass diese Art von Schleifen immer einmal durchlaufen wird. do Anweisung1; Anweisung2; while (bedingung); do zeit++; while (Taste == 1);

16 Arrays Alle Datentypen lassen sich zu Feldern anordnen. Die Definition von Feldern unterscheidet sich bis auf die eckigen Klammern, in denen die Feldgröße steht, nicht von einer gewöhnlichen Variablendefinition. Der Zugriff auf Felder erfolgt über den Operator [ ] (eckige Klammern). Alle Felder beginnen mit dem Element 0. Ein Feld, welches mit 10 Elementen definiert wird, hat die erlaubten Indizes von 0 bis 9. void main() int feld[3]; // Definition feld[0] = 1; // an Element 0 wird 1 zugewiesen feld[1] = 2; // an Element 1 wird 2 zugewiesen feld[2] = 3; // an Element 2 wird 3 zugewiesen feld[3] = 4; // Falsche Zuweisung an Element 3 Bei der letzten Zuweisung gibt der Compiler eine Fehlermeldung aus, weil das Array Feld nur insgesamt 3 Elemente durch die Definition besitzt (Element 0,Element 1, Element 2 sind gleich 3 Elemente). Felder mit mehreren Dimensionen werden einfach durch eine weitere Klammer definiert. Ein zweidimensionales Feld z.b. a [2] [3], ein dreidimensionales z.b. a [2] [3] [4] usw.

17 Zeiger in C Während andere Programmiersprachen fast ohne Zeiger (Pointer) auskommen, lebt die Programmiersprache C vom Zeiger. Bei der Übergabe von Variablen an Funktionen, deren Inhalt verändert wird, bei Feldern und bei Strings spielen Zeiger eine wichtige Rolle. Ein Zeiger zeigt auf einen Speicherbereich irgendwo im Speicher. Die Definition eines Zeigers "pointer1" auf einen char sieht so aus: char *pointer1 Der Zugriff auf den Inhalt eines Zeigers geschieht mit dem Dereferenzierungsoperator (oder auch Indirektionsoperator genannt) " * " und mit dem Referenzierungsoperator " & " kann die Adresse eines Objektes gebildet werden. int a; int *b; b = &a; // b erhält die Adresse von a *b = 5; // *a und damit auch b sind gleich 5 *b++; // *a und damit auch b sind gleich 6 a++; // *a und damit auch b sind gleich 7 Wird der Indirektionsoperator vorangestellt, erkennen Sie, dass nicht auf den Zeiger zurückgegriffen werden soll, sondern auf das Datenobjekt, dessen Anfangsadresse sich im Zeiger befindet. Wichtig zu wissen ist, dass Sie verstehen, dass einem Zeiger kein Wert übergeben wird, sondern eine Adresse, um anschließend mit dem Wert dieser Adresse zu arbeiten. Hier ein Beispiel für einen typischen Fehler beim Benutzen von Zeigern: void main () int *pointer1; *pointer1 = 10; Dem Zeiger "pointer1" wurde hier zuvor keine gültige Adresse zugewiesen. Dies bedeutet, dem Zeiger "pointer1" steht beim Start des Programms eine Adresse zur Verfügung, die durch ein zufälliges Bitmuster vom Linker erzeugt wurde. Zeiger werden häufiger als Rückgabewerte von Funktionen bei Strings oder Strukturen verwendet. Also eine effiziente Methode um Datenobjekte aus einer Funktion zurückzugeben. Im folgenden finden Sie ein Beispiel für Zeiger auf Strings: char *string = "Hallo Welt"; Hier zeigt ein Zeiger auf eine Stringkonstante. Der Zeiger zeigt auf die Anfangsadresse dieser Konstante, den Buchstaben 'H'. Hier ein Beispiel für das Verwenden eines Zeigers auf einem String:

18 #include <stdio.h> void ausgabe (char *str) printf("%s\n",str); void main() char *string = "Hallo Welt"; ausgabe(string);

19 Strukturen Es gibt verschiedene Datenstrukturen in der Programmiersprache C. Folgende Themen werden hier erläutert: Struct Zeiger auf Strukturen Bitfelder Union Enum Struct In einer Struktur werden unterschiedliche Datentypen zusammengefasst. Danach kann man auf diese Struktur zugreifen wie auf einfache Variablen. struct typname Datentyp1; Datentyp2; Datentyp3;... Datentyp n; Variablen_Bezeichner (optional) ; Um die Definition und Anwendung besser zu verdeutlichen, folgt ein struct adress char vorname[25]; char nachname[25]; long PLZ; char ort[25]; int geburtsjahr; adressen; Erst in dem Moment, in dem Variablen dieses Typs definiert werden, reserviert der Compiler den Speicherplatz. Später kann auch eine Variablenbezeichnung angegeben werden. Zum struct adress char vorname[25]; char nachname[25]; long PLZ; char ort[25]; int geburtsjahr; ; main() struct adress adressen;... In diesem Beispiel wird eine Struktur mit der Bezeichnung adressen in der Main-Funktion definiert, die 5 Variablen enthält. Die Struktur als Ganzes kann mit adressen angesprochen werden, eine Komponete mit Hilfe einer Punktnotation. Zum

20 adressen.vorname oder adressen.plz Zeiger auf Strukturen Es ist auch möglich, einen Zeiger auf eine Struktur zu definieren. Bei großen Strukturen ist es effektiver, an Stelle der Struktur selbst einen Zeiger auf die Struktur zu übergeben. Ein Zeiger wird folgendermaßen auf eine Struktur definiert: struct StrukturtypName *zeiger Um auf ein Strukturelement zu zugreifen, müssen Sie folgendes schreiben: (*zeiger).strukturelement Für die Übersichtlichkeit gibt es auch eine Vereinfachung : zeiger->strukturelement Hier ein struct zeit int sekunden; int minuten; int stunden; ; void ausgabe( struct zeit *time); main() struct zeit uhrzeit; uhrzeit.sekunden = 20; uhrzeit.minuten = 30; uhrzeit.stunden = 15; uhrzeit.sekunden++; ausgabe (&uhrzeit); void ausgabe ( struct zeit *time) printf (lcd_putc,"zeit: %02u:%02u:%02u",time->stunden,time->minuten,time->sekunden);

21 Bitfelder Innerhalb von Strukturen und Unions, die weiter unten erläutert werden, können auch Bitfelder definiert werden: variable : bit_anzahl Dadurch können Bitfelder Teile einer oder meherer Variablentypen definieren. Zum struct portlayout_b unsigned int rs_lcd : 1; unsigned int rw_lcd : 1; unsigned int enable_lcd : 1; unsigned int unused : 1; unsigned int data_lcd : 4; portb; Mit dieser Definition wird eine Strukturvariable für ein Port in einem Mikrocontroller mit insgesamt 5 Bytes definiert, wenn der Typ int ein Byte ist. Ein großer Nachteil, der in der Mikrocontroller Programmierung entscheidend ist, ist die Speicherplatz Verschwendung für Variablen. Denn es wird nur die Anzahl der angegeben Bits in der Variable verwendet. Die erlaubten Datentypen für Bitfelder nach ANSI-Standard sind signed int, unsigned int und int. Bitfelder sind bei der Mikrocontroller-Programmierung sehr effektiv, sobald der Compiler keine Bitdefinitionen zuläßt. Ein Vorteil ist das direkte Steuern von mehreren Portpins durch Bitfelder. Anwendungen wären z.b. BCD-Code Ausgabe an mehreren Pins und oder die 4-Bit oder 8-Bit Datenausgabe für ein LCD- Display. Union Um einen bestimmten Bereich des Speicherplatzes simultan auf unterschiedlicher Weise benutzen zu können, werden Unions verwendet. Während die Elemente eines Strukturtyps speicherplatzmäßig nebeneinander liegen, liegen die Elemente einer Union alle übereinander. Das heißt die Elemente einer Union teilen sich die gleiche Speicheradresse. Die Syntax ist ähnlich wie bei struct, das Schlüsselwort struct wird durch union ersetzt. // Hier wird ein union definiert union complex long double zahl; char bytes[8]; ; main() union complex werte;... wert.zahl = 30506; // Hier wird das Element zahl beschrieben test.bytes[3] = 3; // Vorsicht: Dadurch wird auch das Element zahl verändert Wie Sie sehen sollte bei unions man immer wissen, welches Element gerade genutzt wird. Dies kann man am besten durch eine Variable im Programm, der als Merker dient.

22 Enum Der Typ enum wird genutzt, um eine Aufzählungsliste zu erstellen. Er wird auch häufig genutzt, um eine Reihe von #define-anweisungen zu definieren: #define eins 1 #define zwei 2 #define drei 3 #define vier 4 Durch den Typ enum wird dieses Beispiel folgendermaßen vereinbart: enum eins=1,zwei,drei,vier; Die Werte der Konstanten beginnen links bei 1 und erhöhen sich nach rechts jeweils um 1 (eins=1, zwei=2, drei=3, vier=4). Hier ein weiteres enum Wochentag Montag, Dienstag, Mittwoch,Donnerstag, Freitag, Samstag, Sonntag ; Wenn keine Werte übergeben werden, bekommt die erste Konstante den Wert 0 und erhöht nach rechts jeweils um 1. Ich verwende immer den enum-typ, um die jeweiligen Bitstellen zu definieren. Zum enum BITSTELLE Bit0=1,BIT1=2,BIT2=4,BIT3=8,BIT4=16,BIT5=32,BIT6=64,BIT7=128 ; Dadurch bekommt man ein sehr guten Überblick, wenn z.b. die Ports eines Mikrocontroller als Einoder Ausgänge definiert werden sollen, anstatt Binär- oder Hexadezimal-Werte bei der Initialisierung anzugeben.

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

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

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

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

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

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 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

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

Mehr

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

Übersicht Programmablaufsteuerung

Übersicht Programmablaufsteuerung Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen

Mehr

Fallunterscheidung: if-statement

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

Mehr

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

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

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 Programmierung

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

Mehr

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

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

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

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

Mehr

Diana Lange. Generative Gestaltung Operatoren

Diana Lange. Generative Gestaltung Operatoren Diana Lange Generative Gestaltung Operatoren Begriffserklärung Verknüpfungsvorschrift im Rahmen logischer Kalküle. Quelle: google Operatoren sind Zeichen, die mit einer bestimmten Bedeutung versehen sind.

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

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

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

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

Programmierung in C. Grundlagen. Stefan Kallerhoff

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

Mehr

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

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

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen Grundlagen der Programmierung Prof. H. Mössenböck 3. Verzweigungen If-Anweisung n > 0? j n if (n > 0) x = x / n; ohne else-zweig x x / n j max x x > y? n max y if (x > y) max = x; else max = y; mit else-zweig

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

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

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

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

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

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten

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

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife Praktikum Ingenieurinformatik Termin 2 Verzweigungen (if-else), printf und scanf, while-schleife 1 1. Import/Export von Eclipse-Projekten 2. Verzweigungen (if-else-anweisung) 3. printf und scanf 4. Übungsaufgaben

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

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

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

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 keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

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

Kontrollstrukturen, Strukturierte Programmierung

Kontrollstrukturen, Strukturierte Programmierung , Strukturierte Programmierung Steuer- und Kontrollfluss Strukturierte Programmierung Arten von Strukturblöcken Sequenz Alternative Iteration C-Spezifisches Seite 1 Elementare Algorithmen SelectionSort

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

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

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

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

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07) C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07) 1. Aufgabe 6 Punkte Geben Sie Definitionen an für: float var; 1 a) eine float-variable var: b) einen Zeiger pvar, der float *pvar = &var; 1 auf die

Mehr

25 kann ohne Rest durch 5 geteilt werden! ist wahr

25 kann ohne Rest durch 5 geteilt werden! ist wahr Lehrbrief 2: Lektion 8 - C -Praxis 4-1 - 5.2 Einfache Entscheidungen mit if und die Vergleichsoperatoren Nun tauchen wir immer tiefer in die Geheimnisse von C ein und beschäftigen uns mit einem sehr wichtigen

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

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache Agenda für heute, 4. März, 2010 Zusammengesetzte if-then-else-anweisungen Datentypen Pascal ist eine streng typisierte Programmiersprache Für jeden Speicherplatz muss ein Datentyp t (Datenformat) t) definiert

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

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

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

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54 PHP 5.4 Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012 Grundlagen zur Erstellung dynamischer Webseiten ISBN 978-3-86249-327-2 GPHP54 5 PHP 5.4 - Grundlagen zur Erstellung dynamischer Webseiten

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

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

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

Mehr

Modul 122 VBA Scribt.docx

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

Mehr

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

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

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

S7-Hantierungsbausteine für R355, R6000 und R2700

S7-Hantierungsbausteine für R355, R6000 und R2700 S7-Hantierungsbausteine für R355, R6000 und R2700 1. FB90, Zyklus_R/W Dieser Baustein dient zur zentralen Kommunikation zwischen Anwenderprogramm und dem Modul R355 sowie den Geräten R6000 und R2700 über

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

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

C/C++ Programmierung

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

Mehr

Java-Programmierung mit NetBeans

Java-Programmierung mit NetBeans Java-Programmierung mit NetBeans Steuerstrukturen Dr. Henry Herper Otto-von-Guericke-Universität Magdeburg - WS 2012/13 Steuerstrukturen Steuerstrukturen Verzweigungen Alternativen abweisende nichtabweisende

Mehr

Hochschule München, FK 03 FA SS 2012. Ingenieurinformatik

Hochschule München, FK 03 FA SS 2012. Ingenieurinformatik Hochschule München, FK 03 FA SS 2012 Ingenieurinformatik Zulassung geprüft vom Aufgabensteller: Teil 1/Aufgabe 1: 30 Minuten ohne Unterlagen, Teil 2/Aufgaben 2-4: 60 Minuten, beliebige eigene Unterlagen

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

Lua Grundlagen Einführung in die Lua Programmiersprache

Lua Grundlagen Einführung in die Lua Programmiersprache Lua Grundlagen Einführung in die Lua Programmiersprache 05.05.2014 Ingo Berg berg@atvoigt.de Automatisierungstechnik Voigt GmbH Die Lua Programmiersprache Was ist Lua? freie Programmiersprache speziell

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine PhotoLine S/W mit PhotoLine Erstellt mit Version 16.11 Ich liebe Schwarzweiß-Bilder und schaue mir neidisch die Meisterwerke an, die andere Fotografen zustande bringen. Schon lange versuche ich, auch so

Mehr

VisualBasic - Variablen

VisualBasic - Variablen Typisch für alle Basic-Dialekte ist die Eigenschaft, dass Variablen eigentlich nicht deklariert werden müssen. Sobald Sie einen Bezeichner schreiben, der bisher nicht bekannt war, wird er automatisch angelegt

Mehr

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16 Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

1.4.12 Sin-Funktion vgl. Cos-Funktion

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

Mehr

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

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

Mehr

Graphic Coding. Klausur. 9. Februar 2007. Kurs A

Graphic Coding. Klausur. 9. Februar 2007. Kurs A Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken. In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access Die Grundlagen der Datenbanken kurspc15 Inhaltsverzeichnis Access... Fehler! Textmarke nicht

Mehr

Prinzipieller Grundaufbau eines einfachen C-Programmes

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

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

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

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

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.) Seite 1/7 Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.) Hier sehen Sie eine Anleitung wie man einen Serienbrief erstellt. Die Anleitung

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

P r o g r a m m a b l a u f s t e u e r u n g

P r o g r a m m a b l a u f s t e u e r u n g Jede Programmiersprache braucht Konstrukte zur Steuerung des Programmablaufs. Grundsätzlich unterscheiden wir Verzweigungen und Schleifen. Schleifen dienen dazu, bestimmte Anweisungen wiederholt auszuführen,

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

Erstellen einer GoTalk-Auflage

Erstellen einer GoTalk-Auflage Erstellen einer GoTalk-Auflage 1. Bei dem Startbild Vorlage öffnen wählen 2. In dem folgenden Fenster Geräte Schablonen doppelt anklicken. - und schon öffnet sich der gesamte Katalog der verfügbaren Talker-Auflagen...eigentlich

Mehr

Kurze Einführung in die Programmiersprache C++ und in Root

Kurze Einführung in die Programmiersprache C++ und in Root Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung

Mehr

2 Einfache Rechnungen

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

Mehr

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

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

Mehr

Einführung in die Programmierung II. 2. Fundamentale Datentypen, Ausdrücke

Einführung in die Programmierung II. 2. Fundamentale Datentypen, Ausdrücke Einführung in die Programmierung II 2. Fundamentale Datentypen, Ausdrücke Stefan Zimmer 3. 5. 2006-1- Objekte im Speicher Ein Objekt ist für uns zunächst einfach ein fester Bereich im Speicher unseres

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

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

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

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe Tutorium Informatik 1 Aufgabe 2: Formatierte Ein- und Ausgabe Fachbereich: Elektrotechnik Inhaltsverzeichnis 1 Aufgabe 1 2 Benötigte Funktionen und Schlüsselwörter 2 Robert Halas / FH Regensburg - 2003

Mehr

Aufklappelemente anlegen

Aufklappelemente anlegen Aufklappelemente anlegen Dieses Dokument beschreibt die grundsätzliche Erstellung der Aufklappelemente in der mittleren und rechten Spalte. Login Melden Sie sich an der jeweiligen Website an, in dem Sie

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Serienbrief aus Outlook heraus Schritt 1 Zuerst sollten Sie die Kontakte einblenden, damit Ihnen der Seriendruck zur Verfügung steht. Schritt 2 Danach wählen Sie bitte Gerhard Grünholz 1 Schritt 3 Es öffnet

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