Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 37

198 pages
5 views
of 198

Please download to get full document.

View again

All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Share
Description
Skript Informatik Seite 1 von 37 Was ist Informatik? - Informatik ist die Wissenschaft von der systematischen Verarbeitung von Informationen, insbesondere deren automatisierte Verarbeitung mit Hilfe von
Transcript
Skript Informatik Seite 1 von 37 Was ist Informatik? - Informatik ist die Wissenschaft von der systematischen Verarbeitung von Informationen, insbesondere deren automatisierte Verarbeitung mit Hilfe von elektronischen Rechenanlagen. - Die Informatik beschäftigt sich mit: o dem Aufbau, der Arbeitsweise und dem Konstruktionsprinzip von elektronischen Rechenanlagen und o den Strukturen, Eigenschaften und Beschreibungsmöglichkeiten von Informationen und deren Weiterverarbeitung. Seite 2 von 37 Algorithmus - Ein Algorithmus ist eine endliche Folge genau definierter Vorschriften zur Lösung einer Aufgabenstellung. - Ein Algorithmus ist ein Verfahren, welches in einem endlichen Text niedergelegt werden muss und effektiv durch eine Maschine (Computer) ausgeführt werden kann. - Algorithmen wandeln Eingabedaten in Ausgabedaten um. Seite 3 von 37 Programm - Programme sind in einer Programmiersprache formulierte Algorithmen. - Im Gegensatz zu Algorithmen sind Programme in einer eindeutigen Programmiersprache verfasst. - Ein und derselbe Algorithmus kann in verschiedenen Programmiersprachen formuliert werden. Seite 4 von 37 Softwareentwicklung - Unter Softwareentwicklung versteht man die systematische Konstruktion von Programmen zur Lösung eines in der realen Welt gestellten Problems. Seite 5 von 37 Computer - Von wenigen Ausnahmen abgesehen, liegt modernen Computern das Prinzip des Von-Neumann-Rechners zugrunde. - Der Rechner besteht aus fünf Funktionseinheiten: o Steuerwerk o Rechenwerk o Speicher o Eingabewerk o Ausgabewerk - Diese Funktionseinheiten sind durch ein Bussystem verbunden. - Von-Neumann-Rechner folgen dem EVA-Prinzip: Eingabe - Verarbeitung - Ausgabe Seite 6 von 37 Von-Neumann-Rechner Seite 7 von 37 Zentraleinheit - Steuerwerk, Rechenwerk und Speicher fasst man auch unter der Bezeichnung Zentraleinheit zusammen. - Steuerwerk und Rechenwerk sind meist in einem Chip, dem Prozessor (CPU = Central Processing Unit) untergebracht. - Der Prozessor ist mit den anderen Bestandteilen des Rechners über einen Bus verbunden. Seite 8 von 37 Steuerwerk - Das Steuerwerk steuert und koordiniert alle Aktionen, die in der Zentraleinheit ablaufen. - Das Steuerwerk hat folgende Aufgaben: o Befehle in der richtigen Reihenfolge aus dem Speicher laden o Befehle decodieren o Befehle interpretieren o Versorgung der Funktionseinheiten mit Steuersignalen Seite 9 von 37 Rechenwerk - Im Rechenwerk werden die arithmetischen und logischen Verknüpfungen ausgeführt (ALU: Arithmetic Logical Unit). - Die Operanden werden hierbei vom Steuerwerk geliefert. - Das Rechenwerk wird mit den für die richtige Durchführung der Operation notwendigen Steuersignalen versorgt. Seite 10 von 37 Speicher - Im Speicher werden: o Programme o Daten o Zwischenergebnisse o Endergebnisse abgelegt - Jede Speicherzelle hat eine Adresse. Seite 11 von 37 Bus - Ein Rechner ist modular aufgebaut. - Größere Funktionseinheiten sind meist in Form von einzelnen Chips realisiert. - Neben den oben erwähnten Funktionseinheiten gibt es u.a. Chips für die Bildschirmsteuerung, die externe Kommunikation, die Kontrolle von Peripheriegeräten. Seite 12 von 37 Bus - Die notwendigen Verbindungen zwischen den einzelnen Elementen werden von sogenannten Bussen übernommen. - Als Beispiele sind der Datenbus und der Adressbus zu nennen. - Der Datenbus transportiert Daten. - Über den Adressbus wird festgelegt, welche Speicherzelle gelesen oder beschrieben werden soll. Seite 13 von 37 Eingabe- und Ausgabewerk - Geräte, die an dem Ein- und Ausgabewerk angeschlossen sind, werden als Peripherie bezeichnet. - Beispiele für die Peripherie sind: Tastatur, Maus, Bildschirm, Drucker, Scanner, DVD-Laufwerk. - Keine Peripheriegeräte hingegen sind: Konventionelle Festplatten, SSD, USB-Sticks. Sie zählen zu den Datenspeichern. Seite 14 von 37 Programmiersprachen - Man unterscheidet 5 Generationen von Programmiersprachen: o 1. Generation: Maschinensprache o 2. Generation: Assemblersprache o 3. Generation: Höhere Programmiersprache o 4. Generation: Nichtprozedurale Sprache o 5. Generation: Wissens- und Objektorientierte Sprache Seite 15 von 37 Maschinensprache - Die Maschinensprache entspricht dem Befehlsvorrat einer speziellen CPU. - In Maschinensprache geschriebene Programme sind nur auf einem CPU-Typ lauffähig. Seite 16 von 37 Maschinensprache Beispiel Seite 17 von 37 Assemblersprache - Der Vorrat an symbolischen Befehlen entspricht dem der Maschinensprache. - Einem Maschinenbefehl ist jeweils ein symbolischer Befehl zugeordnet. - In Assembler geschriebene Programme sind nur auf einem CPU-Typ lauffähig. Seite 18 von 37 Assemblersprache - Mit Assembler-Programmen kann man, unter Ausnutzung aller Möglichkeiten der CPU, sehr effiziente Programme erstellen. - Assemblerprogramme werden mit speziellen Übersetzern in Maschinensprache übersetzt. MOVE.L #222222, D0 MOVE.L #333333, D1 ADD.L D1, D0 Seite 19 von 37 Höhere Programmiersprachen - Für diese Sprachen gibt es eine Vielzahl von Bezeichnungen. - Sie sind weitgehend maschinenunabhängig, genormt und oft für einen speziellen Anwendungsbereich konzipiert. - Zur Problemlösung werden Algorithmen formuliert, d.h. die Abfolge, in der die Daten bearbeitet werden, wird definiert. Seite 20 von 37 Höhere Programmiersprachen - Hier trennte sich auch die Entwicklung zwischen Sprachen für kaufmännische Anwendungen, welche meist große Datenbestände verwalten müssen und wissenschaftlichtechnische Anwendungen, bei denen die effiziente Programmierung komplexer mathematischer Algorithmen im Vordergrund steht. Seite 21 von 37 Höhere Programmiersprachen - Als Urahn der kaufmännisch orientierten Programmiersprachen ist COBOL (Common Business Oriented Language, ab 1959) zu sehen; die älteste Programmiersprache für wissenschaftlichtechnische Anwendungen ist FORTRAN (FORmula TRANslator, ab 1954). - Weitere Beispiele sind PL/1, PASCAL, BASIC, ALGOL und C. a = ; b = ; c = a + b; Seite 22 von 37 Nichtprozedurale Sprachen - Die Definition dieser Sprachen und der im nächsten Unterkapitel beschriebenen Sprachen ist fließend. - Eine wichtige Eigenschaft ist die Nichtprozeduralität. - Dem Rechner muss nicht mehr länger mitgeteilt werden, wie er das Problem zu lösen hat, sondern nur noch, was zu geschehen hat. Seite 23 von 37 Nichtprozedurale Sprachen - Verwendung finden sie überwiegend im Bereich von Dateiverwaltungs- und Datenbanksystemen. - Deshalb werden diese Sprachen auch als datenorientierte Sprachen bezeichnet. - Am bekanntesten ist SQL für die relationale Datenmanipulation. Seite 24 von 37 Nichtprozedurale Sprachen - Die Sprachen der 4. Generation haben die Produktivität in der Programmentwicklung erheblich erhöht. - Allerdings nehmen sie sehr stark Hardwareressourcen in Anspruch. - Viele dieser Sprachen sind proprietär, d.h. sie gehören zu einer bestimmten Rechnerplattform, und damit ist man vom jeweiligen Hersteller abhängig. Seite 25 von 37 Objektorientierte und Wissensbasierte Sprachen - Schwierig ist die Klassifikation dieser Sprachen. - Sie werden teilweise auch als 5. Generation bezeichnet. - Zu bedenken ist jedoch, dass es sich hierbei um die verschiedensten Arten von Programmiersprachen handelt. Seite 26 von 37 Objektorientierte und Wissensbasierte Sprachen - Objektorientierte Sprachen beruhen auf einem vollkommen anderen Programmierprinzip. - Die Daten, die ein Programm verarbeitet und die Methoden, mit denen die Daten verarbeitet werden, werden zu sogenannten Objekten zusammengefasst, die dann miteinander kommunizieren. - Eine wichtige Eigenschaft ist die Möglichkeit der Vererbung von Eigenschaften eines Objektes auf ein anderes. - Beispiele sind C++ und Java. Seite 27 von 37 Objektorientierte und Wissensbasierte Sprachen - Wissensbasierte Sprachen, auch KI-Sprachen (KI = Künstliche Intelligenz) sind Sprachen zur Entwicklung von Expertensystemen. - Beispiele sind LISP und PROLOG. Seite 28 von 37 Übersetzer - Ein grundlegendes Problem aller Programmiersprachen ist die Übersetzung des sogenannten Quellprogramms in Maschinensprache. - Hierbei werden drei Konzepte unterschieden: o Assembler o Compiler o Interpreter Seite 29 von 37 Assembler - Assembler setzen Befehle eins zu eins aus der maschinenorientierten Sprache in die Maschinensprache um. Seite 30 von 37 Compiler - Compiler übersetzen ein in einer höheren Sprache geschriebenes Programm in Maschinensprache. - Dabei wird die Quelldatei auf syntaktische Fehler geprüft. - Nach erfolgreicher Übersetzung und dem Link-Vorgang kann das Programm gestartet werden. - Bei jeder Änderung muss das gesamte Programm neu übersetzt werden. Seite 31 von 37 Interpreter - Interpreter gehen Zeile für Zeile durch den Quelltext. - Eine Zeile wird hierbei auf syntaktische Korrektheit geprüft und dann sofort ausgeführt. - Danach wird die nächste Zeile bearbeitet. - Im Gegensatz zum Compiler erstellt der Interpreter kein eigenes, lauffähiges Programm. - Von daher muss z.b. bei der Weitergabe immer sichergestellt sein, dass der Empfänger auch über den Interpreter verfügt. Seite 32 von 37 Entwicklungsprozess für C++Programme - Der Editor unterstützt den Programmierer bei der Eingabe der Quelldatei z.b. Beispiel.cpp. - Mit dem Präprozessor wird die Quelldatei für den Übersetzungsvorgang vorbereitet. - Der Compiler übersetzt die Quelldatei in Maschinensprache. Als Resultat des erfolgreichen Übersetzungsvorgangs erhält man das Objektprogramm Beispiel.obj. Seite 33 von 37 Entwicklungsprozess für C++Programme - Der Linker fügt dem Objektprogramm andere Objektprogramme, z.b. aus Programm-Bibliotheken hinzu. Es resultiert ein ausführliches Maschinenprogramm Beispiel.exe. - Der Lader transferiert das ausführbare Maschinenprogramm in den Hauptspeicher und startet es. - Der Debugger wird zur Analyse des Quellprogramms und für Tests eingesetzt. Seite 34 von 37 C++ Historie Martin Richards entwickelte BCPL, assemblernahe Sprache Simula 67, Programmiersprache für mathematisch technische Probleme und Simulation, erste objektorientierte Konzepte Ken Thompson entwickelte B, eine assemblernahe Sprache; Unix Betriebssystem für PDP Dennis Ritchie (Bell Labs) entwirft C; rechnerunabhängige Sprache zur Portierung von Unix auf PDP 11 Seite 35 von 37 C++ Historie Kernighan und Ritchie geben das erste Referenzbuch zu C heraus Start der Arbeiten an C mit Klassen erster Entwurf von C++ durch Bjarne Stroustrup; Bell- Labs in den USA Bjarne Stroustrup veröffentlicht das Buch: The C++ Programming Language Seite 36 von 37 C++ Historie Veröffentlichung des ersten reinen C++ Compilers für PCs und Workstations American National Standards Institute (kurz: ANSI) veröffentlicht den ersten C Standard erste C++ Version von Borland (heute: Inprise) erste C++ Version von Microsoft Veröffentlichung des ANSI C++ Standards ISO/IEC Seite 37 von 37 Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente - Mit den im Zeichensatz enthaltenen Zeichen werden folgende Elemente gebildet: o Schlüsselwörter o Namen o Konstanten o Operatoren o Interpunktionszeichen Seite 3 von 29 Schlüsselwörter - Schlüsselwörter haben eine durch die Programmiersprache festgelegte Bedeutung. asm auto break case catch char class const continue default delete do double else enum extern float for friend goto if inline int long new operator private protected public register return short signed sizeof static struct switch template this throw try typedef union unsigned virtual void volatile while Seite 4 von 29 Namen - In einem Programm werden Variablen, Funktionen usw. Namen (Bezeichner) zugeordnet. - Ein Name beginnt mit einem Buchstaben oder einem Unterstrich. - Er besteht aus einer Folge von Buchstaben, Ziffern und dem Unterstrich. - Ein Name hat eine vom Compiler abhängige Länge von z.b. 255 Zeichen. Seite 5 von 29 Namen - Groß- und Kleinschreibung wird unterschieden. - Namen von Variablen sollten mit Kleinbuchstaben beginnen. - Konstanten sollten groß geschrieben werden (z.b.: PI). - Ein C++ Schlüsselwort darf nicht als Name verwendet werden. volumen PI _anzahl_werte feldnummer16 FeldNummer16 Seite 6 von 29 Konstanten - Konstanten sind nicht veränderbare Daten innerhalb eines Programms. - Jeder Konstanten ist eindeutig ein Datentyp zugeordnet. - Die spezifische Schreibweise der Konstanten hängt von ihrem Datentyp ab Seite 7 von 29 Operatoren - Operatoren dienen der Verknüpfung von Operanden. - Es sind für jeden Datentyp Operatoren vordefiniert. - Bsp: Addition + Division / Oder Seite 8 von 29 Interpunktionszeichen - Ein Beispiel für ein Interpunktionszeichen ist das Semikolon am Ende jeder Anweisung. a = 1; cin radius; Seite 9 von 29 Trennung von Anweisungen - Es können eine oder mehrere Anweisungen in einer Zeile stehen. - Am Ende jeder Anweisung muss ein Semikolon stehen. a = 1; b = 2; c = 3; Seite 10 von 29 Kommentare - C++ Kommentare beginnen mit // und reichen bis zum Ende der Zeile. // Dies ist eine Kommentarzeile a = 1; // Dies ist ein Kommentar Seite 11 von 29 Kommentare - Kommentare im C-Stil sind auch erlaubt, und dienen meist zur vorübergehenden Ausblendung von Programmcode. - Dadurch ist das Ausblenden eines ganzen Abschnittes möglich. /* Dies ist ein Kommentar */ /* volumen = 4.0 / 3.0 * PI * pow(radius, 3); cout Volumen = volumen endl; */ Seite 12 von 29 Fortsetzungszeilen - In C++ ist es möglich, eine Zeile in der darauf folgenden Zeile fortzusetzen. volumen = 4.0 / 3.0 * PI * pow(radius, 3); Seite 13 von 29 Leerzeichen - Innerhalb von Schlüsselwörtern, Namen, Konstanten (außer Zeichenkonstanten) und Operatoren (z.b. ) dürfen keine Leerzeichen verwendet werden. Seite 14 von 29 Das Hallo Welt -Programm Zeile Befehl 1 #include iostream 2 using namespace std; 3 void main() 4 { 5 cout Hallo Welt ; // Dies ist ein Kommentar 6 } Seite 15 von 29 Das Hallo Welt -Programm - Dieses Programm gibt den Text Hallo Welt auf dem Bildschirm aus. - Ein C++ Programm besteht mindestens aus der globalen Funktion main. Sie ist das Hauptprogramm und darf auch nur main heißen! - In Zeile 1 steht die Präprozessor-Anweisung. - Zeile 2 gibt den Namensraum an, in dem die genutzten Befehle zu finden sind. (Der Befehl cout ist zu finden im Namensraum std ) - Ab Zeile 3 wird die Funktion main definiert. Seite 16 von 29 Das Hallo Welt -Programm - Zeile 4 und 6 begrenzen einen Block. Dieser ist der Funktionsrumpf von main. - Hinter cout Hallo Welt ; steht ein Kommentar - Kommentare werden mit // eingeleitet. Alles, was hinter den // folgt, wird nicht abgearbeitet. - Jeder Befehl innerhalb der geschweiften Klammern { } wird durch ein Semikolon abgeschlossen. (Bsp.: cout Hallo Welt ;) Seite 17 von 29 Das zweite C++-Programm Zeile Befehl 1 #include iostream // cin/cout sind hier enthalten 2 #include cmath // pow ist hier enthalten 3 using namespace std; 4 void main() 5 { 6 double volumen, radius; 7 const double PI = ; 8 cout Radius der Kugel eingeben: ; 9 cin radius; 10 volumen = 4.0 / 3.0 * PI * pow (radius, 3); 11 cout Volumen = volumen endl; 12 } Seite 18 von 29 Das zweite C++-Programm - Dieses Programm berechnet das Volumen einer Kugel bei gegebenem Radius. - In Zeile 1 und 2 stehen die Präprozessor-Anweisungen. - In Zeile 3 steht die using-anweisung - Ab Zeile 4 wird die Funktion main definiert. - In Zeile 5 und 12 umschließen den Funktionsrumpf der Funktion main. Seite 19 von 29 Das zweite C++-Programm - In Zeile 6 werden die Variablen volumen und radius definiert. - In Zeile 7 wird die Konstante PI definiert. - In Zeile 8 und 11 werden Zeichenfolgen und der Wert von volumen ausgegeben. - In Zeile 9 steht die Eingabe für die Variable radius. - In Zeile 10 findet man die Berechnung für volumen. - Die vorhandenen // in Zeile 1 und 2 dienen wieder der Einleitung eines Kommentars. Seite 20 von 29 Blöcke - Mit Blöcken fasst man mehrere Befehle und Deklarationen zu einer Einheit zusammen. - Innerhalb eines Blocks können lokale Variablen definiert werden. - Der Rumpf einer Funktion (zum Beispiel bei main) muss ein Block sein. - Blöcke dürfen beliebig ineinander geschachtelt sein. Seite 21 von 29 Blöcke - Beispiel #include iostream using namespace std; void main() { int a, b; a = 1; b = 2; cout a b endl; { int b = 5, c = 3; cout a b c endl; { int d = 4; cout a b c d endl; } } } Seite 22 von 29 Header-Dateien - Oberhalb der Funktion main werden Header-Dateien eingebunden. #include iostream - Diese, mit Doppelgatter # beginnenden Zeilen, sind sogenannte Präprozessoranweisungen. - Der Präprozessor erzeugt entsprechend der Anweisung den Quelltext, der dann vom Compiler übersetzt wird. - Am Ende einer Präprozessor-Anweisung steht kein Semikolon. Seite 23 von 29 Header-Dateien - Header-Dateien sind Textdateien, die u.a. weitere Befehle enthalten (zb cout, cin). - Header-Dateien werden mit der include-anweisung eingebunden, um diese Befehle im Programm nutzen zu können. Seite 24 von 29 Header-Dateien - Spitze Klammern werden bei Standard-Header-Dateien verwendet. - Zur Einbindung von selbst verfassten Header-Dateien verwendet man Anführungszeichen. #include math.h #include Test.h Seite 25 von 29 Header-Dateien - Alle in einer Header-Datei deklarierten Namen sind global verfügbar. - Das kann bei großen Programmen zu Namenskonflikten führen. Seite 26 von 29 Header-Dateien - Daher gibt es in C++ z.b. zur Header-Datei math.h noch eine Header-Datei cmath, die dieselben Namen in einem Namensbereich std deklariert. #include math.h entspricht #include cmath using namespace std; Seite 27 von 29 Formatierungsregeln für Quelldateien - In den obigen Beispielen wurden einige Regeln zur Formatierung eines C++ Quellprogramms befolgt: - Jeder neue Block wird um eine bestimmte Anzahl an Leerzeichen oder Tabs eingerückt. - Blockbegrenzungen stehen immer in einer gesonderten Zeile. - Jede Funktion beginnt mit der ersten Spalte (steht also ganz links). Seite 28 von 29 Formatierungsregeln für Quelldateien - Bei längeren Anweisungen sollte der Übersicht halber nicht mehr, als eine Anweisung pro Zeile geschrieben werden. - Keine Zeile sollte mehr, als 80 Zeichen lang sein, um die Lesbarkeit zu erhöhen. Seite 29 von 29 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt. - Für jeden Datentyp gibt es eine Festlegung, in welcher Weise Konstanten eindeutig dargestellt werden können. - In C++ gibt es eine Reihe vordefinierter Datentypen. - Aus den vordefinierten Datentypen können weitere Datentypen zusammengesetzt werden. Seite 2 von 18 Datentypen - Einführung - In dieser Tabelle sind die arithmetischen Datentypen aufgelistet: Datentyp Länge Wertebereich von bis char 1 Byte int 4 Byte float 4 Byte ± ± double 8 Byte ± ± Seite 3 von 18 Ganzzahlige Konstanten - Ganze Zahlen (ganzzahlige Konstanten) werden unter den Datentyp int gespeichert. - Der Computer speichert die Zahlen aber nicht in der Form, wie wir sie benutzen. (Also z.b. die Zahl 6 wird nicht als 6 gespeichert.) - Die Speicherung erfolgt als Binärzahl. (z.b für die Zahl 6) - Um auch negative Zahlen speichern zu können, wird die Zahl bei den meisten Rechenwerken in der Zweierkomplementdarstellung gespeichert. Seite 4 von 18 Ganzzahlige Konstanten Beispiel: 4 wird im Computer so gespeichert: 1. Vorzeichen ignorieren und ins Binärsystem umrechnen 4 = Seite 5 von 18 Ganzzahlige Konstanten Beispiel: -4 wird im Computer so gespeichert: 1. Vorzeichen ignorieren und ins Binärsystem umrechnen 4 = Invertieren, da negativ Eine 1 addieren, da negativ = Seite 6 von 18 Ganzzahlige Konstanten - Durch die Speicherung der Zahlen in Zweierkomplementdarstellung können wir auf dem vorgesehenen Platz zwar nur halb so viele Zahlen speichern. - Jedoch ermöglicht uns dies, dass die Verarbeitung von positiven und negativen Zahlen im Reche
Related Search
Advertisement
Related Documents
View more...
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks