Praktische Informatik 1

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Konzepte objektorientierter Systeme
Einführung in die Programmierung Zusammenfassung
Lösung 7.1 Syntax und Semantik
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Imperative Programmierung -Entwicklungswerkzeuge
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Sprache
Java: Grundlagen der Objektorientierung
Entwicklung der Programmiersprachen
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Sommersemester 2003 Lars Bernard
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
UML Begleitdokumentation des Projekts
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Plattformunabhängige Programmiersprache
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Einführung in die Programmiersprache Java
Dateien Datei = File (engl.) Mögliche Inhalte einer Datei
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Entwicklung der Programmiersprachen
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Historische Entwicklung und ihre Einteilung
2.4 Rekursion Klassifikation und Beispiele
Programmiersprachen Proseminar Grundlagen wissenschaftlichen Arbeitens
Algorithmen und Datenstrukturen Übungsmodul 8
Programmiervorkurs WS 2014/15 Methoden
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Objektorientierte (OO) Programmierung
Java Programme nur ein bisschen objektorientiert.
JAVA - Einführung. © Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt.
Seminar Softwareproduktlinien Domänenspezifische Sprachen Sascha Draffehn von.
© Tenbusch Oberstufenzentrum Informations- und Medizintechnik Objektorientierte Programmierung mit Java.
Praktische Informatik 1
Konstruktoren.
Objektorientierte Programmierung
2.4 Rekursion Klassifikation und Beispiele
Hello World! Javakurs 2013 Arne Kappen
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Einführung in die Programmierung
Java-Kurs - 5. Übung Das Paradigma der Objektorientierung (OO)
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Java-Kurs - 2. Übung primitive Datentypen, Konstanten
Einführung in die Programmierung mit Java
Einführung in die Programmierung
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Einführung in die Programmierung
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Objects first mit BlueJ und Greenfoot
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
Objektorientierte Programmierung
 Präsentation transkript:

Praktische Informatik 1 Prof. Dr. H. Schlingloff 7. 1. 2008

Wiederholung Informatik = Wissenschaft von der automatischen Verarbeitung von Informationen Algorithmus = präzises, schrittweises und endliches Verfahren zur Verarbeitung (Umformung) von Informationen Programm = Repräsentation eines Algorithmus zur Ausführung auf einer Maschine

Wozu höhere Programmiersprachen? v. Neumann: „Rechenzeit zu wertvoll für niedere Aufgaben wie Übersetzung“ heute dagegen: Personalkosten sind Hauptfaktor Fehleranfälligkeit der Codierung in Maschinensprache oder Assembler Problemorientierte statt maschinenorientierte Beschreibungsformen Verständlichkeit wichtiger als Effizienz

Vorteile höherer Programmiersprachen bei der Erstellung von Programmen: schnellere Programmerstellung. sichere Programmierung. bei der Wartung von Programmen: bessere Lesbarkeit. besseres Verständnis der Algorithmen. wenn Programme wiederverwendet werden sollen: Verfügbarkeit auf vielen unterschiedlichen Rechnern; vom Zielrechner unabhängige Entwicklungsrechner.

Klassen höherer Programmiersprachen (1) Für unterschiedliche Zielsetzungen, Problembereiche und Rechnersysteme sowie für unterschiedliche Basis-Software gibt es verschiedene Programmiersprachen. funktionale Sprachen: betrachten ein Programm als mathematische Funktion f, die eine Eingabe I in eine Ausgabe O überführt: O = f(I). Variable sind Platzhalter im Sinne der Mathematik (Parameter). Ausführung = Berechnung des Wertes mittels Termersetzung. Beispiele: Lisp, HOPE, Miranda, SML, Haskell, ... imperative Sprachen: unterstützen das ablauforientierte Programmieren. Werte werden sog. Variablen (= Speicherplätzen) zugewiesen. Diese können ihren Zustand ändern, d.h. im Laufe der Zeit verschiedene Werte annehmen (vgl. von-Neumann-Konzept). Ausführung = Folge von Variablenzuweisungen. Beispiele: Algol, Fortran, Cobol, Pascal, C, ...

