Der Präprozessor. Bevor der Compiler das Programm in Maschinencode übersetzt (nur dieser kann von der CPU, dem Herz des Computers, bearbeitet werden)

Slides:



Advertisements
Ähnliche Präsentationen
Funktionen.
Advertisements

Forschungszentrum caesar
Verschachtelte Schleifen
Suche in Texten (Stringsuche )
IrfanView starten Doppelklick Es erscheint dieses Fenster.
Gliederung des Inhalts
Das Halteproblem. Gibt es einen Algorithmus, mit dem man für jedes beliebig vorgegebene Programm R und für jede beliebig vorgegebene Eingabe E entscheiden.
C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.
SWITCH - Anweisung.
SWITCH - Anweisung.
Abstrakte Klassen.
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Dateien. Eine Datei wird in C++ als ein Stream, also als ein Objekt einer bestimmten Klasse dargestellt.
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
ARRAY oder FELD oder VEKTOR
Schleifen-beobachtung
Dynamischer Speicher. Ein Vergleich aus dem täglichen Leben...
Ein Beispiel in Java.
Dynamisches Array als "verkettete Liste". Ein Vergleich.
Dynamischer Speicher und Struktur
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
WHILE - Anweisung.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Programmier-sprache C Weiter mit PP..
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Polymorphie (Vielgestaltigkeit)
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
DO...WHILE Anweisung.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Java- Syntax.
Das erste Programm (Folie 16)
Der C-Präprozessor EDV1 - 04Präprozessor.
Einführung in Visual C++
14StrukturKlasse1 Von der Struktur zur Klasse von C zu C++ Von Jens Hoffmann
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
Der C-Präprozessor 08-CPräprozessor.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Einleitung Suse Linux (System- und Software-Entwicklung) Allgemein:
Eine Bewerbung schreiben
Einführung in die Programmiersprache C 1
Klicken Sie in der Meldungsleiste auf Bearbeitung aktivieren,
Nächste Folie Hallo, ich bin ein ziemlicher Anfänger in bezug auf PowerPoint. Ich hab folgenden Problem: Also ich habe einen Schriftzug, bestehend aus.
Wie man eine einfache Präsentation erstellt...
Programmierung 1. Einführung Seite 1
Programmieren in C Grundlagen C 5
Dynamische Webseiten-Generierung
Grundlagen von PowerPoint
Bilder einfügen Hier eine Variante um Bilder einzufügen, nachdem man sie ins Forum hochgeladen hat.
Technik schädlicher Software
Montag, 9. Juli 2001  ====!"§==Systems = Seite 1 Projekt SAPscript  Dana Stepanek SAPscript  Symbole MitSymbolen können Programm- bzw. Systemdaten oder.
early binding (frühe Bindung) late binding (späte Bindung)
Erweiterte Zuweisungskompatibilität. Wie kann man Objekte verschiedener Klassen einer Klassenhierarchie einander zuweisen ?
Vorstellen und Herleiten der Horner Schemas
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Mitgeliefertes Kalkulationswissen für Millionen von Bauleistungen aus bis zu 52 Leistungsbereichen x:bau Projekt Dies ist der Zustand direkt nach der Installation.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Namensräume (namespaces). verwendet man umfangreiche eigene und fremde Bibliotheken (Sammlungen von Funktionen) so ist die Wahrscheinlichkeit groß, daß.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Trainingscamp Hörverstehen Katharina Leiss  In Teil 1 gibt es 6 Punkte.  In Teil 2 gibt es 7 Punkte.  In Teil 3 gibt es 7 Punkte. A2 bekommst.
Inhalte der Übungen 1.Grundlagen, Ein- und Ausgabe 2.Kontrollstrukturen (Projekt 1) 3.Funktionen 4.Zeiger, Felder (Projekt 2) 5.Strings, Strukturen 6.Fileverarbeitung.
Arrays in C Ein Array ist eine Variable, die aus einer Anzahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
REKURSION + ITERATION.
Datentyp- umwandlung.
 Präsentation transkript:

Der Präprozessor

Bevor der Compiler das Programm in Maschinencode übersetzt (nur dieser kann von der CPU, dem Herz des Computers, bearbeitet werden) wird vorher der Präprozessor aufgerufen, der die sogenannten Präprozessor-Direktiven ausführt.

Eine Präprozessor-Direktive ist eine spezielle "Anweisung", die immer mit # beginnt. Beispiel: #include "stdafx.h" Kopiert den Inhalt der Datei stdafx.h des aktuellen Verzeichnisses und fügt ihn an dieser Stelle ein.

Eine weitere Präprozessor- Direktive ist die #define-Direktive Beispiele: #define PI 3.14 #define FALSCH false wird als Abkürzung für die Kreiszahl 3.14 benutzt. wird als Abkürzung für den Wert false benutzt Der Präprozessor ersetzt überall im Programm diese Abkürzungen durch 3.14 bzw. false, außer... die Abkürzung befindet sich in einer Zeichenkette. Empfehlung: Abkürzungen groß schreiben !

Eine Zeichenkette ist dadurch gekennzeichnet, dass sie zwischen Anführungszeichen steht. Wo haben Sie bis jetzt Zeichenketten kennen gelernt? Bei der Textausgabe durch printf muss der ausgegebene Text eine Zeichenkette sein.

Beispiel:

#include "stdafx.h" #include #define KURZ "Programmieren ist harte Arbeit\n" #define GROSSEKLAPPE int main(){ printf(KURZ); printf("KURZ"); GROSSEKLAPPE } ist eine Abkürzung für... diese Zeichenkette ist eine Abkürzung für... gar nichts, d.h. ein "leeres Wort". GROSSEKLAPPE wird also entfernt ! wie sieht das Programm aus, nachdem der Präprozessor die #define-Direktiven ausgeführt hat ?

int main(){ printf("Programmieren ist harte Arbeit\n"); printf("KURZ"); } KURZ wurde durch diese Zeichenkette ersetzt. KURZ steht in einer Zeichenkette, wird also nicht ersetzt. GROSSEKLAPPE wurde durch "nichts" ersetzt, deshalb fehlt die vorletzte Zeile in der letzten Folie. Das ist der Text (Quellcode oder Sourcecode), den der Compiler vom Präprozessor zur Bearbeitung vorgesetzt bekommt:

Aus Gründen der Übersichtlichkeit und der Strukturierung könnte man jetzt z.B. folgendes machen:

#include "stdafx.h" #include #define KURZ "Programmieren ist harte Arbeit\n" #define GROSSEKLAPPE int main(){ printf(KURZ); printf("KURZ"); GROSSEKLAPPE } Im aktuellen Verzeichnis des Projekts (also da, wo auch stdafx.h des aktuellen Projekts vorkommt) eine Datei z.B. mydef.h erstellen. Dann die zwei #define-Direktiven in diese Datei verschieben, also hier rauslöschen und dann diese Datei mit der #include-Direktive hier einfügen, also...

Dateiinhalt von mydef.h des aktuellen Projekts: #define KURZ "Programmieren ist harte Arbeit\n" #define GROSSEKLAPPE

Das Programm sieht dann wie folgt aus:

#include "stdafx.h" #include int main(){ printf(KURZ); printf("KURZ"); GROSSEKLAPPE } Was fehlt noch im Programm ?

#include "stdafx.h" #include #include "mydef.h" int main(){ printf(KURZ); printf("KURZ"); GROSSEKLAPPE }