Einführung in die Programmiertechnik



Ähnliche Dokumente
2 Grundlagen der Programmierung

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Vorkurs Informatik WiSe 15/16

2 Grundlagen der Programmierung

Modellierung und Programmierung 1

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

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

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Programmiersprachen und Programmierkonzepte

Java Einführung Programmcode

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

JAVA als erste Programmiersprache Semesterkurs

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

Funktionale Programmierung (in Clojure)

III.1 Prinzipien der funktionalen Programmierung - 1 -

Kapitel 1: Einführung

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

0. Einführung. C und C++ (CPP)

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

Algorithmen und Programmieren II Einführung in Python

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

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

Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach

1. Java Grundbegriffe

Grundlagen der Programmierung UE

VBA-Programmierung: Zusammenfassung

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Grundlagen der Programmierung UE

Erster Bug: eine Motte

Prof. Dr.-Ing. Dietrich Schröder GIS und Programmiersprachen: Wohin geht die Reise?

Programmieren in Haskell Einführung

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

Programmierkurs Python I

2. JAVA-Programmierung. Informatik II für Verkehrsingenieure

Grundlagen von Python

Programmierung. Programme, Compiler, virtuelle Maschinen, Java

Im Original veränderbare Word-Dateien

Kapitel 3. Mein erstes C-Programm

Einführung in Eclipse und Java

Einführung zu den Übungen aus Softwareentwicklung 1

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

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

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Seite Seite 2

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

Grundbegriffe der Informatik

Installation einer C++ Entwicklungsumgebung unter Windows --- TDM-GCC und Eclipse installieren

1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Einführung in PROLOG. Christian Stocker

Was ist ein Compiler?

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

JetSym. Programmierung in Hochsprache ST nach IEC We automate your success.

Coma I. Einleitung. Computer und Algorithmen. Programmiersprachen. Algorithmen versus Programmiersprachen. Literaturhinweise

Grundlagen der Informatik

I.1 Die Parrot Assemblersprache

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Robot Karol für Delphi

Workshop: Eigenes Image ohne VMware-Programme erstellen

Programmierkurs Java

FHZ. K01 Geschichte des Computers. Lernziele. Hochschule Technik+Architektur Luzern. Inhalt

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Installation und Inbetriebnahme von Microsoft Visual C Express

Programmierkurs für Chemiker in Fortran Sommersemester 2013

Curriculum des Wahlfaches Informatik für das Gymnasium Dialog

Programmieren I. Administratives / Java Installation. Thomas Vetter, Brian Amberg, Andreas Forster. 21. September 2010 UNIVERSITÄT BASEL

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) stoyan@informatik.uni-erlangen.

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

fungen Debugging Boris Tripolskij

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Visual Basic Express Kompilieren mit Skripten

Visual Basic Express Debugging

1.3 Geschichte der Programmiersprachen

Informatik I Tutorial

C ++ in der Computerlinguistik

Einführung in die Programmiersprache Python

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

In den weiterführenden Vorlesungen

Schulcurriculum Informationstechnische Grundkenntnisse und Informatik Stand:

Applications Applets (eingeschränkte Rechte)

Einführung in die Informatik I

LEHRSTUHL FÜR DATENBANKEN

Programmieren Lernen mit BYOB. Gerald Futschek 5. November 2012

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

Pragmatik von Programmiersprachen

Modulhandbuch für das BA Kombinationsfach Angewandte Informatik Multimedia

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Definitionen/Vorarbeit zum Thema Java

Transkript:

Einführung in die Programmiertechnik Programmiersprachen

Algorithmen und Programme Computer führt Berechnungen auf deterministische Weise aus bei gleicher Eingabe und gleichem inneren Zustand erzeugt er gleiche Ausgabe Art und Weise der Berechnung wird durch ein Programm festgelegt formale Sprachen: Notation des Programms folgt festen Regeln, jedes Programm hat mathematisch klare Bedeutung historisch: Formulierung mit Hilfe von Operationen der Hardware Maschinensprache, Assembler heute: Abstraktion mithilfe höherer Programmiersprachen Algorithmus: genau definierte Handlungsvorschrift zur Lösung eines Problems imperative Programme: Anweisungen an den Computer funktionale Programme: Ziel der Berechnung wird durch mathematische Funktion beschrieben Definition der Funktion mithilfe vorhandener Funktionen deklarative Programme: Eigenschaften der gesuchten Lösung werden definiert konkreter Algorithmus zur Lösung wird nicht vorgegeben 2

