Erste Schritte der Programmierung in C

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

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

Kontrollfragen Mikrocontroller Programmiersprache C H1203 Felix Rohrer

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Angewandte Mathematik und Programmierung

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Herzlich willkommen!

C++ - Objektorientierte Programmierung Polymorphie

Teil II. Literatur zur C-Programmierung:

Systemprogrammierung

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

Probeklausur Name: (c)

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

einlesen n > 0? Ausgabe Negative Zahl

Effektiv Programmieren in С und C++

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

C++ - Objektorientierte Programmierung Konstante und statische Elemente

Unterlagen. CPP-Uebungen-08/

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

F Zeiger, Felder und Strukturen in C

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

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

Ausgabe:

C-Grundlagen. zur Programmierung des MicroControllersystems MiCoWi

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

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

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

Vorkurs Informatik: Erste Schritte der Programmierung mit C++

Programmierkurs. SoSe Markus Geveler Inst. f. Applied Mathematics, TU Dortmund.

Programmierung und Angewandte Mathematik

2. Programmierung in C

C/C++-Programmierung

Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15

Algorithmen zur Datenanalyse in C++

Einführung in die C-Programmierung

Lotto. eine Projektarbeit in DVT. von Sven Schwab

Grundlagen von C# - 1

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

Übersicht. Informatik 1 Teil 9: komplexe Datentypen (Strukturen, Enumerationen, Unions)

Programmieren in. Brian W. Kernighan Dennis M. Ritchie ANSIC. Mit dem C-Reference Manual in deutscher Sprache. Zweite Ausgabe

10 Die Programmiersprache C99: Zusammenfassung

2.1 Visual C Express installieren Visual C Express starten Visual C Express registrieren...

Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung

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

Integer Integer Integer (Voreinstellung) Integer Gleitkomma Gleitkomma leer/unbestimmt Integer ohne Vorzeichen Integer (explizit) mit Vorzeichen

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

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

AuD-Tafelübung T-B5b

Einführung in C. EDV1-04C-Einführung 1

2. Programmierung in C

Programmiersprachen Einführung in C

Zeiger (engl. Pointer)

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

8. Referenzen und Zeiger

Programmieren in C++ Templates

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

Vorkurs C++ Programmierung

Vorlesung Informatik I

Konstruktor/Destruktor

Programmiersprachen Einführung in C

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

4 Formelsammlung C/C++

Programmieren in C++ Überladen von Methoden und Operatoren

Übung zur Vorlesung EidP (WS 2018/19) Blatt 4

Das erwartet dich in diesem Buch 8. Kapitel 1 Aufbruch ins Programmierabenteuer 14

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

Programmieren in C / C++ Grundlagen C 4

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

Einführung in die Programmiersprache C

2. Programmierung in C

Programmierkurs C++ Datenstrukturen Seite 1

2. Programmierung in C

4. Objektorientierte Programmierung mit C++

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

Einführung in C ++ und die Objektorientierte Programierung

Arrays (Felder/Vektoren)

Transkript:

Erste Schritte der Programmierung in C C versus C++ Anatomie von C-Programmen für AVR- Mikrocontroller Unterschiede zwischen C++ und C 1

Grundlegende Unterschiede File-Extensions (Header und Quellcode) - C++:.h und.cpp - C:.h und.c C++ unterstützt objektorientierte Programmierung - Klassen, Objekte (Attribute, Methoden, Kapselung, Vererbung, Polymorphie, ) C unterstützt strukturierte Programmierung - Variablen, Strukturen, Funktionen C = (C++) - (OOP) - (ein paar syntaktische Features) ISO-Standard C99 ist etwas näher an C++ Syntax als ältere C-Standards - Einstellung der Option std=c99 (oder std=gnu99) in AVR- Studio-C-Projekten Variablen-Definitionen C (älterer Standard) nur zu Beginn eines Blockes möglich - ergibt Compiler-Fehler : for(int i = 0; i < n; i++) {} - korrekt: { /*irgendein Block beginnt*/ int i; for(i = 0; i < n; i++) {} } C++ und C99 an beinahe beliebiger Stelle im Quellcode - korrekt: for(int i = 0; i < n; i++) {} 2

Einstellungen in AVR-Studio Compiler Option: -std=c99 für neuen Standard Compiler Option: O0 für die ersten Versuche sollte die Optimierung des Compilers ausgeschaltet werden Project -> Configuration options Type-Casting C++ zwei Varianten möglich (double) x; double (x); C und C99 nur eine Variante möglich (double) x; 3

