VL 02 - InfIng

Werbung
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
Herunterladen