Hochschule Fulda – FB ET Sommersemester 2010

Slides:



Advertisements
Ähnliche Präsentationen
Strukturen in C Spelz, Sievers, Bethke.
Advertisements

Hochschule Fulda – FB ET Sommersemester 2010
Ein- und Ausgabe von Dateien
Forschungszentrum caesar
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
Sortieren I - Bubblesort -
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
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
der Universität Oldenburg
ARRAY oder FELD oder VEKTOR
Dynamischer Speicher und Struktur
Tag 2 Look-up-Tabellen, Zufallszahlen, Listen, Speichermanagement und Dateiverwaltung Quelle: 3D-Spiele mit C++ und DirectX in 21 Tagen, Alexander.
Spieleprogrammierung mit DirectX und C++
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Hochschule Fulda – FB ET Sommersemester 2010
Informatik II Grundlagen der Programmierung Programmieren in C Add Ons Hochschule Fulda – FB ET Sommersemester Peter.
Einführung in Visual C++
Arrays,Strings&Pointer in C/C++
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
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 Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Einführung in die Programmiersprache C 4
Dynamische Datentypen
Programmieren in C Einführung
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
Programmieren in C Grundlagen C 5
Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester
Informatik Grundlagen, WS04, Seminar 7
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 Grundlagen C 3
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 Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
ESP Tutorium Studienassistent: Ewald Moitzi Gruppe 1.
Programmieren in C Dateien
Programmieren in C Dynamische Listen / Bäume
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Programmieren in C Grundlagen C 1
Programmieren in C Wie speichert C
Arrays (Eigenschaften)
Programmieren in C Module und Bibliotheken
 Präsentation transkript:

Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 2 Hochschule Fulda – FB ET Sommersemester 2010 http://www.rz.hs-fulda.de/et Peter Klingebiel, HS Fulda, DVZ

Wdh: Files 1 #include <stdio.h> Grundlegender Datentyp FILE Gepufferte Ein- / Ausgabe Dateien / Geräte / Netzwerk (sockets) / ... konstante Files, bei Programmstart bereits geöffnet: stdin - Standardeingabe (TTY) stdout - Standardausgabe (TTY) stderr - Standardfehlerausgabe (TTY) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wdh: Files 2 Öffnen von Files Schließen von Files fopen() fdopen(), freopen() Schließen von Files fclose() allgemeines Gerüst #include <stdio.h> FILE *fp; fp = fopen(...); /* Lesen / Schreiben */ fclose(fp); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wdh: Files 3 Eingabefunktionen Ausgabefunktionen getchar(), getc(), fgetc() getw(), fgetw() gets(), fgets() scanf(), fscanf() fread() ungetc(); Ausgabefunktionen putchar(), putc(), fputc() putw(), fputw() puts(), fputs() printf(), fprintf() fwrite() Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wdh: Files 4 High-Level- und Low-Level-Funktionen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wdh: Files 5 Low-Level-Funktionen  Systemcalls Datentyp int  Filedeskriptor / Filehandle  Index in der Filetabelle des Prozesses Pufferung von Gerätetreiber abhängig Dateien / Geräte / Netzwerk (sockets) / ... konstante Filedeskriptoren 0 - Standardeingabe (TTY) 1 - Standardausgabe (TTY) 2 - Standardfehlerausgabe (TTY) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wdh: Files 6 Öffnen von Dateien open(), creat() Für andere Files / Geräte ggfs. eigene Funktionen zum Erstellen / Öffnen pipe(), socket(), ... Lesen / Schreiben read(), write() evtl. weitere gerätetyp. Funktionen Schließen close() Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wdh: Files 7 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wdh: Files 8 Beispiel: Netzwerkserver Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wdh: Files 9 Beispiel: Netzwerkclient Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wdh: Files 10 Beispiel: Pipe Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Dynamischer Speicher 1 Funktionen zur Anforderung und Freigabe von dynamischem Speicher (Heap) #include <stdlib.h> Anforderung von Speicher: void *malloc(size_t s) s Bytes allozieren return NULL bei Fehler, sonst Pointer auf Speicherbereich void *calloc(size_t n, size_t s) s * n Bytes allozieren und mit 0 initialisieren Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Dynamischer Speicher 2 Freigabe von alloziertem Speicher void free(void *ptr) Speicher von ptr wieder freigeben Beispiel: char buf[BUFLEN], *sptr; size_t slen; if(fgets(buf, sizeof(buf) - 1, stdin)) { slen = strlen(buf); sptr = (char *) malloc(slen + 1); if(sptr == NULL) /* Fehler ... */ (void) strcpy(sptr, buf); } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Klassifizierungsfunktionen für Zeichen #include <ctype.h> ctype-Funktionen 1 Klassifizierungsfunktionen für Zeichen #include <ctype.h> alle Funktionen liefern Rückgabewert ≠ 0, wenn Test ok, 0 sonst die wichtigsten Funktionen int isalpha(int c) Test, ob c Buchstabe ist int isdigit(int c) Test, ob c Ziffer ist Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

ctype-Funktionen 2 int isalnum(int c) Test, ob c Buchstabe oder Ziffer ist int isupper(int c) Test, ob c Großbuchstabe ist int islower(int c) Test, ob c Kleinbuchstabe ist int isprint(int c) Test, ob c druckbares Zeichen (+ Leerzeichen) ist int tolower(int c) wandelt c von Groß- in Kleinbuchstaben um int toupper(int c) wandelt c von Klein- in Großbuchstaben um Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

ctype-Funktionen 3 Implementierung isalnum() für ASCII Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

