Programmieren in C Grundlagen C 3

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

Imperative Programmierung
Hochschule Fulda – FB ET Sommersemester 2010
Forschungszentrum caesar
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Agenda Sitzung 2 für den Programmaufbau
der Universität Oldenburg
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
ARRAY oder FELD oder VEKTOR
Polymorphie (Vielgestaltigkeit)
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Java-Kurs Grafik Julian Drerup.
Hochschule Fulda – FB ET Sommersemester 2010
Informatik II Grundlagen der Programmierung Programmieren in C Add Ons Hochschule Fulda – FB ET Sommersemester Peter.
EDV1 - Komplexe Datentypen
Arrays,Strings&Pointer in C/C++
Java programmieren mit JavaKara
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
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.
Einführung in die Programmiersprache C 4
Informatik 1 Letzte Übung.
Dynamische Datentypen
Programmieren in C Einführung
Variablenkonzept Klassisch, in Java Basistyp
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Programmieren in C Einführung
Programmieren in C Dynamische Listen / Bäume
Arrays / Felder Themen: Arrays / Felder / Vektoren Was soll das eigentlich? Erstellen von Arrays Arrays auslesen. Wie sie verwaltet werden.
Programmieren in C Grundlagen C 5
Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester
Programmieren in C Überblick C "Was ist wichtig?"
Programmieren in C Grundlagen C 3 Hochschule Fulda – FB AI Wintersemester 2013/14 Peter Klingebiel, HS Fulda, DVZ.
Programmieren in C Grundlagen C 2
Informatik II Grundlagen der Programmierung Programmieren in C printf() mit variabler Feldbreite Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Einführung
Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
Informatik II Grundlagen der Programmierung Programmieren in C Funktionen, Adressen, Zeiger Hochschule Fulda – FB ET Sommersemester 2014
Informatik II Grundlagen der Programmierung Programmieren in C Ausflug printf() Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Annäherung an C
Programmieren in C Module und Bibliotheken Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Programmieren in C Dateien
Programmieren in C Grundlagen C 2
Hochschule Fulda – FB AI Sommersemester 2014
Programmieren in C Sortieren, Suchen
Hochschule Fulda – FB AI Sommersemester 2014
Programmieren in C "Was ist wichtig?"
Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Programmieren in C Dynamische Listen / Bäume
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Programmieren in C Grundlagen C 2
Programmieren in C Grundlagen C 1
Programmieren in C Wie speichert C
Projektmodul DM Kurze Einführung C-Programmierung
Hochschule Fulda – FB AI Wintersemester 2014/15
Hochschule Fulda – FB AI Sommersemester 2018
 Präsentation transkript:

Programmieren in C Grundlagen C 3 Hochschule Fulda – FB AI Sommersemester 2014 http://c-ai.rz.hs-fulda.de Peter Klingebiel, HS Fulda, DVZ

