Programmieren in C Grundlagen C 5

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Hochschule Fulda – FB ET Sommersemester 2010
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
der Universität Oldenburg
Java: Objektorientierte Programmierung
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Grundlagen der Objektorientierung
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Objekte und Arbeitsspeicher
Der Präprozessor. Bevor der Compiler das Programm in Maschinencode übersetzt (nur dieser kann von der CPU, dem Herz des Computers, bearbeitet werden)
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
Hochschule Fulda – FB ET Sommersemester 2010
Informatik II Grundlagen der Programmierung Programmieren in C Add Ons Hochschule Fulda – FB ET Sommersemester Peter.
Das erste Programm (Folie 16)
Der C-Präprozessor EDV1 - 04Präprozessor.
Einführung in Visual C++
Der C-Präprozessor 08-CPräprozessor.
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Repetitorium PG : Gültigkeit, Sichtbarkeit & Operatorüberladung FH-Darmstadt, FB Informatik.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Einführung in die Programmierung Wintersemester 2011/12 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 Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
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
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
BMEVIEEA100 Grundlagen der Programmierung
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 "Was ist wichtig?"
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Inhalte der Übungen 1.Grundlagen, Ein- und Ausgabe 2.Kontrollstrukturen (Projekt 1) 3.Funktionen 4.Zeiger, Felder (Projekt 2) 5.Strings, Strukturen 6.Fileverarbeitung.
Programmieren in C Grundlagen C 2
Programmieren in C Wie speichert C
Projektmodul DM Kurze Einführung C-Programmierung
Programmieren in C Module und Bibliotheken
Einführung in die Programmierung
Hochschule Fulda – FB AI Sommersemester 2018
Einführung in die Programmierung
Einführung in die Programmierung
 Präsentation transkript:

Programmieren in C Grundlagen C 5 Hochschule Fulda – FB AI Wintersemester 2013/14 http://c.rz.hs-fulda.de Peter Klingebiel, HS Fulda, DVZ

