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.

Documents pareils