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