• Keine Ergebnisse gefunden

- Debuggen bzw. Verifikation des Programms und

N/A
N/A
Protected

Academic year: 2022

Aktie "- Debuggen bzw. Verifikation des Programms und "

Copied!
8
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

5. Programmierumgebung

Ziele dieser Einheit:

- Schritte von der Erstellung des Programms zu seiner Ausführung (execution).

- Debuggen bzw. Verifikation des Programms und

Validation der Ergebnisse.

(2)

Pre- processor

Modifizierter Quell-Code Compiler

(Übersetzer) Verschieb-

barer Ob- jekt-Code

Lader

Ein- gaben

Quell- Code (Source)

Ergeb- nisse Binder

(Linker)

Ausführba- rer (Absolut-) Objekt-Code andere

Objekt-Codes;

Bibl.-funkt- ionen;

Startcode

(3)

Editor

(„edieren“)

meinprogramm.c

meinprogramm.exe („compilieren“)

C-Compiler Quell-

Code Fehler-

frei?

J

ausführen Erfolg-

reich

?

Binder/Lader N

Korrigieren

(„debuggen“)

N

(„verifizieren/validieren“)

(4)

Ausführung unseres ersten C-Programms

#include <stdio.h> /*Standard Ein-/Ausgabe*/

/* Hauptprogramm */

void main() /* void: kein Ergebnis-DT*/

{ /* Beginn */

/* Ausgabe von Hallo, Welt! */

printf("Hallo, Welt! \n");

/* „printf“ : Funktion „formatted print“ */

/* „\n“ : „escape sequence“ - newline */

} /* Ende */

(5)

Der Präprozessor kann wie folgt benutzt werden:

1. Einfügen von Quelltextdateien und Bibliotheken. Zweierlei Bedeutung:

#include <<Dateiname>> , z.B. #include <myFile.h>, bedeutet Ansprechen von Standardfunktionen, welche meist in den Verzeichnissen

/usr/include oder /usr/local/include/ stehen.

oder

#include "<Dateiname>", z.B. #include "myFile.h",

bedeutet Einfügen von benutzerdefinierten Dateien. Die Suche erfolgt in der lokalen Umgebung (aktuelles Verzeichnis).

Bemerkung: Achten Sie auf die Benutzung von „<...>“ bei Nicht-Terminalen.

2. Makrodefinition und -ersetzung.

#define <Makroname> <Ersatztext>

Abkürzung häufig benutzter Zeichenfolgen.

(6)

Makrodefinition: #define SQUARE(X) X*X Makroaufruf (Bsp.): b=SQUARE(a+1)

erzeugter Code: b=a+1*a+1

Richtig: #define SQUARE(X) ((X)*(X))

3. Zur Steuerung der bedingten Übersetzung.

Präprozessor-Direktiven zur Festlegung zu übersetzender Programmteile:

#if def_1

Programm_A

#elif def_2

Programm_B

#else def_9

Programm_Z

Übersetzung, wenn der Makroname bekannt ist:

#ifdef Makroname

(7)

#include <stdio.h>

void main() {

int zahl;

scanf("%d", &zahl);

if (zahl > 0)

printf("positive Zahl");

else {

if (zahl == 0)

printf("Zahl 0");

else printf("negative Zahl");

Gehen Sie bitte diese Schritte am folgenden Programm durch:

(8)

Weitere Aspekte der Programmierumgebung

werden im Rahmen der Übungen behandelt.

Referenzen

ÄHNLICHE DOKUMENTE