einführung in visual c++

16
EDV1 - Visual C++ Einführung in Visual C++

Upload: gyula

Post on 05-Jan-2016

22 views

Category:

Documents


0 download

DESCRIPTION

Einführung in Visual C++. Allgemeines. Visual C++ ist integriert in VisualStudio VisualStudio ist eine Oberfläche, die die Entwicklung, Testung und Pflege von Softwareprojekten unterstützt. Intelligenter Editor Projektunterstützung Leistungsfähiger Debugger Leistungsfähiger Profiler - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Einführung in Visual C++

EDV1 - Visual C++

Einführung in Visual C++

Page 2: Einführung in Visual C++

ED

V1 - V

isual C

++

2

Allgemeines

• Visual C++ ist integriert in VisualStudio• VisualStudio ist eine Oberfläche, die die Entwicklung, Testung

und Pflege von Softwareprojekten unterstützt.– Intelligenter Editor– Projektunterstützung– Leistungsfähiger Debugger– Leistungsfähiger Profiler

• Für VisualStudio sind viele Compiler vorhanden. Z.B.:– C++– J++– Visual Basic– FoxPro– InterDev (Internet-Applikationen)– Fortran (von Digital Equipment)

Page 3: Einführung in Visual C++

ED

V1 - V

isual C

++

3

• Vorteile:– Einheitliche Oberfläche für viele Sprachen– Intelligente Assistenten– Leistungsfähiger Editor– Integration verschiedener Sprachen in einem Projekt– Projektunterstützung (make-Funktion)– Umfangreiche Debug-Möglichkeiten– Umfangreiche Profiler-Möglichkeiten

• Nachteile:– Assistenten erzeugen Texte, die viele Microsoft/Windows-

spezifische Anteile Enthalten geringere Portabilität.– Automatisch generierte Texte sind schwer durchschaubar

und sind daher schwer zu modifizieren.

Page 4: Einführung in Visual C++

ED

V1 - V

isual C

++

4

Starten von Visual C++

• Start Programme Microsoft Visual Studio 6.0 Visual C++ 6.0• Datei Neu Projekte Win32Konsolanwendung• Pfad auswählen in dem das Projekt gespeichert werden soll• Projektname eintragen• OK• ‚Eine „Hallo, Welt“-Anwendung erstellen‘ auswählen• OK• OK• Es wird ein Projekt erstellt, das das fertige „Hallo, Welt“-Programm

enthält.• „!“ drücken Alle Programme werden übersetzt, gelinkt und in einem

DOS-Fenster abgearbeitet.

Page 5: Einführung in Visual C++

ED

V1 - V

isual C

++

5

Teile des VisualStudio-Fensters

• Links: Anzeige des offenen Projektes– Karten:

• Klassen: zeigt die logische Struktur des Projektes• Dateien: zeigt die Dateistruktur des Projektes• Ressourcen: zeigt allgemeine Ressourcen, wie z.B.

Zeichenketten, Grafiken u.s.w.• Rechts: Bearbeitung von Inhalten (Quelltexte, Grafiken,

Steuerelement u.s.w.)• Unten: Mitteilungsfenster

Page 6: Einführung in Visual C++

ED

V1 - V

isual C

++

6

Page 7: Einführung in Visual C++

ED

V1 - V

isual C

++

7

Beispiel für Strukturen

• Es soll eine Struktur entwickelt werden, die Personendaten (Name, Adresse, Geburtsdatum) speichert und zugreifbar macht.

• Die Bestandteile sind wiederum Strukturen:– Name: Anrede, Vorname, Nachname– Adresse: Strasse, Postleitzahl, Ort– Geburtsdatum: Tag, Monat, Jahr

• Bestandteile der Strukturen sind Zeichenketten bzw. int-Variable• Zeichenketten können beliebig lang sein.

Alternative: Es werden maximale Längen festgelegt.Nachteil: Es wird oft zu viel oder zu wenig Speicherplatz belegt.

• Es ist günstig für jede der benötigten Strukturen einen eigenen Modul zu definieren (analog Klassen in JAVA).

• Um Implementierung und Definition voneinander trennen zu können benutzt man header-Dateien.

Page 8: Einführung in Visual C++

ED

V1 - V

isual C

++

8

Header-Datei

• Enthält die nach außen sichtbaren Definitionen: Datentypen, Prozedurköpfe, Macros.

• Z.B.: datum.h

#ifndef _P_DATUM

#define _P_DATUM

struct datum_struct

{

int tag;

int monat;

int jahr;

};