Imperative Sprachen BASIC Pascal C C++ Java Python... Imperative Sprachen beinhalten oft funktionale oder deklarative Elemente z.b. Funktionen höherer Ordnung 3

Funktionale Sprachen LISP Scheme ML (Meta Language) Miranda Haskell OPAL FORTRAN... Funktionale Sprachen beinhalten oft imperative Elemente z.b. Ein/Ausgabe 4

5 Deklarative Sprachen Prolog SQL WSDL nicht alle deklarativen Sprachen sind Programmiersprachen deklarativer Teil oft eingebettet in Gesamtprogramm (SQL, WSDL) deklarative Programmiersprachen enthalten oft imperative Teile z.b. Ein/Ausgabe

6 Vom Programm zur Maschine Programme sind initial in Textdateien gespeichert Quelltext Ausführung des Programms auf der Maschine muss Elementaroperationen verwenden Daten aus dem Speicher lesen/in den Speicher schreiben elementare arithmetische Operationen ausführen Ausführung an anderer Stelle fortsetzen (Sprünge) Quelltext muss in Maschinencode übertragen werden

Compiler hier: Beschränkung auf imperative Sprachen einzelne Anweisungen aus dem Quelltext werden in Folgen von Maschinenanweisungen übersetzt Zur Ausführung des Programms werden direkt die Maschinenanweisungen abgearbeitet Pascal Sun SPARC C/C++ Intel x86 FORTRAN Intel Itanium Java Motorola/IBM PowerPC 7

Interpreter Interpreter führt Anweisungen des Programms direkt aus (ohne Übersetzung des Programms in Maschinensprache) virtuelle Maschine (VM): Elementaranweisungen werden unabhängig von konkreter Hardware definiert; Interpreter setzt VM- Anweisungen in Maschinenanweisungen um VM-Anweisungen werden oft Byte-Code genannt Sun SPARC Intel x86 Python Python- Interpreter Intel Itanium Motorola/IBM PowerPC 8

Ideale Virtuelle Maschine Virtuelle Maschine könnte unabhängig von Programmiersprache sein Teilweise erreicht in Microsoft.NET Implementierung durch Interpreter oder Compiler just-in-time compiler : VM-Anweisungen werden im Moment der Ausführung in Maschinencode übertragen Pascal Sun SPARC C/C++ FORTRAN Java Virtuelle Maschine Intel x86 Intel Itanium Motorola/IBM PowerPC 9

10 Interpreter vs. interpretierte Sprachen Für jede Sprache ist jede Umsetzungsstrategie denkbar für viele Sprachen ist aber praktisch festgelegt, ob sie interpretiert oder kompiliert werden Pascal, Modula, COBOL, Fortran, C, C++, Ada: Compiler Smalltalk, Python: Interpreter Java, C#: Interpreter oder Just-in-time-Compiler, mit separatem Bytecodecompiler

Portabilität von Programmen Ziel: Das gleiche Programm soll auf verschiedener Hardware, verschiedenen Betriebssystemen gleichartig funktionieren Compiler-Lösung: Compiler für wohldefinierte (normierte) Sprachen Zur Portierung auf ein neues System muss der Quelltext verfügbar sein VM-Lösung: Interpreter/Just-In-Time-Compiler für Zielplattform Zur Portierung genügt u.u. der Bytecode Java: write once, run anywhere 11

Programmierfehler Eingabe des Programms in Texteditor Übergabe des Programms an Compiler/Interpreter Analyse durch Compiler zeigt Verletzung der Sprachsyntax an Syntaxfehler z.b. Schreibfehler in Schlüsselwörtern Analyse zeigt u.u. auch Verletzung von Benutzungsregeln an Semantikfehler Beispiel: Verletzung des Typsystems (Typfehler) z.b. Verknüpfung von Strings und Zahlen in einer Additionsoperation Bei Ausführung wird das Programm u.u. aufgrund von Fehlern abgebrochen Laufzeitfehler Selbst bei Beendigung ohne Fehler ist u.u. das Ergebnis nicht das erwartete Denkfehler 12