Klassen höherer Programmiersprachen (2) objektorientierte Sprachen: sind imperativ, legen aber ein anderes, in Objekten strukturiertes Speichermodell zugrunde. Objekte können eigene lokale Daten und Methoden speichern, voneinander erben und miteinander kommunizieren. Ausführung = Interaktion von Agenten. Beispiele: SmallTalk, Eiffel, C++, Java logikbasierte Sprachen: betrachten ein Programm als (mathematisch-) logischen Term t, dessen Auflösung (im Erfolgsfall) zu gegebenen Eingabewerten I passende Ausgabewerte O liefert: t(I,O)  true. Ausführung = Lösen eines logischen Problems. Beispiel: Prolog

Klassen höherer Programmiersprachen (3) deklarative Sprachen: betrachten ein Programm als eine Menge von Datendefinitionen (Deklarationen) und darauf bezogenen Abfragen. Ausführung = Suche in einem Datenbestand. Beispiel: SQL datenflussorientierte Sprachen: stellen ein Programm dar, indem sie den Fluss der Signale oder Datenströme durch Operatoren (Addierer, Integratoren) beschreiben Ausführung = Transformation von Datenströmen Beispiele: Simulink, VPL

funktionaler Code SML: LISP: fun fak (n) = if n < 1 then 1 else n * fak (n-1) LISP: (defun fak (n) (cond (le n 1) 1 (* n (fak (– n 1)))))

imperative Programme // Fakultätsfunktion in C: #include <stdio.h> int fakultaet(int n) { int i, fak = 1; for ( i=2; i<=n; i++ ) fak *= i; return fak; } int main(void) { int m, n; for ( n=1; n<=17; n++ ) printf("n = %2d n! = %10d\n", n, fakultaet(n));