Felder 1 Ein Feld (array) ist die Zusammenfassung von Daten gleichen Typs in einer Variablen Felder haben eine oder auch mehrere Dimensionen (Vektoren, Matrizen, …) Definition von Feldern: char sbuf[128]; int arr[] = { 1, 8, 7, -1, 2 }; short mat[2][2] = { 11, 12, 21, 22}; Mit der Felddefinition wird der benötigte Speicherplatz für die Variable reserviert Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Felder 2 Zugriff auf Feldelemente mit Index in []: char c; c = sbuf[32]; sbuf[0] = 'A'; Die Feldindizierung beginnt immer mit 0! short s, mat[3][3]; s = mat[0][0]; Felder werden elementweise und Zeile für Zeile hintereinander abgespeichert Es gibt beim Zugriff keinerlei Überprüfungen auf Bereichsgrenzen von Feldern! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Felder 3 Feldnamen sind eigentlich Pointer, zeigen auf das erste Element im Feld Felder werden mit Adresse an Funktionen übergeben (wie Pointer) Feldindizes sind eigentlich Offsets und geben den Abstand zum Feldanfang an Bsp: ia[3]  *(&ia[0] + 3 * sizeof(int)) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Felder und Zeiger 1 Felder reservieren bei der Definition den benötigten Speicherplatz Zeiger erhalten den Speicherplatz erst bei der Zuweisung des Objekts, auf das sie zeigen, oder bei dynamischer Speicherallokation Ähnlichkeit von Feldern und Zeigern  mächtige Pointerarithmetik möglich Manchmal ein wenig unverständlich! Pointer essentiell bei Zeichenketten (strings) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Felder und Zeiger 2 Beispiel Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Felder und Zeiger 3 Vor Ablauf Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Felder und Zeiger 4 Programmstart: Speicher für Feld reservieren Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Felder und Zeiger 5 Programmstart: Speicher für Zeiger reservieren Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Felder und Zeiger 6 Zeiger bufp  Feld buf bzw. &buf[0] Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Felder und Zeiger 7 Zeichen 'A'  buf[0] Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Felder und Zeiger 8 *bufp  'Y' Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Felder und Zeiger 9 bufp inkrementieren Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Felder und Zeiger 10 *bufp  'Z' Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Felder und Zeiger 11 Danach Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 1 Zeichenketten (strings) sind eine Folge von Einzelzeichen char String ist terminiert mit '\0' Speicherbedarf: Länge + 1 Byte Beispiel: char *s; char *hallo = "Hallo, Welt!"; String  Pointer auf Feld von Elementen vom Typ char Nullstring  NULL (definiert in stdio.h) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 2 Beispiel: char buffer[128]; char *bp = buffer; Stringpointer bp  erstes Zeichen im Feld buffer  Ähnlichkeit von Feldern und Pointern! Beispiel: String kopieren und ausgeben Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 3 Beispiel: String kopieren Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 4 Programmstart Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 5 Konstante in Speicher Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 6 Pointer s1 initialisieren Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 7 Speicher für s1 und t anlegen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 8 String s2 = t  s2 = & t[0] Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 9 Schleife: zeichenweise kopieren Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 10 Zeichen kopieren Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 11 Pointer inkrementieren Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 12 … Zeichen kopieren Pointer inkrementieren bis Ende des Strings erreicht  *s1 == '\0' Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 13 End of String: *s1 == '\0' Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 14 String terminieren: *s2 = '\0' Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenketten 15 Danach Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs Kommandozeilenparameter 1 Bekannt: jedes C-Programm startet mit einer main-Funktion main-Funktion ist vom Typ int und hat drei Parameter: int argc Anzahl von Kommandozeilenparametern char *argv[] Feld von Strings  Kommandozeilenparameter char *envv[] Feld von Strings  Umgebungsparameter Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs Kommandozeilenparameter 2 Beispiel echo1.c /* echo1.c */ #include <stdio.h> int main(int argc, char **argv) { while(--argc) printf("%s ", *++argv); putchar('\n'); return(0); } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs Kommandozeilenparameter 3 Beispiel: echo2.c Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Aufzählungsdatentyp 1 Aufzählungsdatentyp enum Für Datentypen mit diskreten konstanten Werten Beispiel: enum color { rot, gruen, blau } c; enum boolean { FALSE, TRUE } b; b = FALSE; c = blau; Darstellung als int beginnend mit 0, wenn nicht explizit angegeben: enum boolean { TRUE=1, FALSE=0 } b; b = TRUE; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Aufzählungsdatentyp 2 Beispiel: enumdemo.c Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zusammengesetzte Datentypen 1 Zusammenfassung von zusammgehörigen Daten in eigenen Datentyp struct Beispiel einfaches EA-Gerät mit 8-Bit Steuerregister cr und 16-Bit Datenregister dr: struct { char cr; int dr; } ea1; struct _ea { char cr; int dr; } ea2; Zugriff durch Selektor . if(ea1.cr & 0x01) ea2.dr = 4711; Bei Pointern durch Selektor -> if(ea1->cr & 0x01) ea2->dr = 4711; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zusammengesetzte Datentypen 2 Beispiel: Datentyp struct circle für Objekt Kreis in einem Zeichenprogramm notwendig  Mittelpunkt (x,y) und Radius r /* Kreis: Typ */ struct circle { int x; /* Mittelpunktkoordinate x */ int y; /* Mittelpunktkoordinate y */ int r; /* Radius */ }; struct circle c; c.x = 100; c.y = 100; c.r = 50; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zusammengesetzte Datentypen 3 Funktionen für struct circle /* Kreis bewegen: Mittelpunkt veraendern */ void move_circle(struct circle *c, int x, int y) { c->x = x; c->y = y; } /* Kreisgroesse aendern: Radius veraendern */ void resize_circle(struct circle *c, int r) { c->r = r; } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zusammengesetzte Datentypen 4 Beispiel: mydraw1.c Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs Computergrafik 1 Zwei Typen von Computergrafik: Pixelgrafik Grafik wird pixelweise aufgebaut Formate: gif, jpg, png, bmp, … Probleme bei Skalierung Vektorgrafik Grafik besteht aus Objekten mit den nötigen Eigenschaften, z.B. Linie: (x1,y1) und (x2,y2) oder Kreis: Mittelpunkt (x,y) und Radius r Problemlos skalierbar Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs Computergrafik 2 Beispiel Pixelgrafik, GIF-Format Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs Computergrafik 3 Beispiel: Vektorgrafik, SVG-Format Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs Computergrafik 4 SVG – Scalable Vector Graphics Wikipedia  http://de.wikipedia.org/wiki/Scalable_Vector_Graphics Veröffentlicht vom W3C erstmals 09/2001 vergleichbar Flash Animationen und Präsentationen möglich XML-Format im Browser eingebaut (Opera, Firefox, u.v.a., Internet Explorer ab Version 9!) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Typdefinitionen 1 Oft sinnvoll, eigene Typen oder Untertypen zu definieren typedef Beispiel: typedef unsigned char byte; Beispiel: typedef struct _ea { byte cr; int dr; } ea; ea ea1, ea2; Problem: Typprüfung bei C eher ungenau!  besser lesbar, bessere Dokumentation! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Typdefinitionen 2 Erweiterung von mydraw: mydraw2.c typedef enum { /* Farben */ white, black, grey, red, green, blue, yellow, cyan, magenta } color; typedef struct _circle { /* Kreis */ int x; /* Mittelpunktkoordinate x */ int y; /* Mittelpunktkoordinate y */ int r; /* Radius */ color c; /* Farbe */ } circle; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Typdefinitionen 3 Beispiel: mydraw2.c Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Typdefinitionen 4 Erweiterung Linien, Rechtecke: mydraw3.c typedef struct _line { /* Linie */ int x1, y1; /* Eckpunkt 1 x,y */ int x2, y2; /* Eckpunkt 2 x,y */ color c; /* Farbe */ } line; typedef struct _rect { /* Rechteck */ int x, y; /* Linke obere Ecke x,y */ int w; /* Breite */ int h; /* Hoehe */ color c; /* Farbe */ } rect; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Typdefinitionen 5 Beispiel: mydraw3.c Programmieren in C - Peter Klingebiel - HS Fulda - DVZ