typedef struct datum_struct datum;

datum create_datum(int tag, int monat, int jahr);

void destroy_datum(datum d);

int datum_toString(char *buffer, int len, datum d);

#endif // _P_DATUM

Page 9: Einführung in Visual C++

ED

V1 - V

isual C

++

9

CPP-Datei

• Enthält die Implementierung der Prozeduren.• Z.B.: datum.cpp

#include "stdafx.h"

datum create_datum(int tag, int monat, int jahr)

{

datum d={tag,monat,jahr};

return d;

}

void destroy_datum(datum d){}

int datum_toString(char *buffer, int len, datum d)

{

if (11>len) return 1;

sprintf(buffer,"%2u.%2u.%4u",d.tag,d.monat,d.jahr);

return 0;

}

Page 10: Einführung in Visual C++

ED

V1 - V

isual C

++

10

Stdafx.h

• Diese Datei kann benutzt, werden um include-Dateien nur in einer Datei angeben zu müssen.

...

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "datum.h"

#include "adresse.h"

#include "name.h"

#include "person.h"

...

Page 11: Einführung in Visual C++

ED

V1 - V

isual C

++

11

Adress-Struktur• adresse.h

#ifndef _P_ADRESSE

#define _P_ADRESSE

struct adresse_struct

{

char *strasse;

int plz;

char *ort;

};

typedef struct adresse_struct adresse;

adresse create_adresse(char *strasse, int plz, char *ort);

void destroy_adresse(adresse a);

int adresse_toString(char *buffer, int len, adresse a);

#endif // _P_ADRESSE

Page 12: Einführung in Visual C++

ED

V1 - V

isual C

++

12

• adresse.cpp

#include "stdafx.h"

adresse create_adresse(char *strasse, int plz, char *ort)

{

adresse a;

a.strasse=(char *)malloc(strlen(strasse)+1);

strcpy(a.strasse,strasse);

a.plz=plz;

a.ort=(char *)malloc(strlen(ort)+1);

strcpy(a.ort,ort);

return a;

}

void destroy_adresse(adresse a)

{

free(a.strasse);

free(a.ort);

}

Page 13: Einführung in Visual C++

ED

V1 - V

isual C

++

13

int adresse_toString(char *buffer, int len, adresse a){

char b[20];int l=0;l=strlen(a.strasse)+1; if (l>len) return 1;strcpy(buffer,a.strasse);l++; if (l>len) return 2;strcat(buffer,"\n");sprintf(b,"%u",a.plz);l+=strlen(b); if (l>len) return 3;strcat(buffer,b);l++; if (l>len) return 4;strcat(buffer," ");l+=strlen(a.ort); if (l>len) return 5;strcat(buffer,a.ort);return 0;

}

Page 14: Einführung in Visual C++

ED

V1 - V

isual C

++

14

Mit VisualStudio Debuggen

• Debuggen ist das Entfernen von Bugs aus Programmen.• Häufige Fehler sind z.B.:

– Fehlerhafte Tests (< statt <= ...)– Syntaktische Fehler (= statt ==, fehlende break-Anweisung)– Fehlerhafte Indizes– Schreiben über das Ende des Feldes oder der Zeichenkette.– Negative Indizes bei Feldern.– Fehlen des 0-Zeichens am Ende von Zeichenketten.– Fehlerhafte Parameter beim Aufruf von Prozeduren.

Page 15: Einführung in Visual C++

ED

V1 - V

isual C

++

15

Kommandos im Debug-Modus

• Erneut [im Debug-Modus] starten (Ctrl+Shift+F5)• Debug beenden (Shift+F5)• Ausführung anhalten• Code-Änderung zuweisen (Alt+F10)• Nächste Anweisung anzeigen (Alt+Num*)• In Aufruf springen (F11)• Aufruf als ein Schritt (F10)• Ausführen bis Rücksprung (Shift+F11)• Ausführen bis Cursor (Alt+F10)• Schnellüberwachung (Shift+F9)• Es können verschiedene Fenster für unterschiwdliche Anzeigen

geöffnet werden.

Page 16: Einführung in Visual C++

ED

V1 - V

isual C

++

16

Profilen

• Profilen dient der Optimierung von Programmen. Es können z.B. folgende Fragen beantwortet wird:– Welche Module werden wirklich benötigt?– Welche Anweisungen werden abgearbeitet?– Welche Module verbrauchen am meisten Rechenzeit?– In weichen Abschnitten wird am meisten Rechenzeit

verbraucht?