30
2006 Pearson Education, Inc. All rights reserved. 1 PG 1 PG 1 Programmieren 1 Hochschule Darmstadt Prof.Dr. H.P.Weber

1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

Embed Size (px)

Citation preview

Page 1: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

1

PG 1PG 1

Programmieren 1

Hochschule Darmstadt

Prof.Dr. H.P.Weber

Page 2: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

2

Inhalt von Programmieren 1

1 Einführung2 Grundelemente der C++ Programmierung 3 Einführung in Klassen und Objekte 4 Kontrollanweisungen: Teil 1 5 Kontrollanweisungen: Teil 2 6 Funktionen und eine Einführung in Rekursion 7 arrays und vectors, Suchen und Sortieren 8 Zeiger, C-Arrays und C-Strings 9 Klassen – genauer betrachtet: Teil 1

10 Klassen – genauer betrachtet: Teil 211 Operatorüberladung und Fallstudien Array und String

Page 3: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

3

11Einführung

Page 4: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

4

1.1 Organisatorisches1.2 Programmiersprachen1.3 Geschichte von C und C++1.4 C++ Standardbibliothek1.5 Typische C++ Entwicklungsumgebung

Page 5: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

5

1.1 Organisatorisches

• Stellung von ‘Programmieren 1’ im Studium– 1. Semester: Programmieren / Algorithmen und

Datenstrukturen 1• Prozedurale + objektorientierte Programmierung• Konsolenanwendungen mit C++

– 2. Semester: Programmieren / Algorithmen undDatenstrukturen 2• Objektorientierte + generische Programmierung• Konsolenanwendungen mit C++

– 3. Semester: Nutzerzentrierte Softwareentwicklung• Grapische Benutzeroberflächen mit Java

– 4. Semester: Entwicklung webbasierter Anwendungen• Webprogrammierung mit HTML5, Javascript, PHP

Page 6: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

6

1.1 Organisatorisches

• Stellung von PAD1 im Studium

Modul Voraussetzung Belegung Pr-vorleistung Pr-form

Programmieren 1 (PAD1) - Praktikum P

Programmieren 2 (PAD2) Prüfung PAD1 angetreten Praktikum P

OO Analyse und Design Prüfung PAD1 angetreten Praktikum K

Mikroprozessorsysteme Prüfung PAD1 bestandenPrüfung PAD2 angetreten

Praktikum K

Nutzerzentrierte Softwareentwicklung

Prüfung PAD1 bestandenPrüfung PAD2 angetreten

Praktikum K

Software Engineering Prüfung PAD1 bestandenPrüfung PAD2 angetreten

Praktikum K

Datenbanken Prüfung PAD1 bestandenPrüfung PAD2 angetreten

Praktikum K

Betriebssysteme Prüfung PAD1 bestandenPrüfung PAD2 angetreten

Praktikum K

GDV, EWA, VS, PSE Prüfung PAD1 bestandenPrüfung PAD2 bestanden

Praktikum K

Page 7: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

7

1.1 Organisatorisches• Literatur

– H.M.Deitel,P.J.Deitel: C++ How To Program, 10th ed(oder auch: 9th-5th ed); Prentice-Hall; 2016 /2014/2011/2010/2007/2005

– Basistext der Vorlesung, deshalb primär empfohlen. – U.Breymann: Der C++ Programmierer, 4.Aufl.; Hanser; 2015

– Deutschsprachiges Standardwerk zu Sprachsyntax und Objektorientierung. – Stroustrup, Bjarne: Die C++ Programmiersprache, 4.Auflage; Hanser;

2015 – Die definitive Referenz vom Entwickler von C++.

– R. Sedgewick: Algorithmen in C++ (Teil 1-4), 3.Auflage ; Addison-Wesley; 2002

– Standardwerk zu Algorithmen und Datenstrukturen.

– Außerdem: www.cplusplus.com– Gute Referenz für die Bearbeitung der Aufgaben im Praktikum. – In praktischer Prüfung lokal auf Rechner verfügbar.

