1 EINFÜHRUNG PROGRAMMIERSPRACHEN

Ähnliche Dokumente
Problemorientierte Programmiersprachen Nachteile von Programmen in Maschinensprache sehr aufwendig bei komplexeren Aufgabenstellungen fehleranfällig

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Informatik 12 Kapitel 3 - Funktionsweise eines Rechners

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Der von Neumann Computer

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Programmierkurs II. C und Assembler

Prinzipieller Aufbau und Funktionsweise eines Prozessors

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Formale Sprachen. Inhalte. Lehrplan. Hinweis

Syntax von Programmiersprachen

Sprachen sind durch folgenden Aufbau gekennzeichnet:

Einführung in die Programmierung für NF. Übung

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko

Definitionen/Vorarbeit zum Thema Java

Die Programmiersprache C

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

3. Datentypen, Ausdrücke und Operatoren

Aufbau und Funktionsweise eines Computers

Einführung in die Informatik I (autip)

N Bit Binärzahlen. Stelle: Binär-Digit:

Klausur: Informatik, am 11. Juli 2013 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Institut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme

3. Methodik der Programmerstellung

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

Programmiersprachen und Übersetzer

7. Syntax: Grammatiken, EBNF

Fachbereich Medienproduktion

Grundlagen der Rechnerarchitektur. Einführung

Projekt 3 Variablen und Operatoren

Grundlagen der Rechnerarchitektur. MIPS Assembler

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Von-Neumann-Architektur

Einführung in die Programmierung 1

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Ganze Zahlen, Ausdrücke Variablen/Konstanten

PIC16 Programmierung in HITECH-C

Abschnitt 2: Daten und Algorithmen

Philipp Grasl PROZESSOREN

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

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Zwischenklausur Informatik, WS 2016/17. Lösungen zu den Aufgaben

Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

Einführung in Java. Ausgewählte Quellen zu Java

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Vorlesung Rechnerarchitektur. Einführung

Welche Informatik-Kenntnisse bringen Sie mit?

Das erste C++ Programm

Übung 1 - Betriebssysteme I

Kontrollpfad der hypothetischen CPU

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9

01 Einführung in PHP. Einführung in PHP 1/13 PHP in Aktion

Kapitel 5: Syntaxdiagramme und Grammatikregeln

Mikrocomputertechnik

Kontrollpfad der hypothetischen CPU

Im Original veränderbare Word-Dateien

Informatik I - Einstiegskurs

RO-Tutorien 15 und 16

Sprachen und Automaten. Tino Hempel

Grundlagen der Informatik

Einführung in die Programmierung Wintersemester 2008/09

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Anregungen zu Übung 2

Arten von formalen Sprachen

Kap 1. Programmentwicklung

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Programme erstellen in Java

Schleifenanweisungen

Transkript:

1 EINFÜHRUNG PROGRAMMIERSPRACHEN Leitidee: Von der Maschinensprache zur höheren Programmiersprache und zurück Von-Neumann-Maschine als abstraktes Computermodell Maschinensprache des hypothetischen Rechners M Höhere Programmiersprachen Konzept Praktisches Vorgehen: Editieren, Übersetzen, Starten Begriffe: Variable, Funktion, Datentyp Syntax und Semantik (Vergleich mit Schriftsprache) Syntaxdiagramme zur Beschreibung der Syntax

Rechnermodell nach J. von Neumann Befehlsregister Befehls- Zählerregister Steuereinheit Eingabeeinheit Speicher Ausgabeeinheit Zentralregister Recheneinheit Steuersignale Daten und Befehle

Rechnermodell nach J. von Neumann - Fortsetzung Komponenten Rechnerkern (CPU) bestehend aus Recheneinheit (ALU, arithmetic logical unit) führt Arithmetik- und Logikbefehle aus Steuereinheit (control unit) dekodiert Programmbefehle steuert Programmausführung Speicher enthält die Daten (binär kodiert) in Speicherzellen, die jeweils nummeriert (addressierbar) sind NEU: Programm befindet sich im Speicher (Unterschied zur Zuse-Maschine!) Ein- und Ausgabeeinheit (Peripherie) z.b. Tastatur, Bildschirm, Drucker u.ä.

Programmausführung Befehlszählerregister der Steuereinheit enthält die Adresse des Speicherplatzes mit dem nächsten Befehl in binär codierter Form. Steuereinheit lädt Befehl in das Befehlsregister, entschlüsselt ihn und führt ihn aus. Befehlszählerregister wird um 1 erhöht oder bei Sprungbefehlen auf die gewünschte Adresse gesetzt. Usw. Fetch-Decode-Execute Cycle

Hypothetische Maschine, Maschinensprache Hypothetische Maschine M und ihre Maschinensprache als stark idealisiertes Modell eines Prozessors und seines Befehlssatzes Prinzip wichtig für das Verständnis von Progr.sprachen (Programme in höheren Programmiersprachen werden in mehreren Schritten in Maschinenprogramme übersetzt.) [ ] Realistischere Modelle: CPUsim, SPIM [MIPS-Emulator] [ ] Weiterführende Literatur: Tanenbaum, Goodman: Computerarchitektur Patterson, Hennesy: Computer Organisation & Design

Höhere Programmiersprachen Nachteile von Programmen in Maschinensprache sehr aufwendig bei komplexeren Aufgabenstellungen fehleranfällig schwer verständlich nicht portabel, d.h. nicht auf Rechner anderer Bauart übertragbar, insbesondere prozessorabhängig Abhilfe durch höhere Programmiersprachen Konzept: Quellprogramm Übersetzer = Maschinenprogramm Quellprogramm: geschrieben in höherer Prog.sprache Übersetzer (Compiler): Maschinenprogramm, das das Quellprogramm einliest und daraus ein Maschinenprogramm erzeugt Von Neumannsche Rechnerarchitektur hier vorteilhaft!

Höhere Programmiersprachen II Typische Arbeitsschritte (am Beispiel Linux) 1. Erstellen des Quellprogramms mit einem Editor in einer Datei (mit fester Endung), z.b. kwrite datei.cpp 2. Übersetzen (Compilieren), z.b. c++ datei.cpp 3. Ausführen des Maschinenprogramms (in der Regel durch Namensaufruf), z.b../a.out Variablenbegriff und Ausdrucksanw. in C++ (vorläufig) Eine Variable ist ein Name für einen Speicherplatz. Compiler legt konkrete Speicherplätze für Variablen fest. Variablen müssen vor Verwendung vereinbart werden. Syntax von Programmiersprachen ist angelehnt an math. Notation, jedoch gibt es Bedeutungsunterschiede: s = (a+b+c)/2; Speichere auf s den Wert von a+b+c 2 i = i+1; Erhöhe den Wert von i um 1

Höhere Programmiersprachen III Funktionen in C++ Eine Reihe vordefinierter Funktionen ist vorhanden, etwa mathematische Funktionen, z.b. sqrt, abs Funktionsbegriff allgemeiner als in der Mathematik: Funktionen sind abgegrenzte Codebereiche, in die beim Funktionsaufruf gesprungen wird. Bei Beendigung der Funktion Rücksprung hinter die aufrufende Stelle. Kommunikation mit der Funktion (u.a.) durch Argumentübergabe und Rückgabe des Funktionswerts. C++-Funktionen ohne Funktionswert zulässig. Funktionen mit leerer Argumentliste möglich. Funktion main in C++-Programm erforderlich, automatischer Aufruf beim Programmstart, Rückgabewert von main geht an Kommandointerpreter (nicht an das Programm!) Verwendung vordefinierter Funktionen muss angegeben werden, in der Regel mit include-anweisungen, z.b. #include <cmath>

Höhere Programmiersprachen IV Datentypen in C++ Datentypen geben an, wie z.b. in Variablen gespeicherte Bitmuster zu interpetieren sind und welche Operationen zulässig sind Große Anzahl unterschiedlicher Datentypen, z.b für Zahlen, Zeichen, Zeichenketten, Adressen, Vektoren usw.: string Zeichenkettentyp von C++ Unterschiedliche Datentypen und arithmetische Operatoren für Zahlen: int Ganze Zahlen (exakte Arithmetik) double Gleitkommazahlen (ggf. Rundung) Zahlbereiche immer beschränkt, Größenbereich und interne Darstellung sehr unterschiedlich (später!)

Höhere Programmiersprachen V Syntax und Semantik Syntax beschreibt, aus welchen Zeichenketten ein strukturell korrektes Programm aufgebaut ist. Syntax von Programmiersprachen Grammatik und Orthographie geschriebener Sprachen Compiler meldet Syntaxfehler! Semantik gibt die inhaltliche Bedeutung eines Programms an. Zweistufige Beschreibung der Syntax von C++ : 1. Bildung von Eingabesymbolen aus Zeichen Bildung von Worten und Satzzeichen aus Schriftzeichen in natürlichen Sprachen (lexikalische Struktur) 2. Bildung strukturell zulässiger Programme aus Eingabesymbolen Bildung grammatikalisch und orthographisch korrekter Texte in natürlichen Sprachen

Höhere Programmiersprachen VI Syntaxdiagramme Syntaxdiagramme visualisieren die Bildung strukturell zulässiger Programme aus Eingabesymbolen Durchlauf der Syntaxdiagramme in Pfeilrichtung, jeder zulässige Pfad erzeugt eine syntaktisch korrekte Aufeinanderfolge von Eingabesymbolen Kennzeichnung von Eingabesymbolen mit abgerundeten Blöcken Eckige Blöcke stehen für syntaktische Einheiten aus einer oder mehreren Eingabesymbolen Syntaxdiagramme sind eine graphische Darstellung der Extended Backus Naur Form (EBNF) Syntaxdiagramme in C++ beziehen sich auf die Situation nach Ausführung der Präprozessoranweisungen