13 Programmierfehler (2) Fehler im Programm heißen auf Englisch bugs Entfernen von Fehlern: Debugging Entwicklungszyklus: Editieren, Kompilieren, Testen E. Dijkstra (1970): Program testing can be used to show the presence of bugs, but never to show their absence!

Programmierumgebungen Ziel: Verkürzung des Entwicklungszyklus Strategien: Interpreter: interaktiver Modus (z.b. Python) Compiler: Integration von Quelltexteditor, Compiler (build process), Debugger, evtl. Quelltextverwaltungssystem,... engl. IDE (Integrated Development Environment) Editor: Vereinfachung der Eingabe von Programmen automatische Vervollständigung Syntax-Hervorhebung (highlighting) Generierung von Codeblöcken (wizards) Beispiele: Java: Eclipse, netbeans, JBuilder, BlueJ C, C++: Visual Studio, C++Builder Python: IDLE, PythonWin 14

Fortran (auch: FORTRAN) Formula Translator in den 1950ern entwickelt, unter Leitung von John W. Backus für IBM 704 (36-bit-Worte, erster Rechner mit Gleitkommahardware) erste Hochsprache (neben LISP) ursprünglich: Orientierung auf Lochkartenprogrammierung Jede Lochkarte enthält eine Zeile Spalten 1..5 enthalten die Zeilennummer, Spalten 7..72 Programmtext Kontrollflußanweisung: GOTO neuere Versionen bereinigen und vereinfachen die Syntax GOD is REAL (unless declared INTEGER) Sprachversionen: FORTRAN II (1958), FORTRAN IV (1961), FORTRAN 66, FORTRAN 77, Fortran 90, Fortran 95, Fortran 2003 15

16 Pascal zwischen 1968 und 1974 von N. Wirth entwickelt für Unterrichtszwecke strukturierte Programmierung, Rekursionen, Unterprogramme später um weitere Konzepte erweitert Turbo-Pascal: Modularisierung (units) Object-Pascal, Delphi: Objekt-Orientierung ISO/IEC 7185:1983, ISO/IEC 10206:1990 (Extended Pascal)

C ursprünglich zwischen 1969 und 1973 an den Bell Labs entwickelt Nachfolger von B erstes Ziel: Entwicklung von Software für PDP-7 erstes Standardwerk: The C Programming Language Brian Kernighan, Dennis Ritchie (K&R) Standardisierung begann 1983; erster Standard 1989 (ANSI) 1990 von ISO übernommen: ISO/IEC 9899:1990 Überarbeitung des Standards: ISO/IEC 9899:1999 Sprachversionen werden C89 und C99 genannt 17

18 C++ Entwickelt in den 1980ern von Bjarne Stroustrup ursprünglich C with Classes Ziel: Objektorientierte Programmierung in C Klassen, Methoden, Mehrfachvererbung später auch Templates, Ausnahmebehandlung, Namespaces Standardisierung: ISO/IEC 14882:1998

19 Java 1991 entwickelt von James Gosling ursprünglich oak genannt Weiterentwicklung von C++ entwickelt als reine objekt-orientierte Sprache Klassen sind das Hauptstrukturierungskonzept Sprachversionen werden von Sun definiert aktuelle Version: Java 6

LISP List Processing Language entwickelt 1958 von John McCarthy erstmalig implementiert von Steve Russel für IBM 704 erster LISP-Compiler 1962 (gemischter Interpreter/Compiler- Betrieb) funktionale Sprache: Ziel der Berechnung wird als Funktionsausdruck formuliert primäre Datentypen: Listen, Zahlen, Atome von Anfang an für KI (Künstliche Intelligenz) verwendet ursprünglich viele Sprachversionen (InterLisp, Franz Lisp,...) ANSI-Standard 1994: Common Lisp 20

21 Prolog um 1972 von Alain Colmerauer und Robert Kowalski entwickelt programming in logic logische Programmiersprache basierend auf dem Prädikatenkalkül (PK1) verwendet für KI und Computerlinguistik ISO/IEC 13211:1995