Aufgaben und Lösungen - C#/C++ Seminare und Bü · PDF fileGeleitwort Wenn man heute...

download Aufgaben und Lösungen - C#/C++ Seminare und Bü · PDF fileGeleitwort Wenn man heute nach Literatur über Programmiersprachen sucht, so findet man viel Neues über Sprachen wie C#

If you can't read please download the document

Transcript of Aufgaben und Lösungen - C#/C++ Seminare und Bü · PDF fileGeleitwort Wenn man heute...

  • Aufgaben und Lsungen zu

  • Richard Kaiser

    Aufgaben und Lsungen zu

    C++ mit Microsoft Visual C++ 2008 Einfhrung in Standard-C++, C++/CLI und die objektorientierte Windows .NET-Programmierung

    Dieser Text enthlt alle Aufgaben und einen Teil der Lsungen Diese Quelltexte drfen in eigenen Programmen verwendet werden, wenn sie den Hinweis

    // Lsungen zu "Richard Kaiser: C++ mit Microsoft Visual C++ 2008" // ISBN: 978-3-540-23869-0 // Copyright Richard Kaiser, 2007. http://www.rkaiser.de. All rights reserved.

    enthalten. In keinem Fall wird eine Haftung fr direkte, indirekte, zufllige oder Folgeschden bernommen, die sich aus der Nutzung ergeben. It is permitted to use this source text in programs of your own, provided that it contains a reference to the source (the three //-lines from above). All liabilities for use of the code are disclaimed. Version vom 10.7.2009

    Berlin

    Heidelberg New York Barcelona Hongkong

    London Mailand

    Paris Tokio

  • Prof. Richard Kaiser Schwrzlocher Strae 53 72070 Tbingen

    E-Mail siehe http://www.rkaiser.de/ ISBN 978-3-540-23869-0 Springer Dordrecht Heidelberg London New York Xpert.press ISSN 1439-5428 Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet ber http://dnb.d-nb.de abrufbar. 2009 Springer-Verlag Berlin Heidelberg Dieses Werk ist urheberrechtlich geschtzt. Die dadurch begrndeten Rechte, insbesondere die der bersetzung, des Nachdrucks, des Vortrags, der Entnahme von Abbildungen und Tabellen, der Funksendung, der Mikroverfilmung oder der Vervielfltigung auf anderen Wegen und der Speicherung in Datenverarbeitungsanlagen, bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Eine Vervielfltigung dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen der gesetzlichen Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik Deutschland vom 9. September 1965 in der jeweils geltenden Fassung zulssig. Sie ist grundstzlich vergtungspflichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen des Urheberrechtsgesetzes. Der Springer-Verlag ist nicht Urheber der Daten und Programme. Weder der Springer-Verlag noch der Autor bernehmen Haftung fr die CD-ROM und das Buch, einschlielich ihrer Qualitt, Handels- oder Anwendungseignung. In keinem Fall bernehmen der Springer-Verlag oder der Autor Haftung fr direkte, indirekte, zufllige oder Folgeschden, die sich aus der Nutzung der CD-ROM oder des Buches ergeben. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten waren und daher von jedermann benutzt werden drften. Einbandgestaltung: KnkelLopka GmbH, Heidelberg

  • Fr Daniel, Alex und Kathy

  • Geleitwort

    Wenn man heute nach Literatur ber Programmiersprachen sucht, so findet man viel Neues ber Sprachen wie C# und Java, die von einer virtuellen Maschine ausgefhrt werden, aber auch ber die dynamischen Sprachen wie Python, Ruby und PHP. Es knnte der Eindruck entstehen, dass Softwareentwicklung im Wesentlichen mit diesen Sprachen stattfindet. Dies ist aber nicht der Fall. Ein nicht zu unterschtzender Teil der professionellen Softwareentwicklung wird auf der Basis der Programmiersprache C++ durchgefhrt. In meiner beruflichen Praxis, in der ich Unternehmen betreue, die mit den Softwareentwicklungswerkzeugen von Microsoft arbeiten, begegne ich hufig der Programmiersprache C++.

    C++ ist auch heute immer noch die erste Wahl, wenn es darum geht, hocheffiziente Software fr den technisch-wissenschaftlichen Bereich oder hardwarenahe Aufgaben zu entwickeln. Man darf auch nicht vergessen, dass fr C++ umfangreiche, qualitativ hochwertige und plattformunabhngige Klassenbibliotheken fr viele Anwendungsdomnen existieren. Ein anderer Vorteil von C++ ist meiner Ansicht nach, dass die Sprache sowohl das prozedurale als auch das objektorientierte Entwicklungsparadigma untersttzt. Fr Microsoft spielt C++ weiterhin eine wichtige Rolle bei der Softwareentwicklung im eigenen Haus, aber auch in der Weiterentwicklung der Werkzeuge fr die Programmierung mit C++, um diese noch produktiver und sicherer zu machen. Microsoft arbeitet aktiv im ISO Komitee zur Standardisierung von C++ mit und hat mit dem Standard ECMA-372 (C++/CLI) C++ fr den Einsatz auf der .NET Laufzeitumgebung erweitert. Auerdem ist die einfache Integration von nativen C++ Klassenbibliotheken mit Programmen, die fr Microsoft .NET entwickelt werden bzw. wurden, eine nicht zu unterschtzende Eigenschaft der .NET Laufzeitumgebung, einmal unter dem Gesichtspunkt des Investitionsschutzes, als auch unter dem Aspekt der Laufzeiteffizienz.

    Das vorliegende Buch von Richard Kaiser, der selbst aktiv im DIN an der Standardisierung von C++ mitarbeitet, gibt eine umfassende Einfhrung in alle Aspekte von Standard C++, sowie in die Spezialitten von C++ auf der Microsoft Windows Plattform und C++/CLI fr Microsoft .NET. Die Kapitel 1 und 2 bieten eine sehr gute Einfhrung in das Arbeiten mit Microsoft Visual Studio 2008. Sehr positiv ist noch, dass die prozeduralen und objektorientierten Eigenschaften von C++ explizit dargestellt werden, und dass in Kapitel 3.7 eine Einfhrung in die Techniken und Mglichkeiten der Programmverifikation im Kontext von C++ gegeben wird. Diese Techniken werden an Bedeutung gewinnen, um die Qualitt und Sicherheit von Software besser zu gewhrleisten.

    Ich wnsche dem Buch viel Erfolg, denn es bietet eine fundierte Einfhrung in alle Aspekte der Softwareentwicklung mit C++ auf der Microsoft Windows Plattform, einschlielich dem .NET Framework, und es trgt dazu bei, den Einstieg in diese mchtige Programmiersprache zu erleichtern.

    Klaus Rohe, Platform Strategy Manager, Developer Platform & Strategy Group, Microsoft Deutschland GmbH

  • Vorwort (zum Lsungstext)

    Dieser Text enthlt alle Aufgaben und einen Teil der Lsungen zu meinem Buch C++ mit Microsoft Visual C++ 2008. Die Lsungen sind auch als vollstndige Projekte auf der CD im Buch.

    Damit der Bezug zwischen dem Buchtext und den Aufgaben leichter hergestellt werden kann, habe ich alle Kapitelberschriften aus dem Buch in diese Aufgabensammlung bernommen.

    Anregungen, Korrekturhinweise und Verbesserungsvorschlge sind willkommen. Bitte senden Sie diese an die EMail-Adresse auf meiner Internetseite http://www.rkaiser.de.

    Tbingen, im Juni 2009 Richard Kaiser

  • Vorwort (zum Buch)

    Dieses Buch entstand ursprnglich aus dem Wunsch, in meinen Vorlesungen ber C++ nicht nur Textfensterprogramme (Konsolenanwendungen), sondern von Anfang an Windows-Programme zu entwickeln. Dafr ist Visual Studio 2008 sehr gut geeignet. Es ist so einfach zu bedienen, dass man es auch in Anfngervorlesungen einsetzen kann, ohne dabei Gefahr zu laufen, dass die Studenten nur noch mit dem Entwicklungssystem kmpfen und gar nicht mehr zum Programmieren kommen.

    Dieses Buch richtet sich aber nicht nur an Anfnger, sondern ebenso an professionelle Software-Entwickler. In den letzten 10 Jahren habe ich zahlreiche C++-Kurse fr Entwickler aus der Industrie gehalten. Dabei wurde ich mit einer Flle von Anregungen aus ihrer tglichen Arbeit konfrontiert, die dem Buch viele praxisorientierte Impulse gaben. Fr diese Leser wird C++ und C++/CLI umfassend dargestellt.

    Dieses Buch besteht aus drei Teilen:

    Teil 1 stellt die Entwicklungsumgebung Visual Studio 2008 vor und zeigt, wie man Windows-Programme mit den wichtigsten Steuerelementen entwickelt.

    Teil 2 stellt den gesamten Sprachumfang des C++-Standards umfassend vor. Dazu gehren nicht nur die Sprachelemente von C sowie Klassen, Templates und Exception-Handling, sondern auch die C++-Standardbibliothek.

    Teil 3 behandelt den gesamten C++/CLI-Standard und gibt einen Einblick in die .NET Klassenbibliothek. Die C++/CLI-Erweiterungen bieten die Mglichkeit, mit C++ Windows .NET-Programme zu schreiben und die .NET Klassenbibliothek zu nutzen. Insbesondere kann man bestehende C++-Quelltexte in Windows .NET-Anwendungen aufzunehmen und so vorhandenen Code nutzen.

    Die Programmiersprache C++ wurde als Obermenge der Programmiersprache C entworfen. Dieser Entscheidung verdankt C++ sicher seine weite Verbreitung. Sie hat aber auch dazu gefhrt, dass oft weiterhin wie in C programmiert wird und lediglich ein C++-Compiler anstelle eines C-Compilers verwendet wird. Dabei werden viele Vorteile von C++ verschenkt. Um nur einige zu nennen:

    In C++ werden die fehleranflligen Zeiger viel seltener als in C bentigt. Die Stringklassen lassen sich wesentlich einfacher und risikoloser als die nullterminierten Strings von C verwenden. Die Containerklassen der C++-Standardbibliothek haben viele Vorteile gegenber Arrays, selbstdefinierten

    verketteten Listen oder Bumen. Exception-Handling bietet eine einfache Mglichkeit, auf Fehler zu reagieren. Objektorientierte Programmierung ermglicht bersichtlichere Programme. Templates sind die Basis fr eine auerordentlich vielseitige Standardbibliothek.

    Ich habe versucht, bei allen Konzepten nicht nur die Sprachelemente und ihre Syntax zu beschreiben, sondern auch Kriterien dafr anzugeben, wann und wie man sie sinnvoll einsetzen kann. Deshalb wurde z.B. mit der objektorientierten Programmierung eine Einfhrung in die objektorientierte Analyse und das objektorientierte Design verbunden. Ohne die Beachtung von Design-Regeln schreibt man leicht Klassen, die der Compiler zwar bersetzen kann, die aber kaum hilfreich sind.

    Man hrt immer wieder die Meinung, dass C++ viel zu