Page 8: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

8

1.1 Organisatorisches• Software

– Für eingeschriebene Studenten der Hochschule Darmstadt sind im Rahmen des ‘Microsoft Imagine’-Programmskostenlos erhältlich:

– Visual Studio 2017 Enterprise bzw. Community– Quelle:

– Anmelden über Kurz-URL "link.h-da.de/imagine"– Erforderlich für die Anmeldung

– h_da Benutzer-ID– h_da Kennwort

– Microsoft Visual Studio 2013 Professional– ist auf den Rechnern im Praktikum vorhanden

Page 9: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

9

1.1 Organisatorisches• Vorlesung, Praktikum, individuelles Üben

– Programmieren ist ein Handwerk, das geübt werden muss.– ‚Üben‘ heißt zunächst: Sich allein mit Aufgabenstellung,

Entwicklungsumgebung (und Vorlesungsfolien!) um eine Lösung bemühen.

– Teamarbeit macht erst Sinn, wenn jeder für sich die Aufgabe im wesentlichen gelöst hat. Das gilt uneingeschränkt für die Programmierausbildung; in der beruflichen Praxis sind durchaus andere Modelle möglich.

Page 10: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

10

1.1 Organisatorisches• Vorlesung, Praktikum, individuelles Üben

– Kalkulieren Sie ausreichend Zeit zum individuellen Üben in Ihren Zeitplan ein – in der Vorlesung ist dafür keine Zeit und im Praktikum nur eingeschränkt.

– Notebooks in der Vorlesung sind nicht verboten, aber erfahrungsgemäß (außer bei großer Selbstdisziplin) eher kontraproduktiv.

Page 11: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

11

1.1 Organisatorisches• Vorlesung, Praktikum, individuelles Üben

– In der Vorlesung wird der Stoff systematisch zunächst begrifflich und dann an konkreten Beispielen dargestellt.

– Für Studenten mit wenig Programmiererfahrung drei Phasen:• Vorbereitung der Vorlesung anhand der vorher bereitgestellten

Folien• Vorlesung mit Möglichkeit zur Diskussion der Begriffe und

Beispiele• Nachbereitung durch eigenes Üben und Bearbeiten der

Praktikumsaufgaben

Page 12: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

12

1.1 Organisatorisches• Ablauf eines Praktikumstermins

– Ausgabe der Aufgabenstellung (Download von meinerWebsite) ca. 14 Tage vor Praktikumstermin

– Vorbesprechung in der Vorlesung– Zu Hause: Programmcode entwerfen und eintippen

• Am besten schon mit Visual Studio 2017 (oder 2013)• Auf dem mitgebrachten eigenen Notebook sind auch

beliebige andere C++-Entwicklungsumgebungen erlaubt.• Code für komplettes Projekt ins Praktikum mitbringen

– Im Praktikum: Übersetzung, Inbetriebnahme mit Visual C++, Testen, mit Praktikumspartner durchsprechen / abgleichen (Zeitrahmen: einschließlich Abnahme maximal drei Stunden)

– Abnahme/Testierung durch Betreuer

Page 13: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

13

1.1 Organisatorisches• Regeln zum Praktikum

– 5 von 5 möglichen Testaten sind Pflicht für erfolgreichePraktikumsteilnahme

– Testate gibt es grundsätzlich nur zum jeweiligen Termin– Bewertung: ‘teilgenommen’ als Eintrag im OBS

• Dies ist die Voraussetzung für die Zulassung zur ‘Klausur’, d.h. zur Praktischen Prüfung.

– Anmeldung und Gruppeneinteilung für das Praktikumdurch OBS

– Termine und Aufgabenstellungen auf meiner Website– Durchführung in Zweiergruppen

Page 14: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

14

1.2 Programmiersprachen

• Maschinensprachen– prozessorabhängige Codierung von Befehlen, Adressen und

