Informatik 1 - Hochschule Darmstadt
Transcription
Informatik 1 - Hochschule Darmstadt
1
Inf 1
Hochschule Darmstadt
Prof.Dr. H.P.Weber
Informatik 1
2006 Pearson Education, Inc. All rights reserved.
2
Inhalt von Informatik 1
1
2
3
4
5
6
7
8
9
Einführung
Grundelemente der C Programmierung
Kontrollanweisungen: Teil 1
Kontrollanweisungen: Teil 2
Funktionen und eine Einführung in Rekursion
Arrays, Suchen und Sortieren
Zeiger
Strukturierte Datentypen (struct)
Dateiverarbeitung
2006 Pearson Education, Inc. All rights reserved.
3
1
Einführung
2006 Pearson Education, Inc. All rights reserved.
4
1.1
Organisatorisches
1.2
Programmiersprachen
1.3
Geschichte von C und C++
1.4
C/C++ Standardbibliothek
1.5
Typische C/C++ Entwicklungsumgebung
2006 Pearson Education, Inc. All rights reserved.
5
1.1 Organisatorisches
• Stellung von ‘Informatik 1’ im Studium
– 1. Semester: Informatik 1
• Prozedurale und strukturierte Programmierung
• Programmiersprache C
– 2. Semester: Informatik 2
• Objektorientierte und generische Programmierung
• Programmiersprache C++
2006 Pearson Education, Inc. All rights reserved.
6
1.1 Organisatorisches
• Literatur
– H.M.Deitel,P.J.Deitel: C How To Program,7th ed
(oder auch: 6th-5th ed); Prentice-Hall; 2013/2009/2006
– Basistext der Vorlesung, deshalb primär empfohlen.
– Goll, Dausmann: C als erste Programmiersprache, 8. Auflage;
Springer Vieweg; 2014
– Deutschsprachiges Standardwerk zu Sprachsyntax und -nutzung.
– Außerdem: www.cplusplus.com
– Gute Referenz für die Bearbeitung der Aufgaben im Praktikum.
2006 Pearson Education, Inc. All rights reserved.
7
1.1 Organisatorisches
• Software
– Für eingeschriebene Studenten der Hochschule Darmstadt
sind im Rahmen des ‘Microsoft Imagine’-Programms
kostenlos erhältlich:
– Visual Studio 2013 Professional
– Visual Studio 2015 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 auch auf den Rechnern im Praktikum vorhanden
2006 Pearson Education, Inc. All rights reserved.
8
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 und
Entwicklungsumgebung 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 (‚pair-programming‘).
2006 Pearson Education, Inc. All rights reserved.
9
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.
2006 Pearson Education, Inc. All rights reserved.
10
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
2006 Pearson Education, Inc. All rights reserved.
11
1.1 Organisatorisches
• Ablauf eines Praktikumstermins
– Ausgabe der Aufgabenstellung (Download von meiner
Website) ca. 14 Tage vor Praktikumstermin
– Vorbesprechung in der Vorlesung
– Zu Hause: Programmcode entwerfen und eintippen
• Am besten schon mit Visual Studio 2015 oder 2013
• Code für komplettes Projekt ins Praktikum mitbringen
– Im Praktikum: Übersetzung, Inbetriebnahme mit
Visual Studio, Testen, evtl. mit Praktikumspartner
durchsprechen / abgleichen
(Zeitrahmen: maximal 90 Minuten)
– Abnahme/Testierung durch Betreuer
2006 Pearson Education, Inc. All rights reserved.
12
1.1 Organisatorisches
• Regeln zum Praktikum
– 5 von 5 möglichen Testaten sind Pflicht für erfolgreiche
Praktikumsteilnahme
– Testate gibt es grundsätzlich nur zum jeweiligen Termin
– Bewertung: ‘teilgenommen’ als Eintrag im QIS
• Dies ist die Voraussetzung für die Zulassung zur Klausur.
– Gruppeneinteilung für das Praktikum beim ersten
Vorlesungstermin
– Termine und Aufgabenstellungen auf meiner Website
– Durchführung in Zweiergruppen
2006 Pearson Education, Inc. All rights reserved.
13
1.1 Organisatorisches
• Praktikum / Netzzugang
– Studierende setzen ihr Passwort für Labor und WLAN
im OBS ('Online-Belegsystem') des FB Informatik
– Laborzugang vor dem ersten Praktikum von zu Hause
aus aktivieren
– Dazu im OBS einloggen mit Matrikelnummer und
Geburtsdatum als Initialpasswort; dann bei 'Passwort
ändern' ein 'Passwort für Labors' eingeben
– 'Passwort für Labors' merken und beim Praktikumstermin zum Einloggen in Laborrechner verwenden
– https://obs.fbi.h-da.de/obs/
2006 Pearson Education, Inc. All rights reserved.
14
1.1 Organisatorisches
• Leistungsnachweis
– Klausur (90 Minuten)
• Zulassungsvoraussetzung: 5 Testate
• Inhalt:
– 'Papierklausur' mit Fragen zur Vorlesung und
einzelnen Aspekten der Programmieraufgaben
aus dem Praktikum
2006 Pearson Education, Inc. All rights reserved.
15
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
2006 Pearson Education, Inc. All rights reserved.
16
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
2006 Pearson Education, Inc. All rights reserved.
17
1.2 Programmiersprachen
• Prozedurale Programmiersprachen:
–
–
–
–
–
FORTRAN
COBOL
ALGOL
PASCAL
C
(FORmula TRANslator)
(COmmon Business Oriented Language)
(ALGOrithmic Language)
• Funktionale Programmiersprachen:
– LISP, Haskell, ML
– Scala, F#
• Logische Programmiersprachen:
– PROLOG
2006 Pearson Education, Inc. All rights reserved.
18
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
2006 Pearson Education, Inc. All rights reserved.
19
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’)
2006 Pearson Education, Inc. All rights reserved.
20
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 unterscheidet
sich von C++11 nur durch kleinere Korrekturen und Ergänzungen.
2006 Pearson Education, Inc. All rights reserved.
21
1.4 C/C++ Standardbibliothek
• C/C++ Programme
– Aufgebaut aus Teilen, die
• ‘Funktionen’ und
• ‘Klassen’ (im Fall von C++) genannt werden
• C/C++ Standardbibliothek
– Reichhaltige Sammlung von existierenden Funktionen
und Klassen
• Wiederverwendbar in neuen Anwendungen
2006 Pearson Education, Inc. All rights reserved.
22
Betrachtung zum Software Engineering
• Verwende einen “Baukasten”-Ansatz, um
Programme 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 prozeduralen, objektorientierten und generischen Programmierung.
2006 Pearson Education, Inc. All rights reserved.
23
Betrachtung zum Software Engineering
Beim Programmieren in C/C++ werden
üblicherweise die folgenden Bausteine benutzt:
• Funktionen und Klassen der C/C++
Standardbibliothek,
• Funktionen und Klassen der verschiedensten
Fremdanbieter,
• selbstdefinierte Funktionen und Klassen.
2006 Pearson Education, Inc. All rights reserved.
24
Tipp zur Performanz
Die Nutzung von Funktionen und Klassen der
C/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.
2006 Pearson Education, Inc. All rights reserved.
25
Portabilitäts-Tipp
Die Nutzung von Funktionen und Klassen der
C/C++ Standard-Bibliothek anstelle von eigenen
Versionen verbessert die Portabilität des
Programms, da die Standardbibliothek
Bestandteil jeder C/C++ Implementierung ist.
2006 Pearson Education, Inc. All rights reserved.
26
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)
2006 Pearson Education, Inc. All rights reserved.
27
1.5 Typische C/C++ Entwicklungsumgebung
• C/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/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
2006 Pearson Education, Inc. All rights reserved.
28
Fig. 1.1 | TypischeC/C++ Entwicklungsumgebung.
2006 Pearson Education, Inc. All rights reserved.
29
Praxis-Tipp
C/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.
2006 Pearson Education, Inc. All rights reserved.
30
Praxis-Tipp
Es ist wichtig, die Dokumentation für die
Version von C/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/C++ und
den korrekten Gebrauch dieser Möglichkeiten
zu bekommen.
2006 Pearson Education, Inc. All rights reserved.
31
Praxis-Tipp
Rechner und Compiler sind gute Lehrer: Falls man
nach dem Studium der C/C++-Dokumentation
noch nicht sicher ist, wie eine Eigenschaft von
C/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.
2006 Pearson Education, Inc. All rights reserved.