objektorientiertes Java-Programm class Kreis extends Figur { private double r; public Kreis( double r ) { this.r = r; } public double getFlaeche() {return Math.PI * r * r; } } public static void main( String[] args ) { Rechteck re1 = new Rechteck( 3, 4 ); Figur kr2 = new Kreis( 8 ); … //Java Polymorphie-Beispiel import java.util.Vector; abstract class Figur { abstract double getFlaeche();} class Rechteck extends Figur { private double a, b; public Rechteck ( double a, double b ) { this.a = a; this.b = b; } public double getFlaeche() {return a * b;} }

Prolog-Beispiele fak(0,1). fak(N,X):- N > 0, M is N - 1, fak(M,Y), X is N * Y. mutter (eva, maria). mutter (maria, uta). grossmutter(X,Y) :- mutter(X,Z), mutter(Z,Y). ?- grossmutter (eva, uta) yes. ?- grossmutter (uta, eva) no.

SQL-Beispiel SELECT A_NR, A_PREIS As Netto, 0.16 As MwSt, A_PREIS * 1.16 As Brutto, FROM ARTIKEL WHERE A_PREIS <= 100 ORDER BY A_PREIS DESC

visuelle Programmierung

Simulink-Beispiel

Historische Entwicklung der Programmiersprachen (c) Gumm/Sommer

Klassifikation Programmiersprachen Anwendungsgebiet Verbreitungsgrad Historische Entwicklung Programmiersprachengeneration Programmierparadigma Verfügbare Sprachelementen

Anwendungsgebiete Ingenieurwissenschaften (Fortran) kommerzieller Bereich (Cobol) künstliche Intelligenz (Prolog, Lisp) Systemsoftware (Assembler, C) Steuerungssoftware (C, Ada, Simulink) Robotik (C, NQC, VPL) Internet / Arbeitsplatzsoftware (Java, C++) Datenbanken (SQL) …

Programmiersprachengenerationen 1. Generation: Maschinensprachen 2. Generation: Assemblersprachen (x86-MASM, ASEM-51) 3. Generation: Algorithmische Sprachen (Algol, Delphi, …) 4. Generation: Anwendungsnahe Sprachen (VBA, SQL, …) 5. Generation: Problemorientierte Sprachen, KI-Sprachen (Prolog, Haskell, …)

Elemente von Sprachen Kontrollfluss, Datentypen Rekursion oder Iteration Sequentiell oder parallel Interpretiert oder compiliert Realzeitfähig oder nicht realzeitfähig Typkonzept Textuell oder graphisch

„babylonische Sprachvielfalt“ Kosten: Portabilitätsprobleme, Schulungsmaßnahmen, Programmierfehler Versuche der Vereinheitlichung neuen Ideen in der Forschung führen zu neuen Programmiersprachen auf absehbare Zeit viele verschiedene Sprachen wichtig, die verschiedenen Konzepte zu kennen und sich schnell in neue Sprachen einarbeiten zu können

Java Java wurde seit 1995 bei der Firma Sun Microsystems entwickelt. Sprache zur Implementierung von sicheren, plattform-unabhängigen Anwendungen, die über das Internet verbreitet und bezogen werden können. Ein wichtiges Konzept ist das sog. Applet, eine Mini-Anwendung, die innerhalb einer Web-Seite läuft. Sicherheit durch Sandbox-Prinzip Künftige Anwendungen von Java liegen im Bereich der kommunizierenden Geräte („Internet der Dinge“)

Eigenschaften von Java Java ist eine mächtige Programmiersprache, die die Sprach-konzepte herkömmlicher Programmiersprachen wie C oder Delphi mit OO-Konzepten und Konzepten zur Parallelverarbeitung und Netz-Verteilung verbindet. Java wurde auf der Basis bekannter Sprachen zur System-, zur modularen und OO-Programmierung entwickelt (C, C++, Modula, Smalltalk) Die Struktur der Sprache ist einfach, aber weniger systematisch als die von Pascal, Modula oder Oberon. Java hat eine umfangreiche Klassenbibliothek. Java gilt als robuste Sprache, die viele Fehler vermeiden hilft, z.B. aufgrund ihres Typkonzepts und der automatischen Speicher-bereinigung. Java-Compiler sind schnell und produzieren effizienten Code

Bemerkungen zu Java Im Kern ist Java eine Programmiersprache mit imperativen und rekursiven Konzepten ähnlich wie Pascal oder C. So weist Java die meisten aus diesen Sprachen bekannten Konzepte wie Variablen, Zuweisungen, Datentypen, Ausdrücke, Anweisungen etc. auf - mit einer keineswegs verbesserten Syntax Viele syntaktische und strukturelle Mängel und Ungereimtheiten sind nur mit der C / C++ Historie zu erklären Verdienste von Java liegen in der Zielsetzung, eine möglichst schlanke Sprache zu schaffen, in dem Ansatz, das Klassenkonzept ins Zentrum der Sprache zu stellen (Java ist eine wirklich “objektorientierte” Sprache) in der Offenheit und uneingeschränkten Portabilität, die Java z. Zt. zum bestgeeigneten Werkzeug für das Programmieren von Netz-Anwendungen macht

Java-Historie ab 1991 Bei der Firma Sun wird von J. Gosling und Kollegen auf der Basis von C++ eine Sprache namens Oak (Object Application Kernel) für den Einsatz im Bereich der Haushalts- und Konsumelektronik entwickelt. Ziele: Plattform-Unabhängigkeit, Erweiterbarkeit der Systeme und Austauschbarkeit von Komponenten. 1993 Oak wird im Green-Projekt zum Experimentieren mit graphischen Benutzer-Schnittstellen eingesetzt und später (wegen rechtlicher Probleme) in Java umbenannt. Zu diesem Namen wurden die Entwickler beim Kaffeetrinken inspiriert. 1994 Das WWW beginnt sich durchzusetzen. Java wird wegen der Applet-Technologie „die Sprache des Internets“ seit 1995 Sun bietet sein Java-Programmiersystem JDK (Java Development Kit) mit einem Java-Compiler und Interpreter kostenlos an. ab 1996 Unter dem Namen JavaBeans wird eine Komponenten-Architektur für Java-Programme entwickelt und vertrieben. ab 2001 Eclipse-Projekt: integrierte Entwicklungsumgebung