Daten als Bitmuster

• Maschinenorientierte Programmiersprachen (Assembler-Sprachen)

– prozessorabhängige mnemonische Codierung von Befehlen, Adressen und Daten;

– ein Assembler-Befehl ergibt einen Maschinenbefehl

• Problemorientierte Programmiersprachen– den zu bearbeitenden (z.B. nummerischen, kommerziellen,

technischen, ...) Problemen angepasste Formulierung von Programmen

– eine Anweisung ergibt viele Maschinenbefehle– portabel, da prozessorunabhängig

Page 15: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

15

1.2 Programmiersprachen

• Problemorientierte Programmiersprachen– An englischer Umgangssprache orientiert

• Benutzen übliche mathematische Schreibweise• Beispiel:

area = PI * radius * radius;

– Einzelne Anweisungen bewältigen substanzielle Aufgaben.– Müssen durch Übersetzungsprogramme in Maschinensprache

übersetzt werden (‘Compiler’)• Das komplett übersetzte Programm wird dann ausgeführt.

– Andere Möglichkeit: Interpreter• Führen Hochsprachen-Programme direkt

(d.h. Anweisung für Anweisung) aus• Ausführung ist langsamer als bei compiliertem Programm

Page 16: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

16

1.2 Programmiersprachen

• Prozedurale Programmiersprachen:– FORTRAN (FORmula TRANslator)– COBOL (COmmon Business Oriented Language)– ALGOL (ALGOrithmic Language)– PASCAL– C

• Funktionale Programmiersprachen:– LISP, Haskell, ML– F#, Scala

• Logische Programmiersprachen:– PROLOG

Page 17: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

17

1.2 Programmiersprachen

• Objektorientierte Programmiersprachen:– SMALLTALK– EIFFEL– C++– Java– C#

• Skriptsprachen:– Perl (Practical Extraction and Report Language)– Python – PHP (Hypertext Preprocessor, Personal Home Page Tools)– Javascript– Ruby

Page 18: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

18

1.3 Geschichte von C und C++

• Geschichte von C– Entstanden aus CPL (‘Combined Programming Language’,

Cambridge und London, Anfang der 1960er)– Über BCPL (‘Basic CPL’, Martin Richards, 1967)

und B (Ken Thompson, 1970)• “Ungetypte” Sprachen

– Entwickelt von Dennis Ritchie (Bell Laboratories, 1972)• Ergänzung von Datentypen

– Sprache, in der UNIX entwickelt wurde– Unabhängig von der eingesetzten Hardware

• portable Programme können geschrieben werden– ANSI und ISO Standard für C wurde 1990 veröffentlicht und

1999 sowie 2011 ergänzt (‘C99’, ‘C11’)

Page 19: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

19

1.3 Geschichte von C und C++• Geschichte von C++

– Erweiterung von C• Entwickelt von Bjarne Stroustrup (Bell Laboratories) seit

Anfang der 1980er– Stellt neue Eigenschaften zur Verfügung, um C auf ein höheres

Niveau zu heben• Ergänzung: objektorientierte Programmierung

– Objekte: wiederverwendbare Softwarekomponenten• Modellieren Dinge der realen Welt

• Ergänzung: generische Programmierung– Parametrisierte Funktionen und Datentypen

– Im August 2011 wurde ein in vielen Punkten erweiterter und ergänzter ISO Standard für C++ verabschiedet (‘C++ 11’).

– Die aktuelle Version (‘C++ 14’) gilt seit Ende 2014 und unterscheidetsich von C++11 nur durch kleinere Korrekturen und Ergänzungen.

Page 20: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

20

1.4 C++ Standardbibliothek

• C++ Programme– Aufgebaut aus Teilen, die

• ‘Funktionen’ und• ‘Klassen’ genannt werden

• C++ Standardbibliothek– Reichhaltige Sammlung von existierenden Funktionen

und Klassen• Wiederverwendbar in neuen Anwendungen

