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.