Kommentare C (ältere Standards): gleiche Kennzeichnung für einzeilige ili und mehrzeilige Kommentare: /* einzeiliger Kommentar */ /* mehrzeiliger Kommentar */ C++ und C99 // einzeiliger Kommentar /* mehrzeiliger Kommentar */ Boolscher Typ C++ bool b=true; b=false; C und C99: Typ bool ist unbekannt int b=1; b=0; 4

Funktionen Parameter Über- und Rückgabe bei Funktionsaufruf - C++ Call by Value Call by Reference (Referenz, Zeiger) - C und C99 Call by Value Call by Reference (nur Zeiger) Polymorphie - C++: Funktionen dürfen gleichen Namen haben, wenn ihre Parameterliste t unterschiedlich h ist: float mean(int min, int max); // Prototyp 1 float mean(int* parray, unsigned int len); // Prototyp 2 - C: Funktionen müssen unterschiedliche Namen haben float mean(int min, int max); float mean_a (int* parray, unsigned int len); Dynamisches Allokieren von Speicherplatz C++ unsigned int M=2; // Array-Größe int* p=new int[m]; p[0]=1; // irgend ein Programm delete [] p; C und C99 unsigned int M=2; int* p= malloc(sizeof(int)* M) p[0]=1; // irgend ein Programm free(p); // Array-Größe // Anzahl der Bytes 5

Tastatur-Eingabe und Bildschirm-Anzeige C++ cin/cout C und C99 scanf/printf Tastatur und Bildschirm gehören nicht zur Standard-Ausstattung eines Mikrocontrollers! C++ Strukturen - kennt Klassen und Strukturen class A A myobj(1,-1); // Objekt erzeugen { private: int m_x; int m_y; public: A(int x=0, y=0); }; - Strukturen werden behandelt wie Klassen ohne Methoden und mit public deklarierten Attributen struct A A mystruct; // Strukturvariable { mystruct.m_x=1; int m_x mystruct.m_y=-1; int m_y; }; 6

C - kennt nur Strukturen struct A { int m_x int m_y; }; Strukturen struct A mystruct; mystruct.m_x=1; mystruct.m_y=-1; // Schlüsselwort struct ist // notwendig - oder neuer Typ muss definiert werden typedef struct A t_a; // t_a ist neuer Typ t_a mystruct={1,-1}; const Weist den Compiler an, Variablen und Parameter von Funktionen als read-only, d.h. nicht veränderbar zu deklarieren const int A=10; A=-2; // Compiler-Fehler void foo(const int* p) { int x=*p; *p=10; // Compiler-Fehler } kein Unterschied zwischen C++ und C/C99! 7

Standard-Definitionsdateien in C (Beispiele) <stdio.h> Dateioperationen, o e Formatierte te Ausgabe, Formatierte te Eingabe, Ein- und Ausgabe von Zeichen, Positionieren in Dateien, Fehlerbehandlung <string.h> Funktionen für Zeichenketten <math.h> Mathematische Funktionen <stdlib.h> Hilfsfunktionen <limits.h> Definiert Konstanten und den Wertumfang von ganzzahligen Typen Funktionsbibliothek für ATMEL-Controller Name der Bibliothek: avr-libc Download der Dokumentation ab MIT-Download-Seite: immer die aktuelle Version der Dokumentation (online, als pdf....) 8

Dokumentation avr-libc Für den Schnellzugriff auf die Dokumentation der verfügbaren Funktionen im pdf-dokument, z.b. über den Module index Anatomie von C-Programmen für AVR-Mikrocontroller 9

Programmablauf für Mikrocontroller Definieren und Initialisieren der benötigten Variablen Initialisieren der benötigten Komponenten Mikrocontroller- Programme laufen in endlosen Schleifen! Programm, das mit Komponenten und Variablen arbeitet C-Programme für Mikrocontroller // bindet ein h-file ein, in dem alle IO-Adressen und // Konstanten für den eingestellten Mikrocontroller-Typ // definiert sind #include <avr\io.h> #define F_CPU 1e6 // eingestellte Prozessor-Taktfrequenz // weitere include-anweisungen für benötigte Funktionen der // avr-libc oder eigene Include-Files // Funktionsprototypen für eigene Funktionen int main(void) { // Definieren & Initialisieren der benötigten Variablen // Initialisieren der benötigten Komponenten while(1) // Endlosschleife { // Programm, das mit Komponenten arbeitet } } // eigene Funktionen 10

Wahl des Mikrocontroller-Typs Einstellung der Prozessor-Taktfrequenz F_CPU gleicher Wert! 11