ctype-Funktionen 4 Implementierung tolower() für ASCII Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Stringfunktionen 1 String als eigener Datentyp existiert in C genau genommen nicht! Strings sind Arrays vom Typ char oder Pointer auf char: char b[LEN]; bietet Platz für LEN-1 Zeichen char *s; Pointer s gültig erst nach Zuweisung auf char-Array, Konstante oder dyn. Speicherallozierung Strings werden mit ASCII-NUL terminiert Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Stringfunktionen 2 C-Standardbibliothek bietet eine große Menge an Stringfunktionen an wichtige Konvertierungsfunktionen #include <stdlib.h> int atoi(char *s) wandelt String s in int long atol(char *s) wandelt String s in long double atof(char *s) wandelt String s in double Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Stringfunktionen 3 Weitere Konvertierungsfunktionen #include <stdio.h> int sscanf(char *s, char *fmt,...) formatierte Konvertierung aus dem String s wie scanf() und fscanf() Beispiel: char *s = "123 98.76"; int l; double d; sscanf(s, "%ld %lf", &l, &d); int sprintf(char *s, char *fmt, …) formatierte Ausgabe auf String s wie printf() und fprintf() Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Stringfunktionen 4 die wichtigsten Grundfunktionen #include <string.h> int strlen(char *s) liefert Länge des String s char *strcpy(char *s1, char *s2) kopiert String s2 nach String s1, bis zum s2 terminierenden NUL, liefert Ptr auf s1 Achtung: Pufferüberlauf! char *strncpy(char *s1, char *s2, int n) kopiert String s2 nach String s1, max n Zeichen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Stringfunktionen 5 char *strcat(char *s1, char *s2) Hängt Kopie von s2 an s1, liefert Ptr auf s1 Achtung: Pufferüberlauf! char *strncat(char *s1, char *s2, int n) Hängt Kopie von s2 an s1, max. n Zeichen int strcmp(char *s1, char *s2) vergleicht zeichenweise s1 und s2 liefert 0 bei Gleichheit sonst Differenz *s1-*s2 bei erstem Unterschied Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Stringfunktionen 6 int strncmp(char *s2, char *s2, int n) Stringvergleich bis max. n Zeichen sonst wie strcmp() char *strchr(char *s, int c) liefert Pointer auf Position des ersten Auftretens von Zeichen c im String s, sonst NULL char *strrchr(char *s, int c) liefert Pointer auf Position des letzten Auftretens von Zeichen c im String s, sonst NULL also wie strchr() vom Stringende her Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Stringfunktionen 7 char *strstr(char *s1, char *s2) liefert Pointer auf Position des ersten Auftretens von String s2 im String s1, sonst NULL char *strdup(char *s) alloziert Speicher für eine Kopie des String s und kopiert diesen dorthin liefert Pointer auf Kopie oder NULL bei Fehler Implementierung char *ns; if(ns = malloc(strlen(s) + 1)) return(strcpy(ns, s)); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Stringfunktionen 8 Implementierung von strlen() Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Stringfunktionen 9 Implementierung von strcmp() Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Stringfunktionen 10 Memory- / Binärfunktionen void *memset(void *m, int c, size_t n) kopiert n mal das Zeichen c in den Speicherbereich m void *memcpy(void *m1, void *m2, size_t n) kopiert n Bytes von Speicherbereich m2 nach m1 void *memmove(void *m1, void *m2, size_t n) Überlappungen der Bereiche werden korrekt behandelt void *memcmp(void *m1, void *m2, size_t n) Vergleich von n Bytes der Speicherbereiche m1 und m2 void *memchr(void *m, int c, size_t n) liefert Pointer auf erstes Auftreten von c in m, sonst NULL Achtung! Es finden keine Bereichsprüfungen statt! Overflow! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sortieren 1 Sortieren von Zahlen, Strings, allgemein von Daten, ist oft auftretende Aufgabenstellung Meist: Daten sind in Feldern vorhanden  Sortieren von Feldelementen Intuitiver Algorithmus: Feld von oben nach unten (oder von links nach rechts) durchlaufen und elementweise sortieren Feld solange immer wieder durchlaufen, bis Feld sortiert ist  Bubblesort-Algorithmus http://de.wikipedia.org/wiki/Bubblesort Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sortieren 2 1. Durchlauf bei Bubblesort Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sortieren 3 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sortieren 4  die größten Elemente wandern nach und nach an das Ende des Feldes  steigen wie Blasen auf  Bubblesort Algorithmus für int-Feld mit n Elementen: void bsort(int v[], int n) int i, j; for(i = 0; i < n; i++) for(j = 0; j < n-i-1; j++) if(v[j] > v[j+1]) swap(v, j, j+1); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sortieren 5 Bubblesort für Feld von Strings Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sortieren 6 Sortierprogramm für Strings Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sortieren 7 Diskussion Stabilität? Geschwindigkeit? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sortieren 8 Schnellerer Algorithmus  Quicksort rekursiver Algorithmus für int-Feld void qsort(int v[], int left, int right) int i, last; if(left >= right) return; swap(v, left, (left + right) / 2); last = left; for(i = left + 1; i <= right; i++) if(v[i] < v[left]) swap(v, ++last, i); swap(v, left, last); qsort(v, left, last - 1); qsort(v, last + 1, right); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sortieren 9 Prinzip: teile und herrsche http://de.wikipedia.org/wiki/Quicksort Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sortieren 10 Quicksort für Feld von Strings Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sortieren 11 Sortierprogramm für Strings Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sortieren 12 Diskussion Stabilität? Geschwindigkeit? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