Page 21: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

21

Betrachtung zum Software Engineering

• Verwende einen “Baukasten”-Ansatz, umProgramme zu schreiben.

• Vermeide, das Rad neu zu erfinden.• Benutze vorhandene Teile, wann immer möglich.

Diese sogenannte Wiederverwendung von Software ist ein zentrales Element der objektorientierten und generischen Programmierung.

Page 22: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

22

Betrachtung zum Software Engineering

Beim Programmieren in C++ werden üblicherweise die folgenden Bausteine benutzt:• Funktionen und Klassen der C++

Standardbibliothek, • Funktionen und Klassen der verschiedensten

Fremdanbieter,• selbstdefinierte Funktionen und Klassen.

Page 23: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

23

Tipp zur Performanz

Die Nutzung von Funktionen und Klassen der C++ Standard-Bibliothek anstelle des Schreibens von eigenen Versionen wird meist die Performanz des Programms verbessern, da die Standardbibliothek auf Effizienz optimiert wurde. Diese Vorgehensweise verkürzt auch die Entwicklungszeit für ein Programm.

Page 24: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

24

Portabilitäts-Tipp

Die Nutzung von Funktionen und Klassen der C++ Standard-Bibliothek anstelle von eigenen Versionen verbessert die Portabilität des Programms, da die Standardbibliothek Bestandteil jeder C++ Implementierung ist.

Page 25: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

25

Betrachtung zum Software Engineering

Umfangreiche Klassenbibliotheken wiederverwendbarer Softwarekomponenten sind im Internet verfügbar.

Viele dieser Bibliotheken sind kostenlos:- .NET-Klassenbibliothek- Qt-Klassenbibliothek- Boost-Klassenbibliothek (Teile davon sind zukünftige

Erweiterungen des C++-Standards)

Page 26: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

26

1.5 Typische C++ Entwicklungsumgebung• C++ Programme werden in 6 Phasen entwickelt

– Editieren• Programmierer schreibt Programm

(und speichert Quellcode auf Festplatte)– Präprozessor

• Ergänzungen und Ersetzungen auf Textebene– Compilieren

• Compiler übersetzt C++ Programm in Maschinensprache– Linken

• Objektcode mit weiteren Funktionen und Daten verbinden– Laden

• Übertragen des ausführbaren Programms in den Arbeitsspeicher– Ausführen

• Das (Maschinensprachen-)Programm Befehl für Befehl ausführen

Page 27: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

27

Fig. 1.1 | Typische C++ Entwicklungsumgebung.

Page 28: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

28

Praxis-Tipp

C++ Programme sollten auf möglichst einfache und unkomplizierte Weise geschrieben werden. Man spricht vom KISS-Prinzip (“keep it small and simple”).

Die Programmiersprache sollte nicht durch bizarre Verwendungen und Konstruktionen überansprucht werden.

Page 29: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

29

Praxis-Tipp

Es ist wichtig, die Dokumentation für die Version von C++ zu lesen, die man verwendet.Man sollte dies möglichst häufig tun, um ein Gefühl für die Möglichkeiten von C++ und den korrekten Gebrauch dieser Möglichkeiten zu bekommen.

Page 30: 1 PG 1 Hochschule Darmstadt Prof.Dr. H.P Voraussetzung Belegung Pr-vorleistung Pr-form ... OO Analyse und Design Prüfung PAD1 angetreten Praktikum K ... (Assembler-Sprachen)

2006 Pearson Education, Inc. All rights reserved.

30

Praxis-Tipp

Rechner und Compiler sind gute Lehrer: Falls man nach dem Studium der C++-Dokumentation noch nicht sicher ist, wie eine Eigenschaft von C++ funktioniert, sollte man mit einem kleinen Testprogramm experimentieren und ‘schauen was passiert’. Jede Compilermeldung sollte genau studiert werden und mit Hilfe des Debuggers die Zusammenhänge klargemacht werden.