Speichersegmentierung 1 Programmcode und Programmdaten eines Programms werden von Betriebssystem in unterschiedliche Speichersegmente geladen Programmcode  Textsegment globale / statische Daten  Datensegmente Konstanten initialisierte Daten nicht initialisierte Daten automatische Daten  Stacksegment Daten werden erst bei Eintritt in Block erzeugt Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Speichersegmentierung 2 Beispiel (Sun Solaris) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Speichersegmentierung 3 Diskussion Warum? Welche Vorteile hat das? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Speichersegmentierung 4 Beispiel: segment.c Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Speicherklassen 1 Funktionen können nur global, d.h. ausserhalb von Blöcken definiert werden Sichtbarkeit global static  Sichtbarkeit im Quelldateikontext Variablen können ausserhalb von Blöcken, d.h. global definiert werden Variablen können innerhalb von Blöcken, d.h. lokal oder automatisch definiert werden Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Speicherklassen 2 auto static extern register nur innerhalb eines Blocks, Standardklasse Variable existiert / ist sichtbar nur im Block static in Block: Variable erhält ihren Wert sonst: Variable/Funktion nur in C-Quelle sichtbar extern Variable ist in anderer C-Quelle definiert register Variable  CPU-Register, hat keine Adresse! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Lebensdauer 1 Lebensdauer einer Variablen ist die Zeit, in der diese Variable Speicherplatz belegt lokale / automatische Variable „lebt“, d.h. hat einen Speicherort vom Anfang bis zum Ende des Blocks, in dem sie definiert ist Speicherplatz wird bei Verlassen des Blocks wieder freigegeben  Variable ist ungültig! Zugriff darauf ist dann undefiniert Globale oder statische Variable „lebt“ vom Anfang bis zum Ende des Programms Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Lebensdauer 2 Beispiel: lifetime.c Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Lebensdauer 3 Diskussion Welche Ausgaben erzeugt lifetime? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sichtbarkeit 1 Der Sichtbarkeitsbereich (Scope) einer Variablen  Programmabschnitt, in dem die Variable sichtbar/nutzbar/gültig ist Der Scope wird durch den Ort der Definition bzw. Deklaration der Variablen festgelegt innerhalb eines Blocks  sichtbar von der Stelle der Definition bis zum Blockende ausserhalb  sichtbar von Stelle der Definition bzw. Deklaration bis zum Ende der Quelldatei mit static definierte Variablen sind nur im Modul sichtbar Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sichtbarkeit 2 Globale Variable müssen ausserhalb von Blöcken definiert sein Variablen aus anderen Modulen (globale Variable) müssen explizit als extern deklariert werden Scope einer Funktion: Bereich auf Ebene des Programms, in der die Funktion nutzbar ist global sollte dann vor Nutzung bekannt sein (Prototype) lokal nur im Modul bei Definition als static Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sichtbarkeit 3 Beispiel: 2 Module / Quelldateien Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sichtbarkeit 4 Beispiel: scope.c Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Sichtbarkeit 5 Diskussion Welche Ausgaben erzeugt scope? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 1 C-Preprozessor bearbeitet C-Quelltexte vor dem eigentlichen Compilerlauf reiner textueller Eingriff in den Quelltext CPP hat eigene Syntax # leitet CPP-Anweisungen ein CPP-Anweisungen nicht mit ; terminiert! Wichtige Funktionen von CPP: #include – Dateien einfügen #define – Makros definieren #if / #ifdef – Bedingte Compilierung Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 2 #include – fügt den Inhalt anderer Dateien (sog. Headerfiles) in den Quelltext ein Includedateien enthalten i.w. Deklarationen von Funktionen (prototypes) Deklarationen von Datentypen Deklarationen von externen/globalen Variablen Definitionen von Konstanten (const) Definitionen von Konstanten als CPP-Makro Definitionen von CPP-Makros Bedingte Compilierung CPP kann auch autonom verwendet werden Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 3 Syntax: #include <filename.h> #include "filename.h" <filename.h> - fügt Headerdatei aus Standardinclude- und Systemverzeichnissen ein, z.B. /usr/include, die i.d.R. mit dem Compiler oder dem System mitgeliefert werden "filename.h" – fügt Headerdatei aus Benutzer-/Projektverzeichnissen ein, z.B. aus dem aktuellen Verzeichnis Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 4 Beispiel: myincl.h puts("hallo"); mydemo.c int main(void) { #include "myincl.h" } nach CPP-Lauf: int main(void) { puts("hallo"); } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 5 #define – definiert ein Makro  Textersatz #define makroname #define makroname ersatztext #undef makroname Beispiele: #define UNIX - Makroname UNIX kann z.B. bei bedingter Compilierung verwendet werden #define EOF (-1) - Makroname EOF wird durch Ersatztext (-1) ersetzt  wie Konstante Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 6 Beispiel: mydefs.h #define PI 3.141 myprog.c #include "mydefs.h" int main(void) { double p = PI; } nach CPP-Lauf: int main(void) { double p = 3.141; } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 7 Parametrisierte Makros Makroparameter werden in Ersatztext ersetzt Beispiel: #define min(a, b) (a < b ? a : b) Quelltext int i = 2, j = 3, m; m = min(i, j); Nach CPP-Lauf: int i = 2, j = 3, m; m = (i < j ? i : j); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 8 Bedingte Compilierung  Verändern des Quelltextes abhängig von CPP-Makros Syntax #if (expr1) #elif (expr2) #else #endif und #ifdef (symbol) #ifndef (symbol) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 9 Beispiel: proc1(); #ifdef DEBUG puts("nach proc1"); #endif proc2(); Nach Aufruf von cpp: proc1(); proc2(); Nach Aufruf von cpp –DDEBUG: proc1(); puts("nach proc1"); proc2(); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 10 Beispiel: cppdemo.h Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 11 Beispiel: cppdemo.c Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 12 Beispiel: Nach CPP-Lauf Sun Solaris Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 13 Beispiel: Nach CPP-Lauf Windows Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 14 Diskussion Sinnvolle Verwendung von CPP? Verbesserungen? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 15 Beispiel: cpptrap.c Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 16 Beispiel: Nach CPP-Lauf  Nebeneffekte!! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 17 Beispiel: Nutzung von CPP als reiner Text- bzw. Makroprozessor Geht, doch CPP ist dafür nicht vorgesehen, Alternativen sind z.B. m4 u.a. Includefile draw.inc Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 18 Grafikdatei draw.txt Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Preprozessor 19 Grafikausgabe draw.svg nach Aufruf von cpp –P draw.txt draw.svg Programmieren in C - Peter Klingebiel - HS Fulda - DVZ