Informatik für Ingenieure (InfIng) Programmiersprachen Doz. Dipl.-Ing. H. Hiller WS 2012/13 Übersicht Programmiersprachen und ihre Entwicklung Grundelemente einer Programmiersprache Syntaktische Strukturierung Programmentwicklung und erstes kleines Programm FH D Fachhochschule Düsseldorf Seite 2 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Programmierbare Rechner Festverdrahtet Programmierung erfolgt festverdrahtet über Schalttafeln (z.B. ENIAC) Umprogrammierung durch Umstecken der Schaltleitungen Speicherprogrammierbar Entwicklung von Rechnern auf Basis der Von-Neumann-Architektur Programmänderungen ohne Änderungen der Hardware CPU Rechenwerk Steuerwerk Bussystem E/A-Werk FH D Fachhochschule Düsseldorf Rechenwerk - Ausführung der einzelnen Rechenoperationen Steuerwerk - Interpretation der Anweisungen; Steuerung der Befehlsfolge Speicherwerk - Speicherung von Programmen und Daten Ein-/Ausgabewerk - Steuerung der Einund Ausgabe von Daten zum Anwender Speicherwerk Seite 3 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Historische Meilensteine 1940er Jahre Erste elektronische Rechner; Programmierung über festverdrahtete Schalttafeln Ende der Dekade erste hardwarenahe Programmierung in Assembler 1950er Jahre Mitte bis Ende des Jahrzehnts erste Hochsprachen wie FORTRAN oder COBOL 1960er Jahre BASIC; soll Studierenden den Einstieg in FORTRAN und Algol erleichtern 1970er Jahre Programmiersprache C; entworfen für die Entwicklung des Betriebssystems UNIX 1980er Jahre Beginn objektorientierter Programmierung; C++ syntaktische Erweiterung von C 1990er Jahre Sun entwickelt Java, Siegeszug geht einher mit Popularität des Internets FH D Fachhochschule Düsseldorf Seite 4 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Entwicklung der Programmiersprachen Quelle: http://de.wikipedia.org/wiki/Objektorientierte_Programmiersprache, http://de.wikipedia.org/wiki/Bild:Historie.png, Lizenzstatus: GNU FDL FH D Fachhochschule Düsseldorf Seite 5 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Warum so viele Programmiersprachen? Verschiedene Anwendungsgebiete Lokale Systeme, Verteilte Systeme, Internet Verschiedene Plattformen Windows, Unix, Mainframes Verschiedene Anforderungen Sicherheitskritisch, eingebettet (embedded) Erlernbarkeit Natürliche Sprachkonstrukte und natürliche Denkweise Daten- und Typkonzept Wenige / keine / strenge / einfache / komplexe Typen Überprüfbarkeit statisch, dynamisch Grad der Maschinennähe / Komplexität / Abstraktion Assembler Höhere Programmiersprachen FH D Fachhochschule Düsseldorf Seite 6 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Compiler Compiler Übersetzt Quellcode in Maschinencode und schließt die Lücke zwischen … …Programm (von Menschen konzipiert) u. Prozessor (tiefes Verständnis für 0 u.1) int main() { printf("Hello"); return 1; } Schreibe Zeichenfolge "Hello“ auf den Bildschirm. Quellcode © Alexei Sysoev - Fotolia.com Compiler Lade Reg A mit Adr 31865. Springe zu Adr 53722. 010001100101100101 010010101000100101 010100101010000101 011101100101010... FH D Fachhochschule Düsseldorf Maschinencode CPU Seite 7 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Compiler vs. Interpreter Compiler Übersetzen eines Programmtextes als Ganzes Compiler ist selbst ein Programm Dateneingabe ist der vom Menschen lesbare Programmtext Datenausgabe ist der vom Prozessor verstandene Maschinencode Vorgang ist plattformspezifisch, Maschinencode ist nicht portabel Interpreter Übersetzung des Programmtextes Schritt für Schritt zur Laufzeit Quellcode wird eingelesen, analysiert und ausgeführt (Zeile für Zeile) Interpretierte Programme sind langsamer als kompilierte Programme Kompromiss: Just-in-time-Compiler (JIT) – – Programm wird auf dem Zielsystem zur Laufzeit in Maschinencode übersetzt Mehrfach durchlaufene Programmteile brauchen nur einmal übersetzt werden Grundsätzlich auch hier: Erzeugter Maschinencode ist plattformspezifisch FH D Fachhochschule Düsseldorf Seite 8 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Syntax & Semantik Syntax Regeln für die "Rechtschreibung" einer Programmiersprache Festlegung der Zeichen und wie sie kombiniert werden können Bedeutung der verwendeten Zeichen ist außerhalb der Betrachtung Einhaltung der Syntaxregeln werden vom Compiler geprüft Semantik Bedeutung der einzelnen Sprachelemente und ihr Zusammenspiel Beispiele aus einer natürlichen Sprache (Deutsch) Simone näht Kleider. – Syntaktisch richtig (Subjekt, Prädikat, Objekt) und semantisch richtig (Bedeutung klar) Simone Kleider näht. – Syntaktisch falsch (Satzstellung Subjekt, Objekt, Prädikat). Semantisch richtig. Simone schwimmt Kleider. – Syntaktisch richtig aber semantisch falsch (Inhalt ist Nonsens). FH D Fachhochschule Düsseldorf Seite 9 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Daten & Anweisungen Daten Computer verarbeiten Informationen Informationen… – – … werden i.d.R. nicht sofort verarbeitet … müssen für spätere Verwendung im Programm bereitgehalten werden Zwischenspeicherung der Informationen erforderlich Variable Inhalte von Variablen sind während des Programmlaufs veränderbar Anweisungen Vorgabe für die Bearbeitung interner oder externer Daten Bearbeitungsschritte vorgegeben durch einen Algorithmus Anweisungen legen fest, wie der Programmablauf erfolgt – Verzweigungen, Fallunterscheidungen Anweisungen legen auch fest, was mit den Daten geschieht – Zuweisungen Anweisungen sind während des Programmablaufs unveränderbar FH D Fachhochschule Düsseldorf Seite 10 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Übersicht Programmiersprachen und ihre Entwicklung Grundelemente einer Programmiersprache Syntaktische Strukturierung Programmentwicklung und erstes kleines Programm FH D Fachhochschule Düsseldorf Seite 11 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Zeichenvorrat Endliche Menge unterscheidbarer Symbole Beispiel 1: Deutsches Alphabet (a..z, ä, ö, ü, ß) Beispiel 2: Zahlensystem (0..1, Dualsystem) Zeichenvorrat einer Programmiersprache Buchstaben (a, b, c, …) Ziffern (1, 2, 3, …) Interpunktionszeichen (Punkt, Komma, …) Sonderzeichen (Plus, Minus, Leerzeichen, …) Steuerzeichen (Tabulator, Zeilenvorschub, …) Verwendung in einer Programmiersprache Schlüsselworte Bezeichner Operatoren und Interpunktionen Literale Datentypen Kommentare FH D Fachhochschule Düsseldorf Siehe Folgeseiten ! Seite 12 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Schlüsselworte Schlüsselworte … … werden per Definition festgelegt und … sind das Vokabular einer Programmiersprache Sämtliche Schlüsselworte sind dem Compiler bekannt Umfang übersteigt selten 50 Worte Pascal z.B. verfügt über insgesamt 35 Worte, ANSI C über 39 Worte Übersicht bzw. Referenztabelle für jede Sprache erhältlich Beispiele Datentypen : int, float, char Kontrollstrukturen : if, else, for, while Ein relativ kleiner Sprachumfang ermöglicht eine faktisch unendliche Vielfalt von Programmen. FH D Fachhochschule Düsseldorf Seite 13 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Bezeichner Bezeichner… … kennzeichnen Elemente (Funktionen, Variablen etc.) in einem Programm … sind eindeutig innerhalb eines vorgegebenen Namensraums Konventionen Zeichenvorrat (z.B. Buchstaben a..z und A..Z; Zahlen 0-9, Unterstrich "_") Unterscheidung Groß- und Kleinschreibung (case-sensitiv) Maximale Länge (z.B. 40 Zeichen) Signifikanz (z.B. Länge = 40 Zeichen, jedoch nur 32 Zeichen genutzt) Reservierte Wörter dürfen nicht als Bezeichner verwendet werden Beispiele geburtstag, jubeltag, Jubeltag, kuchenback_tag Ein Bezeichner sollte bedeutungsgerecht und anwendungs-orientiert sein! FH D Fachhochschule Düsseldorf Seite 14 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Operatoren und Interpunktionen Operatoren Vielzahl von unterschiedlichen Operatoren, hier nur eine Auswahl Mathematische Operatoren – – Addieren, Subtrahieren, Multiplizieren, etc. Beispiel: "+" für Addition ( a = b + c ) Logische Operatoren – – Gleich, Ungleich, Oder, etc. Beispiel: "==" für einen logischen Vergleich ( if (a == b) ) Interpunktionen Beginn/Ende von Funktionen, Ende einer Anweisung, Blockbildung Beispiel: Anweisungen werden mit Semikolon abgeschlossen ( a = b; ) a = Bezeichner b Bezeichner + c ; Bezeichner Zuweisung math. Operator Interpunktion FH D Fachhochschule Düsseldorf Seite 15 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Literale Literale Literale sind Werte, die sich selbst ausdrücken (nicht als Wert von Variablen etc.) Hierzu gehören: Ganzzahlen, Gleitkommazahlen, Zeichen und Zeichenketten Literale können nur in rechtsseitigen Ausdrücken stehen und verändern sich nicht Arten von Literale Integer-Konstante Fließkomma-Konstante Zeichen-Konstante Zeichenfolge-Konstante 7, 07, 189 3.14 'a', '\n' "Hier ist eine Zeichenfolge" 3.14 = Pi ; Falsch Pi = 3.14 ; Richtig linksseitiger Ausdruck FH D Fachhochschule Düsseldorf rechtsseitiger Ausdruck Seite 16 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Datentypen Integer Ganze Zahlen, z.B. 1, 2556, 0x123(hex) Darstellung im Rechner: 1 … n Byte Floating Point Fließkommazahlen, z.B. 345.33, 323e-2 Darstellung im Rechner: 1 … n Byte Character ASCII-Zeichen, darstellbar (z.B. 'A') und nicht-darstellbar (z.B. <CR>) Darstellung im Rechner: 1 Byte/Character String Zeichenketten, z.B. "Dies ist ein String." Darstellung im Rechner: n Byte/String FH D Fachhochschule Düsseldorf Seite 17 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Whitespaces Zwischenraumzeichen Leerzeichen (SPACE) – Leerschritt, Wortzwischenraum Tabulatorzeichen (TAB) – Positioniert den Druckkopf an einer vorher definierten Schreibmarke Carriage Return (CR) – © Christian Delbert - Fotolia.com Positioniert den Druckkopf zurück in die erste Druckposition der aktuellen Zeile CR/LF Line Feed (LF) – Positioniert den Druckkopf in die nächste Zeile … und noch einige mehr. Darstellbarkeit Normalerweise nicht darstellbar im Texteditor Ggf. durch Formatierungssymbole (z.B. "¶") © photobrothers - Fotolia.com FH D Fachhochschule Düsseldorf Seite 18 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Kommentare Kommentare… … sind Anmerkungen im Quellcode an einer beliebigen Stelle … sind ihrem Inhalt nach frei wählbar … werden von weiterverarbeitender Software (z.B. Compiler) ignoriert Zeilen-Kommentar Einzeilig (Startzeichen, endet automatisch am Zeilenende) Block-Kommentar Ein- oder mehrzeilig (Begrenzung durch Start- und Endkennung) Sprache Art Syntax C, Java Zeile Code // Dieser Kommentar endet am Zeilenende C, Java Block Code /* Ein Kommentar mit einem Zeilenumbruch */ Pascal Block Code { Ob mit oder ohne Zeilenumbruch, in Pascal steht Kommentar immer in geschweiften Klammern } FH D Fachhochschule Düsseldorf Seite 19 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Übersicht Programmiersprachen und ihre Entwicklung Grundelemente einer Programmiersprache Syntaktische Strukturierung Programmentwicklung und erstes kleines Programm FH D Fachhochschule Düsseldorf Seite 20 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Variablen Was sind Variablen ? Variablen sind Speicher (Behälter) für Daten Gespeichert werden beispielsweise… … Eingabewerte von der Tastatur … Ergebnisse aus Berechnungen Geben Sie Ihr Geburtsjahr ein: Eingabe via Tastatur gebJahr Berechnung © mikess - Fotolia.com Tastatur-Eingabe wird in der Variablen gebJahr gespeichert FH D Fachhochschule Düsseldorf Seite 21 Informatik für Ingenieure WS 2012/13 alter © mikess - Fotolia.com Ergebnis der Berechnung wird in der Variablen alter gespeichert FB 5 Fachbereich Medien Deklaration, Definition und Initialisierung Deklaration Bekanntmachung von Variablen (und Funktionen) Verwendung erst nach Deklaration möglich Definition Anlegen von Speicher für Variablen (und Funktionen) Hier wird effektiv Platz im Speicher reserviert Initialisierung Zuweisung eines definierten Wertes vor der ersten Benutzung (nur Variablen) Ohne Initialisierung enthält Variable oft nur einen zufälligen Wert (Fehlerquelle!) Beispiele in C int x; Deklaration und Definition einer Variablen (x hat Zufallswert) int x = 0; Deklaration, Definition und Initialisierung einer Variablen extern int y; Deklaration einer Variablen (Definition erfolgt an anderer Stelle) FH D Fachhochschule Düsseldorf Seite 22 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Ausdruck Ausdrücke … … werden nach den Syntaxregeln einer Programmiersprache gebildet … ergeben in Bezug auf einen Kontext (gem. Deklaration) einen Wert … sind i.d.R. eine Kombination aus Operanden und Operatoren Arithmetische Ausdrücke Verknüpfung von Literalen, Variablen, etc. mit arithmetischen Operatoren Beispiel: a = 3 + 4 oder b = (7 + 3) * 3 Logische Ausdrücke Operationen der Booleschen Algebra, Bestimmung eines Wahrheitswertes Beispiel: a UND b oder x ODER y Funktionsaufrufe können ebenfalls einen Ausdruck darstellen Voraussetzung: Sie liefern einen Wert zurück Beispiel: c = flaeche_berechnen (a, b); FH D Fachhochschule Düsseldorf Seite 23 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Zuweisung Zuweisung Variable erhalten tatsächliche Werte (Variable = Ausdruck) Zuweisung erfolgt über den Zuweisungsoperator Schritt 1: Auswerten des Ausdrucks rechts des Operators Schritt 2: Wert wird der Variablen links des Operators zugewiesen Beispiele In C In Pascal : a = a + 1; : b:= 45 // a wird um den Wert 1 erhöht { b erhält den Wert 45 } Achtung Verwechslungsgefahr Beispiel: a = a + 1 Anweisung ist mathematisch sinnlos, programmtechnisch wird a um 1 erhöht Zuweisungen nicht verwechseln mit dem mathematischen Gleichsetzen! FH D Fachhochschule Düsseldorf Seite 24 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Bedingte Anweisung und Verzweigung Bedingte Anweisungen und Verzweigungen … … zählen zu den Kontrollstrukturen eines Programms Bedingte Anweisungen Bedingung und (genau) ein Codeabschnitt Codeabschnitt wird nur bei Erfüllung der Bedingung durchlaufen Verzweigungen Bedingung und zwei oder mehr Codeabschnitte Bedingung legt fest, welcher Codeabschnitt durchlaufen wird Bedingte Anweisung if (Weckzeit == 7 Uhr) WecktonEinFür_1_min(); FH D Fachhochschule Düsseldorf Verzweigung if (Temperatur < 20) HeizungEinschalten(); else HeizungAusschalten(); Heizungzustand_anzeigen(); Seite 25 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Schleifen Schleifen … … auch Iterationen genannt, zählen zu den Kontrollstrukturen eines Programms … wiederholen einen Anweisungsblock so lange die Laufbedingung gültig ist Kopfgesteuerte Schleife Abbruchbedingung wird geprüft, bevor der Schleifenrumpf durchlaufen wird kopfgesteuerte Schleife fußgesteuerte Schleife Fußgesteuerte Schleife Abbruchbedingung wird geprüft, nachdem der Schleifenrumpf durchlaufen wurde Zählschleife Anzahl der Wiederholungen wird bei Eintritt in die Schleife festgelegt AbbruchBedingung Anweisung Anweisung AbbruchBedingung FH D Fachhochschule Düsseldorf Seite 26 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Funktionen Funktionen … … dienen der Strukturierung von Programmen … sind Programm-Module, die in sich abgeschlossen sind … sind einzeln editierbar, übersetzbar und testbar … haben eine klar definierte Schnittstelle (Übergabedaten/Rückgabedaten) Bibliotheksfunktionen… … für Ein- und Ausgabe, mathematische Berechnungen, etc. Beispiel int flaeche_berechnen (int b, int c) 2 Eingabewerte (b und c), Rückgabewert ist das Ergebnis {e} Funktion {a} {e} = Eingabewerte {a} = Ausgabewerte FH D Fachhochschule Düsseldorf Seite 27 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Übersicht Programmiersprachen und ihre Entwicklung Grundelemente einer Programmiersprache Syntaktische Strukturierung Programmentwicklung und erstes kleines Programm FH D Fachhochschule Düsseldorf Seite 28 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Hello World in C Idee Einfaches, bzw. das einfachste und vollständige Programm Ausgabe einer Meldung auf dem Bildschirm Erster Einblick in die Syntax einer Programmiersprache Prüfung, ob Entwicklungsumgebung erfolgreich installiert wurde Ursprung Programmierhandbuch der Bell Laboratories über die Programmiersprache C Hello World Programme nahezu in allen Programmiersprachen verfügbar Beispiel in der Programmiersprache C #include <stdio.h> int main() { printf("Hello World \n"); } FH D Fachhochschule Düsseldorf /* /* /* /* /* /* Bezeichner: Name der Funktion Whitespace: leer Zeile Bezeichner: Name der Funktion Interpunktion: Blockanfang Anweisung, Funktionsaufruf Interpunktion: Blockende Seite 29 Informatik für Ingenieure WS 2012/13 */ */ */ */ */ */ FB 5 Fachbereich Medien Programmerstellung Vom Quellcode bis zum Ausführen eines Programms Editieren – Erstellen des Quellcodes mit einem Texteditor (nicht-formatierend) Editieren Quellcode (.c) Compilieren – – Übersetzen des Quellcodes in maschinenlesbaren Code Compilieren Maschinencode (.o) Linken – – Einbinden von Programm-Bibliotheken und ggf. anderen Objekt-Files Linken Ausführbarer Code (.exe) Ausführen – Programm starten auf dem Computer Ausführen Ausführen der einzelnen Schritte entweder : separat mit unterschiedlichen Werkzeugen/Programmen oder : zusammenhängend in einer integrierten Entwicklungsumgebung (IDE) FH D Fachhochschule Düsseldorf Seite 30 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien Entwicklungsumgebung für Jungvögel © Marco von Kessel - Fotolia.com FH D Fachhochschule Düsseldorf Seite 31 Informatik für Ingenieure WS 2012/13 FB 5 Fachbereich Medien