Algorithmus und Programm: Vom Algorithmus zum Programm

Größe: px
Ab Seite anzeigen:

Download "Algorithmus und Programm: Vom Algorithmus zum Programm"

Transkript

1 Algorithmus und Programm: Vom Algorithmus zum Programm 1.1 Vom Algorithmus zum Programm 1.2 Programmiersprachen 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1.4 Software-Grundlagen 1.1 Vom Algorithmus zum Programm 1-1

2 Algorithmusbegriff Ein Algorithmus ist eine Berechnungsvorschrift. Die Aufgabe, die der Algorithmus lösen soll, wird durch eine Spezifikation festgelegt. Die Berechnungsvorschrift wird durch einen endlichen Text kodiert. Sie beschreibt die auszuführenden Berechnungen hinreichend präzise. Die Berechnungen sind aus elementaren Operationen aufgebaut und besitzen Aus- und evtl. Eingabewerte. Hierbei handelt es ich um eine sog. intuitive Definition. In der Informatik wird auch eine formale Definition benötigt, zum Beispiel zum Nachweis, dass für ein bestimmtes Problem kein Algorithmus existiert.»intuitiv heißt nicht erlernt.«(bruce M. Hood) 1.1 Vom Algorithmus zum Programm 1-2

3 Eigenschaften von Algorithmen Algorithmen sollen in der Regel terminieren, d. h. bei jeder Eingabe irgendwann zu einem Ende führen. Es gibt Ausnahmen: z. B. Betriebssysteme oder sogenannte reaktive Systeme. Die Terminierung wird in der Definition des Algorithmusbegriffs nicht verwendet. Ein Grund hierfür ist zum Beispiel das Halteproblem (s. unten): Definitionen müssen überprüfbar sein. Einen Algorithmus nennt man deterministisch, wenn er bei gleichen Eingabedaten stets die gleiche Berechnung ausführt. Ein Algorithmus heißt determiniert, wenn er bei gleichen Eingabedaten stets die gleichen Ausgabedaten liefert. 1.1 Vom Algorithmus zum Programm 1-3

4 Programm und Programmiersprache Ein Programm ist die Formulierung eines Algorithmus mit seiner Datenbereiche in einer Programmiersprache. Eine Programmiersprache erlaubt es, Algorithmen präzise zu beschreiben. Insbesondere legt eine Programmiersprache die elementaren Operationen, die Möglichkeiten zu ihrer Kombination und die zulässigen Datenbereiche eindeutig fest. Unter programmieren versteht man den Vorgang des Erstellens eines Programms. 1.1 Vom Algorithmus zum Programm 1-4

5 Grundlegende Aspekte der Algorithmenentwicklung Wie wird ein Algorithmus formuliert? Paradigma. Beispiele für Paradigmen: imperativ, objektorientiert, funktional, logisch. Es gibt weitere Paradigmen, diese vier sind aber die am häufigsten erwähnten. Weitere Bezeichnungen für Paradigmen: hybrid, prozedural, deklarativ. Mit welchem Aufwand löst der Algorithmus das Problem? Komplexität. Beispiele zur Komplexität: benötigte Rechenzeit oder verwendeter Speicherplatz. Erfüllt mein Algorithmus seine Spezifikation? Korrektheit. Der Nachweis der Korrektheit wird Verifikation genannt. Wie werden Datentypen definiert? Abstrakte Datentypen. ADT/Abstrakte Datentypen werden durch algebraische Methoden definiert. 1.1 Vom Algorithmus zum Programm 1-5

6 Grundlegende Aspekte der Algorithmenentwicklung Gibt es für das Problem einen Algorithmus? Berechenbarkeit/Entscheidbarkeit. Zur Beantwortung dieser Frage wird eine formale Definition des Algorithmenbegriffs benötigt. Beispiel: Turing-Maschine. Alonzo Church stellte 1936 die folgende These auf, die bisher nicht widerlegt wurde. Church sche These: Der intuitive Algorithmenbegriff wird durch das Modell der Turing-Maschine adäquat definiert. Die Church sche These kann natürlich nicht bewiesen werden, da sie den intuitiven Algorithmenbegriff verwendet. Über intuitive Dinge können keine formalen Beweise geführt werden. Es wurde gezeigt, dass viele formale Algorithmusdefinitionen äquivalent sind. Daher könnte in der Church schen These die Turing-Maschine durch etliche andere formale Definitionen des Algorithmus ersetzt werden. 1.1 Vom Algorithmus zum Programm 1-6

7 Grundlegende Aspekte der Algorithmenentwicklung Gibt es Vorgehensweisen für die Erstellung von Algorithmen? Entwurf von Algorithmen. Beispiele: Rekursion, Backtracking, Divide-and-Conquer, Greedy-Algorithmus,... Gibt es Algorithmen, die man häufig verwenden kann? Standardalgorithmen. Beispiele: Algorithmen zum Suchen und Sortieren, Algorithmen für konkrete Datentypen (zum Beispiel: Graphen, Listen, Keller, Schlangen,... ) Gibt es andere Definitionen des Algorithmenbegriffs? Varianten des Algorithmenbegriffs. Beispiele: nichtdeterministische, parallele, randomisierte Algorithmen. 1.1 Vom Algorithmus zum Programm 1-7

8 Paradigmen zur Formulierung von Algorithmen In einem imperativen Algorithmus gibt es Variable, die verschiedene Werte annehmen können. Die Menge aller Variablen und ihrer Werte sowie der Programmzähler beschreiben den Zustand zu einem bestimmten Zeitpunkt. Ein Algorithmus bewirkt eine Zustandstransformation. Ein funktionaler Algorithmus formuliert die Berechnung durch Funktionen. Die Funktionen können rekursiv sein; auch gibt es Funktionen höherer Ordnung. In einem objektorientierten Algorithmus werden Datenstrukturen und Methoden/Funktionen zu einer Klasse zusammengefasst. Von jeder Klasse können Objekte gemäß der Datenstruktur erstellt und über die Methoden manipuliert werden. Ein logischer (deduktiver) Algorithmus führt Berechnungen durch, indem er aus Fakten und Regeln durch Ableitungen in einem logischem Kalkül Ziele beweist. Unter einem hybriden Paradigma versteht man die Mischung von Paradigmen. 1.1 Vom Algorithmus zum Programm 1-8

9 Paradigmen zur Formulierung von Algorithmen Aus einer übergeordneten Sichtweise werden die folgenden Kategorien unterschieden: Prozedurale Programmiersprachen: Es wird exakt angegeben, wie die Lösung eines Problems ermittelt werden kann. Imperative Programmiersprachen fallen in diese Kategorie. Deklarative Programmiersprachen: Im Gegensatz zum prozeduralen Paradigma fragt man in der deklarativen Programmierung danach, was berechnet werden soll. Es wird also nicht der Lösungsweg programmiert, sondern angegeben, welches Ergebnis gewünscht ist. Deklarative Paradigmen beruhen auf mathematischen, rechnerunabhängigen Theorien. Beispiele hierfür sind prädikative und bis zu einem gewissen Grade auch funktionale Programmiersprachen. 1.1 Vom Algorithmus zum Programm 1-9

10 Beispiel: Algorithmus von Euklid Der folgende, in einer imperativen Programmiersprache formulierte, Algorithmus von Euklid (ca. 300 v. Chr.) berechnet den größten gemeinsamen Teiler der Zahlen x, y N mit x > 0 und y 0: a := x; b := y; while b # 0 do r := a mod b; a := b; b := r od Anschließend gilt a = ggt(x, y). 1.1 Vom Algorithmus zum Programm 1-10

11 Beispiel: Algorithmus von Euklid Variable z 0 z 1 z 2 z 5 z 8 z 11 z 14 r a b ggt(36, 52) = 4 Durchlaufene Zustände: z 0, z 1, z 2,..., z 14 Zustandstransformation: z 0 z Vom Algorithmus zum Programm 1-11

12 Datenstrukturen und Typsysteme Programmiersprachen bieten die Möglichkeit, aus elementaren Datenbereichen mithilfe von Konstruktoren komplexe Datenbereiche aufzubauen. Datenbereiche werden häufig Datenstrukturen genannt. Die Aspekte, die die Datenbereiche betreffen, werden als Typsystem bezeichnet. Nicht alle Programmiersprachen bieten alles hiervon an. Elementare Datenstrukturen: Wertebereiche, Operationen boolean, char, cardinal, integer, real, enumeration Konstruktoren: array (Feld), record (Satz), set (Menge), pointer (Zeiger) Zeiger ermöglichen rekursive Datenstrukturen wie Listen, Bäume und Graphen. Typäquivalenz, Typanpassung, Typkompabilität, Vom Algorithmus zum Programm 1-12

13 Natürliche und künstliche Sprachen Sprache ist ein sich stets weiterentwickelndes, komplexes System von Lauten und Zeichen zum Zwecke der Kommunikation. Es werden natürliche und künstliche Sprachen unterschieden. Natürliche Sprachen sind historisch gewachsen. Hierzu zählen z. B. Deutsch, Englisch und Französisch. Sie sind Ausdruck menschlichen Denkens, Fühlens und Wollens und weisen im Unterschied zu künstlichen Sprachen Mehrdeutigkeiten auf. Künstliche Sprachen sind Zeichensysteme, die der Verständigung in einem eng begrenzten Fachgebiets dienen, zum Beispiel Programmiersprachen. Sprachen wie Esperanto sind ebenfalls künstliche Sprachen, die sich durch leichtere Schreibung und Grammatik gegenüber natürlichen Sprachen auszeichnen. aus Basiswissen Deutsch, Dudenverlag 1.1 Vom Algorithmus zum Programm 1-13

14 Sprachklassen der Informatik Die Sprachen der Informatik werden typischerweise in zwei Klassen aufgeteilt: General Purpose Language (GPL) Domain Specific Language (DSL) Meistens zählt man die Programmiersprachen zu den GPLs und Sprachen für spezielle Anwendungen zu den DSLs. Die Klasseneinteilung ist nicht in allen Quellen genau identisch. Eine mögliche Beispiel-Einteilung finden Sie in einem Material der Veranstaltung. 1.1 Vom Algorithmus zum Programm 1-14

15 Sprachen der Informatik Um Objekte mit Rechensystemen zu behandeln, müssen sie in eindeutigen also künstlichen Sprachen beschrieben werden. Einige Beispiele sollen dies verdeutlichen: Algorithmen: Programmiersprachen (Java) Dokumente: Markup-Sprachen (Html, XML), Seitenbeschreibungssprachen (Postscript, PDF) Modelle, Systeme: Modellierungssprachen (UML) Spezifikationen: Spezifikationssprachen (Z, VDM-SL) Datenbanken: Anfragesprachen (SQL) 1.1 Vom Algorithmus zum Programm 1-15

16 Folgerung In der Informatik hat man es mit einer Vielzahl von künstlichen Sprachen zu tun. Sie alle beschreiben Sachverhalte in einem relativ kleinen Kontext, dafür aber (hoffentlich) präzise, widerspruchsfrei und vollständig. In dieser Vorlesung betrachten wir die Programmiersprache Java. In anderen Veranstaltungen (z. B. Programmieren für Fortgeschrittene, Logik in der Informatik ) lernen Sie weitere Sprach(klass)en kennen. Die theoretische Grundlagen der Programmiersprachen lernen Sie in der Veranstaltung Semantik von Programmiersprachen kennen. 1.1 Vom Algorithmus zum Programm 1-16

17 Algorithmus und Programm: Programmiersprachen 1.1 Vom Algorithmus zum Programm 1.2 Programmiersprachen 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1.4 Software-Grundlagen 1.2 Programmiersprachen 1-17

18 Entwicklung der Programmiersprachen Edsger W. Dijkstra (niederländischer Informatiker, ): Jeder Programmierer weiß, dass es nur eine einzig wahre Programmiersprache gibt. Jede Woche eine neue. A. Weinert: Java für Ingenieure, 2001, Seite 7: Die Zahl der Programmiersprachen, die die Informatik in den letzten fünfzig Jahren hervorgebracht hat, ist Legion. Ernst zu nehmende Schätzungen sprechen von mehr als Wenn Weinerts Schätzung zutrifft, sind es 7,7 Programmiersprachen pro Woche! Zitat: Lisp ist nach Fortran die zweitälteste Sprache, die noch verbreitet ist. 1.2 Programmiersprachen 1-18

19 .. Entwicklung der Programmiersprachen 2000 C#. Programmiersprachen in der Informatikausbildung 1995 JAVA 1990 SCHEME (standard) Algol C++ OCCAM CSP ADA SMALLTALK80 MODULA 2 SCHEME C PROLOG PASCAL LOGO ALGOL68 SIMULA PL/I BASIC COBOL ALGOL LISP FORTRAN Algol68 Modula-2 Modula-2/Scheme Java/Scheme Java 1.2 Programmiersprachen 1-19

20 Definition von Programmiersprachen Die Lexik einer Programmiersprache bestimmt die textuellen Grundbausteine der Programme. Solche Bausteine sind z. B. Schlüsselwörter, Zeichen und Bezeichner. Sie werden beispielsweise durch Aufzählung oder reguläre Ausdrücke angegeben. Die Syntax einer Programmiersprache beschreibt, wie aus den Grundbausteinen vollständige Programme gebildet werden können. In den meisten Fällen wird die Syntax einer Programmiersprache durch eine kontextfreie Grammatik festgelegt. Die Bedeutung der syntaktisch korrekten Programme ist durch die Semantik der Sprache gegeben. Sie kann beispielsweise mithilfe von Zustandsfolgen (operationelle Semantik) oder durch Funktionen, die den syntaktischen Einheiten zugeordnet sind (denotationale Semantik), definiert werden. Es gibt auch weitere Möglichkeiten. Beispiele: axiomatische Semantik, algebraische Semantik. Die Pragmatik einer Programmiersprache untersucht ihre Anwendbarkeit und Nützlichkeit. Sie gehört nicht zur Definition der Sprache. 1.2 Programmiersprachen 1-20

21 Lexik: Definition von Programmiersprachen: Kleines Beispiel Schlüsselwörter: while, do, od,... Zeichen: +, ;, :=, (, ), {, },... Bezeichner = Buchstabe { Buchstabe, Ziffer } Syntax: <Anweisungsfolge> ::= <Anweisung> ; <Anweisungsfolge> <Anweisung> <Anweisung> ::= <Zuweisung> <While-Anweisung>... <Zuweisung> ::= <Bezeichner> := <arithmetischer Ausdruck> <While-Anweisung> ::= while <logischer Ausdruck> do <Anweisungsfolge> od (Operationelle) Semantik: Eine (partielle) Funktion f, die Zustände auf Zustände abbildet. Ein Beispiel: f(z 0 ) = z 14 (s. Abschnitt 1.1) 1.2 Programmiersprachen 1-21

22 Klassifikation der Programmiersprachen Die Programmiersprachen lassen sich grob in drei Klassen einteilen: Maschinensprachen Bits und Bytes, für den menschlichen Leser kaum verständlich Maschinenorientierte Sprachen (Assembler) stellen die Befehle in einem Mnemo-Code dar ADDIC 23, R0 STO R0, #12004 Problemorientierte Sprachen imperative, funktionale, objektorientierte, deduktive Sprachen, Spezialsprachen Ein Computer versteht nur Maschinensprachen! 1.2 Programmiersprachen 1-22

23 Implementierung von Programmiersprachen Compiler übersetzen Quellprogramme aus problemorientierten Sprachen in äquivalente Zielprogramme in Maschinensprachen: cc -o prog prog.c prog input output Interpreter lesen das Programm ein und führen es aus. Die Eingabe kann während der Ausführung oder durch eine Datei erfolgen. scm prog.scm input output Mischverfahren übersetzen das Programm zunächst mit einem Compiler in eine Zwischensprache. Das übersetzte Programm wird anschließend interpretiert: javac prog.java java prog Die Eingabe kann zum Beispiel über die Tastatur oder Dateien erfolgen. Die Ausgabe kann zum Beispiel auf dem Bildschirm oder in Dateien geschehen. 1.2 Programmiersprachen 1-23

24 Implementierung von Programmiersprachen Interpreter müssen das Programm bei jedem Lauf erneut analysieren. Dies bedeutet einen gewissen Effizienzverlust. Typisch, aber nicht zwingend: Compiler: C Interpreter: Scheme Mischverfahren: Java Compiler und Interpreter: Haskell Compiler 1 Compiler 2 Interpreter 1 Interpreter Programmiersprachen 1-24

25 Verarbeitung von Java-Programmen Java Quellprogramm Zuerst wird ein Quellprogramm vom Compiler in Bytecode übersetzt. java javac Java Bytecode java Im zweiten Schritt wird der Bytecode vom Interpreter ausgeführt. Der Bytecode kann als Maschinencode der sogenannten virtuellen Java-Maschine (JVM) angesehen werden. Bytecode ist portabel. VM für Windows VM für Linux Der Compiler ist maschinenunabhängig, der Interpreter muss für jede Plattform neu entwickelt werden. 1.2 Programmiersprachen 1-25

26 Verarbeitung von Java-Programmen Interpretierter Code ist langsamer in der Ausführung als kompilierter Code, selbst wenn dieser als Bytecode vorliegt. Prinzipiell könnten Java-Programme auch in Maschinensprachen übersetzt werden. Dann könnte die Portierbarkeit verloren gehen. Eine Alternativlösung bieten Just-in-Time-Compiler (JIT). Ein JIT ist ein Programm, das den Bytecode einzelner Methoden während der Ausführung in Maschinencode der jeweiligen Plattform übersetzt. So kann die Methode beim nächsten Aufruf deutlich schneller ausgeführt werden. Vorteilhaft ist, dass der Bytecode nicht verändert wird und damit das übersetzte Programm portabel bleibt. 1.2 Programmiersprachen 1-26

27 Implementierung von Programmen Warum muss man wissen, wie Programme umgesetzt werden? Beispiel: Java-Programm: public static void main(string[] args) { int z = 256*256*256* ; System.out.println(z*z); } Ausgabe: 1 Der korrekte Wert ist Warum ist die Ausgabe 1? Kann ein Computer nicht rechnen? 1.2 Programmiersprachen 1-27

28 Paradigmen und Programmiersprachen Einige Programmiersprachen: imperativ: Algol, Algol68, Pascal, Ada, C,... funktional: Lisp, Scheme, ML, Haskell,... prädikativ: Prolog objektorientiert: Smalltalk, Eiffel,... hybrid: Java, C++, C# (imperativ, oo), Scala (imperativ, oo, funktional),... In der Regel lassen sich die Sprachen nicht eindeutig einem bestimmten Paradigma zuordnen. Zum Beispiel gibt es in Scheme Variable und Zuweisungen, d. h. imperative Konzepte. Java ist als imperativ-basierte objektorientierte Programmiersprache (hybrides Paradigma) zu bezeichnen. C++ hingegen besitzt einen vollständigen imperativen Kern, während Smalltalk eine strikt objektorientierte Programmiersprache ist. 1.2 Programmiersprachen 1-28

29 Skriptsprachen Bei Skriptsprachen handelt es sich um übergeordnete Sprachen, um vorhandene Programme oder Prozeduren kontrolliert ablaufen zu lassen. Skriptsprachen haben ihren Ursprung in den Kommandosprachen (Job Control Language, JCL) von Betriebssystemen. Einfache Skriptsprachen sind die Shell-Skripts von Unix. Mächtigere Skriptsprachen sind beispielsweise Perl, PHP, Python oder JavaScript. Skriptsprachen werden in der Regel interpretiert, nicht kompiliert. 1.2 Programmiersprachen 1-29

30 Dieses sind Versionen von Java Java-Vorläufer, zuerst unter dem Namen Oak. Oak: Object Application Kernel, Eiche. Neu: Applets (little applications) Januar 1996 JDK 1.0 (Java Development Kit) Anfang 1997 JDK 1.1 Dezember 1998 JDK 1.2, wurde Januar 1999 umbenannt in Java 2 Plattform Mai 2000 Java 2, JDK 1.3 Februar 2002 Java 2, JDK 1.4 Ende 2004 Java 2, JDK 5.0 (interne Versionsnummer: 1.5.0) Tiger Dezember 2006 Java Standard Edition 6 Mustang Juli 2011 Java Standard Edition 7 Dolphin März 2014 Java Standard Edition 8 September 2017 Java Standard Edition 9 Sprachen haben Versionen. 1.2 Programmiersprachen 1-30

31 Java-Versionen Die installierte Version kann mit java -version ermittelt werden. Bitte checken Sie Ihre Java-Version. Achten Sie also darauf, dass Ihre Programme der Hausaufgaben auf Ihrem Computer und auf dem von Ihnen benutzten TU-Computer ausgeführt werden können. 1.2 Programmiersprachen 1-31

32 Java-Beispiel Dieses ist ein Beispiel für die Version Java 8. Java 8 machte Schritte in die Richtung interface Funktion { int rechnen (int x, int y); } Diese Prinzipien werden wir uns natürlich genauer anschauen. 1.2 Programmiersprachen 1-32

33 public class Test { public static void main(string[] args) { Funktion f = (a,b) -> a+b; Funktion g = (a,b) -> a-b; Funktion h = (a,b) -> a*b; Funktion l = (a,b) -> a/b; int a = 100; int b = 25; int w = f.rechnen(a,b); int x = g.rechnen(a,b); int y = h.rechnen(a,b); int z = l.rechnen(a,b); System.out.printf("%d + %d = %4d%n",a,b,w); System.out.printf("%d - %d = %4d%n",a,b,x); System.out.printf("%d * %d = %4d%n",a,b,y); System.out.printf("%d / %d = %4d%n",a,b,z); } } 1.2 Programmiersprachen 1-33

34 Übersetzung, Ausführung und Ausgabe: javac Test.java java -ea Test = = * 25 = / 25 = 4 Ganzzahlige Division, Beispiel: 100/3 = Programmiersprachen 1-34

35 Algorithmus und Programm: Korrektheit, Komplexität und Entscheidbarkeit 1.1 Vom Algorithmus zum Programm 1.2 Programmiersprachen 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1.4 Software-Grundlagen 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1-35

36 Spezifikation, Korrektheit und Verifikation Die Spezifikation beschreibt die Anforderungen an ein Softwaresystem in einer informellen, grafischen und/oder formalen Sprache. Eine Spezifikation sollte vollständig und widerspruchsfrei sein. Ein Softwaresystem, das eine Spezifikation erfüllt, heißt korrekt bezüglich dieser Spezifikation. Man unterscheidet dabei zwischen partieller und totaler Korrektheit. Ein Programm nennt man partiell korrekt, wenn die Spezifikation erfüllt, die Terminierung von Programmläufen aber nicht notwendigerweise gewährleistet ist. Es heißt total korrekt, wenn zusätzlich die Terminierung sichergestellt ist. Ein partiell korrektes Programm liefert also keine falschen Ergebnisse. Unter Verifikation versteht man den mathematischen Beweis der partiellen oder totalen Korrektheit eines Programms. 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1-36

37 Korrektheit des Algorithmus von Euklid Die Spezifikation besteht aus einer Vorbedingung und einer Nachbedingung: Vorbedingung: x > 0 und y 0 Nachbedingung: a = ggt(x, y) Der Algorithmus von Euklid ist für Eingaben x und y mit x > 0 und y 0 partiell und total korrekt. Die Variable a enthält nach Programmende den Wert des größten gemeinsamen Teilers von x und y. Mit der Definition ggt(0, 0) = 0 ist der Algorithmus von Euklid für alle Werte x und y mit x 0 und y 0 partiell und total korrekt. Beweis unter Verwendung einer Schleifeninvarianten: Sehen wir uns an. 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1-37

38 Test und Validierung Der Test eines Programms ist der probeweise Ablauf des Programms. Damit der Test aussagekräftig ist, müssen die Eingabedaten sorgfältig ausgewählt werden. Ein Test kann nur die Anwesenheit von Fehlern, niemals aber deren Abwesenheit zeigen. Als Validierung bezeichnet man den Test eines Softwaresystems unter Bedingungen, wie sie im späteren Einsatz herrschen werden. Auch wenn das zu erstellende Programm verifiziert wurde, kann auf eine Validierung nicht verzichtet werden, da ein mathematischer Nachweis der Korrektheit beispielsweise nichts über das Laufzeitverhalten des Programms oder die Auslastung von Leitungen aussagt. Verifikation: Validierung: verus wahr, facere machen validus gesund, stark 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1-38

39 Komplexität und O-Notation Unter Komplexität versteht man den Aufwand, den ein Algorithmus/Programm zur Lösung einer Aufgabe benötigt. Damit ist in den meisten Fällen der erforderliche Speicherplatz oder die Anzahl der durchgeführten Rechenschritte gemeint. Mathematisch wird die Komplexität eines Algorithmus/Programms in der Regel durch eine Funktion f : N R beschrieben. Die Größenordnung einer solchen Funktion f wird häufig durch die sogenannte O-Notation nach oben abgeschätzt: O(g) = {f : N R c > 0, n 0 > 0 n n 0. 0 f (n) cg(n)} für eine Funktion g : N R. 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1-39

40 Komplexität des Algorithmus von Euklid Theorem. [G. Lamé, 1845] Es seien x, y und n mit x 0, y 0 und 0 x, y < n gegeben. Dann gilt: Der Algorithmus von Euklid benötigt höchstens ( ) f (n) := log φ 5 n 2 Divisionsschritte, wobei φ = 1 2 ( ) ist. Beispiel: ggt(36,52), n=53, f (n) = 9, = 10 2 = 8. Unter Verwendung der O-Notation erhalten wir: f (n) O(log(n)). Man schreibt es auch in der Form: f (n) = O(log(n)). 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1-40

41 Symbole zur Größenordnung von Funktionen Es sei eine Funktion g : N R gegeben. O(g) = {f : N R c > 0, n 0 > 0 n n 0. 0 f (n) cg(n)} Ω(g) = {f : N R c > 0, n 0 > 0 n n 0. 0 cg(n) f (n)} Θ(g) = {f : N R c 1 > 0, c 2 > 0, n 0 > 0 n n 0. 0 c 1 g(n) f (n) c 2 g(n)} o(g) = {f : N R c > 0 n 0 > 0 n n 0. 0 f (n) < cg(n)} ω(g) = {f : N R c > 0 n 0 > 0 n n 0. 0 cg(n) < f (n)} Diese Zeichen werden Landau-Symbole genannt. Sie beschreiben das asymptotische Verhalten von Funktionen. Eine Übersicht finden Sie auf der Web-Seite dieser Vorlesung. Dieses Thema wird in den Veranstaltungen Algorithmen und Datenstrukturen und Diskrete Mathematik behandelt. 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1-41

42 Symbole zur Größenordnung von Funktionen 3000n 2 + 7n + 23 Θ(n 2 ) Man schreibt meistens: 3000n 2 + 7n + 23 = Θ(n 2 ) 3000n 2 + 7n + 23 O(n 2 ) 3000n 2 + 7n + 23 Ω(n 2 ) 23 Θ(1) a n x n a 1 x + a 0 Θ(x n ) Θ(log k (n)) = Θ(log l (n)) 6n log 2 (n) + 8n + 12 Θ(n log(n)) 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1-42

43 Entscheidbarkeit Entscheidbarkeit von Problemen: der es löst? Gibt es zu jedem Problem einen Algorithmus, Immer wieder kommt es vor, dass ein Computerprogramm plötzlich keine Reaktion mehr zeigt ( abstürzt oder sich aufhängt ). Dahinter verbirgt sich häufig ein Algorithmus, der für eine spezielle Eingabe nicht terminiert. Für kommerzielle Software kann das sehr teuer werden. Die Suche nach dem Grund der Nichtterminierung kann sich sehr schwierig gestalten. Daher liegt der Wunsch nahe, einen Algorithmus zu entwickeln, der beliebige Algorithmen auf Terminierung testet. Diese Aufgabenstellung heißt Halteproblem. 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1-43

44 Halteproblem 1 Das Halteproblem ist unentscheidbar. Wir zeigen die Aussage indirekt: Annahme: Es gibt einen Algorithmus HALT(algorithmus a, eingabe e), der für einen Algorithmus a und eine Eingabe e genau dann das Ergebnis true liefert, wenn a bei Eingabe von e terminiert. Der Algorithmus TEST(algorithmus a) sei definiert durch TEST(algorithmus a): while HALT(a,a) {... }. Das heißt, TEST(a) terminiert genau dann nicht, falls a bei Eingabe von a terminiert. 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1-44

45 Zwei Fälle können eintreten: Halteproblem 2 1. Fall: Der Aufruf HALT(TEST, TEST) liefert true. In diesem Fall terminiert nach Definition von HALT der Aufruf TEST(TEST). Hieraus folgt aus der Definition von TEST, dass der Aufruf TEST(TEST) nicht terminiert, ein Widerspruch. 2. Fall: Der Aufruf HALT(TEST, TEST) liefert false. In diesem Fall terminiert nach Definition von HALT der Aufruf TEST(TEST) nicht. Hieraus folgt aus der Definition von TEST, dass der Aufruf TEST(TEST) terminiert, ein Widerspruch. Da in beiden Fällen ein Widerspruch auftritt, kann der Algorithmus HALT nicht existieren. 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1-45

46 Halteproblem 3 Die beiden vorherigen Seiten Halteproblem 1 und Halteproblem 2 wurden dem Schulbuch Peter Hubwieser, Patrick Löffler et al.: Informatik 5 Lehrwerk für Gymnasien. Ernst Klett Verlag, Stuttgart, Leipzig, entnommen. 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1-46

47 Berechenbarkeit 1 Eine Funktion f : A Y heißt berechenbar, wenn es einen Algorithmus A f gibt, der diese Funktion realisiert. Die Quadratfunktion f : N N ist berechenbar, denn es gibt einen Algorithmus, der für jede gegebene natürliche Zahl n das Quadrat n 2 berechnet. Ist es wirklich möglich, ganz lange Zahlen mit dem Computer zu bearbeiten? Es gibt überabzählbar viele Funktionen f : N N, aber nur abzählbar viele Algorithmen. Das heißt, fast keine Funktion ist berechenbar. Wir werden den Satz von Rice kennenlernen. 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1-47

48 Berechenbarkeit 2 Mithilfe des Berechenbarkeitsbegriffs lässt sich die Entscheidbarkeit formal definieren: Eine Menge M X heißt entscheidbar relativ zu X, wenn die charakteristische Funktion { 1, x M, χ M (x) = 0, x X \ M, berechenbar ist. Formulieren Sie das Halteproblem als charakteristische Funktion einer geeigneten Menge. Fazit: Es gibt unentscheidbare Probleme und nicht berechenbare Funktionen. Mehr zu diesem Thema lernen Sie in den Modulen Theoretische Informatik. 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1-48

49 Algorithmus und Programm: Software-Grundlagen 1.1 Vom Algorithmus zum Programm 1.2 Programmiersprachen 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1.4 Software-Grundlagen 1.4 Software-Grundlagen 1-49

50 Hardware Für unsere Zwecke reicht das folgende einfache Modell vom Aufbau eines Rechners. Details lernen Sie in den Modulen Technische Informatik, Rechnernetze,... kennen: Zentraleinheit Prozessor Eingabewerk Hauptspeicher Ausgabewerk Massenspeicher Eingabegeräte Ausgabegeräte 1.4 Software-Grundlagen 1-50

51 Software Zur Systemsoftware zählen alle Programme, die für den korrekten Ablauf von Rechnern oder Rechnernetzen erforderlich sind. Die Anwendungssoftware wird zur Lösung von Problemen, die nicht ursächlich mit Rechnern zu tun haben, eingesetzt. Softwarewerkzeuge unterstützen die Erstellung von System- und Anwendungsprogrammen. 1.4 Software-Grundlagen 1-51

52 Systemsoftware Zur Systemsoftware zählen alle Programme, die für den korrekten Ablauf von Rechnern oder Rechnernetzen erforderlich sind: Betriebssysteme und ihre Komponenten Compiler, Interpreter Binder, Lader bzw. Bindelader Programme zur Verwaltung von Geräten Netzsoftware Software-Grundlagen 1-52

53 Anwendungssoftware Die Anwendungssoftware wird zur Lösung von Problemen, die nicht ursächlich mit Rechnern zu tun haben, eingesetzt: Datenbankprogramme Conputeralgebrasysteme Office-Software: Textverarbeitung, Tabellenkalkulation, Präsentation,... -Programme Internetsoftware: Browser,... Mediensoftware: Grafik-, Photo-, Audio-, Videoprogramme, Software-Grundlagen 1-53

54 Softwarewerkzeuge Softwarewerkzeuge unterstützen die Erstellung von System- und Anwendungsprogrammen: Modellbildung Programmierwerkzeuge Versionskontrolle Integrierte Entwicklungsumgebungen Software-Grundlagen 1-54

55 Betriebssysteme Der Begriff Betriebssystem ist eine zusammenfassende Bezeichnung für alle Programme, die die Ausführung der Benutzerprogramme, die Verteilung der Betriebsmittel auf die einzelnen Benutzerprogramme und die Aufrechterhaltung der Betriebsart (z. B. Stapelbetrieb, Dialogbetrieb) steuern und überwachen. Das Betriebssystem bietet seine Dienste dem Benutzer in einer textuellen oder grafischen Oberfläche an. 1.4 Software-Grundlagen 1-55

56 Betriebssysteme Das Betriebssystem kann als eine Erweiterung der Maschine gesehen werden. Der durchschnittliche Programmierer möchte in der Regel beispielsweise nicht die Verwaltung einer Floppy-Disk programmieren, sondern deren Funktionalität als Abstraktion auf hohem Niveau nutzen. In diesem Zusammenhang spricht man auch von einer virtuellen Maschine. Das Betriebssystem arbeitet auch als Ressourcenmanager. Moderne Rechensysteme bestehen aus Prozessoren, Speichern, Uhren, Platten, Terminals, Druckern, Netzwerkschnittstellen und vielen weiteren Komponenten. Das Betriebssystem teilt diese Ressourcen untern den verschiedenen Prozessen auf. Dieser Vorgang kann als Multiplexen in Zeit und Raum beschrieben werden. 1.4 Software-Grundlagen 1-56

57 Wichtige Betriebssysteme UNIX-Derivate BSD-Unix (Berkeley Software Distribution) AT&T, System V Linux (Linus Torvalds) Distributionen für Linux: RedHat, Suse, Debian, Ubuntu, Knoppix,... Betriebssysteme der Fa. Microsoft MS-DOS Windows 3.x/95/98/Me Windows NT, Windows 2000, Windows XP Windows Vista, Windows 7, 8, Software-Grundlagen 1-57

58 Oberflächen von Betriebssystemen Ein heutiges Betriebssystem stellt dem Benutzer die Fähigkeiten des Rechners über eine textuelle Oberfläche (Shell) und/oder über eine grafische Oberfläche (GUI, Graphical User Interface) zur Verfügung. Beispielsweise gibt es für Unix üblicherweise die Shells sh, bash, csh, tcsh, ksh und einige weitere. Für Linux wurden die grafischen Oberflächen KDE und Gnome entwickelt. Die Wahl der jeweiligen Oberfläche bleibt dem Benutzer überlassen. 1.4 Software-Grundlagen 1-58

59 Dateiverwaltung Dateiverwaltungssystem Komponente eines Betriebssystems, die den gesamten Platz auf externen Speichern verwaltet. Zu den Aufgaben gehören die Lokalisierung von Dateien, die Zuweisung von Speicherplatz und die Buchführung über die Verwendung des Speichers. Editor Komponente eines Dateiverwaltungssystems zum Bearbeiten von Texten oder Daten. Verbreitete Editoren unter Unix sind vi, emacs, nedit und gedit. Notepad und Wordpad sind solche für Windows. 1.4 Software-Grundlagen 1-59

60 Programmierwerkzeuge Änderungsverwaltung: diff, patch Versionsverwaltungsprogramme: rcs, cvs, svn Eingabeanalyse: lex, yacc Eingabeverarbeitung: awk Programmgenerierung: make Software-Grundlagen 1-60

61 Programmierumgebungen Programmierumgebungen sind Software-Systeme zur Unterstützung der Programmentwicklung. Typische Bestandteile einer Programmierumgebung sind ein sprachspezifischer Editor (Texteditor), Compiler und/oder Interpreter, Binder, Lader bzw. Bindelader, Test- und Debughilfen, Quelltextformatierungstools, Archivierungswerkzeuge sowie Dokumentationsgeneratoren. 1.4 Software-Grundlagen 1-61

62 Integrierte Entwicklungsumgebungen Eine Programmierumgebung wird auch integrierte Entwicklungsumgebung (IDE) (integrated development environment) genannt. Integrierte Entwicklungsumgebungen für Java sind beispielsweise NetBeans, Eclipse, IntelliJ IDEA, Borland JBuilder und Oracle JDeveloper. Integrierte Entwicklungsumgebungen können ggf. auch für die Arbeit mit mehreren Programmiersprachen geeignet sein. 1.4 Software-Grundlagen 1-62

Einführung: Vom Algorithmus zum Programm

Einführung: Vom Algorithmus zum Programm Einführung: Vom Algorithmus zum Programm 1.1 Vom Algorithmus zum Programm 1.2 Programmiersprachen 1.3 Korrektheit, Komplexität und Entscheidbarkeit 1.4 Hard- und Software-Grundlagen 1.1 Vom Algorithmus

Mehr

Semantik von Programmiersprachen

Semantik von Programmiersprachen Semantik von Programmiersprachen 1. Einführung Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Sommersemester 2013 1. Einführung 1.1 Sprachen und

Mehr

Programmieren für Fortgeschrittene

Programmieren für Fortgeschrittene Programmieren für Fortgeschrittene 1. Einführung Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Wintersemester 2013/2014 1. Einführung 1.1 Sprachen

Mehr

Erste Schritte in Java

Erste Schritte in Java Erste Schritte in Java Im einführenden Kapitel haben wir die Grundbegriffe der imperativen Programmierung an einem Beispiel (Algorithmus von Euklid) kennengelernt. In diesem Kapitel sehen wir uns an einem

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 21. Oktober 2015 Automat versus Computer Ein Automat ist eine Maschine,

Mehr

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

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen Organisation und Einführung Studiengang Informatik Universität Bremen Sommersemester 2010 (Vorlesung am Montag, der 12. April 2010) (Montag, der 12. April 2008) 1 Vorstellung 2 Organisation 3 Einführung

Mehr

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

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

Mehr

1. Java Grundbegriffe

1. Java Grundbegriffe 1. Java Grundbegriffe Geschichte von Java Programmieren mit Java Interpretieren vs. Kompilieren Java Byte-Code Jave Virtual Machine Arbeitsmaterialien Allgemeine Informatik 2 SS09 Folie 1.1 Java, eine

Mehr

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

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

Mehr

2 Grundlagen der Programmierung

2 Grundlagen der Programmierung 2 Grundlagen der Programmierung In diesem Kapitel bereiten wir die Grundlagen für ein systematisches Programmieren. Wichtigstes Ziel ist dabei die Herausarbeitung der fundamentalen Konzepte von Programmiersprache.

Mehr

Kapitel 02. Java was, wann, warum, wieso. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 02. Java was, wann, warum, wieso. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 02 Java was, wann, warum, wieso Java, eine objektorientierte Programmiersprache Java ist eine objektorientierte Programmiersprache und als solche ein eingetragenes Warenzeichen der Firma Sun Microsystems.

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe 1 Kapitel 1 2 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm, Compiler, Einordnung von Java Ein einfaches Java-Programm erstellen, übersetzen und ausführen Java-Programme dokumentieren 3 Informatik

Mehr

Grundlagen der Programmierung UE

Grundlagen der Programmierung UE Grundlagen der Programmierung UE Research and teaching network GdP UE H. Prähofer, R. Wolfinger 1 Vortragende Dr. Herbert Praehofer (G1 u. G2) Mag. Reinhard Wolfinger (G3 u. G4) Institute for System Software

Mehr

Grundlagen der Programmierung UE

Grundlagen der Programmierung UE Grundlagen der Programmierung UE Research and teaching network GdP UE H. Prähofer, M Löberbauer 1 Vortragende Dipl.-Ing. Markus Löberbauer (G1) Dr. Herbert Praehofer (G2 u. G3) Institute for System Software

Mehr

Programmierung. Programme, Compiler, virtuelle Maschinen, Java

Programmierung. Programme, Compiler, virtuelle Maschinen, Java Programmierung Programme, Compiler, virtuelle Maschinen, Java Programme Ein Programm ist eine Folge von Anweisungen, die einem Computer sagen, was er tun soll tuwas.c for(int i=0; i=0; i

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

Erste Schritte in Java

Erste Schritte in Java Erste Schritte in Java In diesem Kapitel werden wir an einem kleinen Beispiel wichtige Grundbegriffe der objektorientierten Programmierung kennenlernen. Wir wollen ein Programm schreiben, das in der Lage

Mehr

Programmiertechnik. Prof. Dr. Oliver Haase Raum G124 haase@htwg-konstanz.de Tel: 07531/206-150. Oliver Haase Hochschule Konstanz 1

Programmiertechnik. Prof. Dr. Oliver Haase Raum G124 haase@htwg-konstanz.de Tel: 07531/206-150. Oliver Haase Hochschule Konstanz 1 Programmiertechnik Prof. Dr. Oliver Haase Raum G124 haase@htwg-konstanz.de Tel: 07531/206-150 Oliver Haase Hochschule Konstanz 1 Organisatorisches Vorlesung: montags, 8:00 9:30h, Raum C-109 freitags, 8:00

Mehr

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik Grundlagen der Informatik II Teil I: Formale Modelle der Informatik 1 Einführung GdInfoII 1-2 Ziele/Fragestellungen der Theoretischen Informatik 1. Einführung abstrakter Modelle für informationsverarbeitende

Mehr

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte Elementare Schritte Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen Zuweisungsoperation von fundamentaler Bedeutung Zuweisungsoperator In Pascal := In

Mehr

Programmieren was ist das genau?

Programmieren was ist das genau? Programmieren was ist das genau? Programmieren heisst Computerprogramme herstellen (von griechisch programma für Vorschrift). Ein Computerprogramm ist Teil der Software eines Computers. Als Software bezeichnet

Mehr

Einleitung und Begriffliches. Einleitung. Programmiersprachen. Software-Komplexität ist inhärent und hat vor allem folgende Ursachen

Einleitung und Begriffliches. Einleitung. Programmiersprachen. Software-Komplexität ist inhärent und hat vor allem folgende Ursachen Einleitung Einleitung und Begriffliches Software-Komplexität ist inhärent und hat vor allem folgende Ursachen Komplexität des gegebenen Problems Schwierigkeiten beim Management des Entwicklungsprozesses

Mehr

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

Problemorientierte Programmiersprachen Nachteile von Programmen in Maschinensprache sehr aufwendig bei komplexeren Aufgabenstellungen fehleranfällig Problemorientierte Programmiersprachen Nachteile von Programmen in Maschinensprache sehr aufwendig bei komplexeren Aufgabenstellungen fehleranfällig schwer verständlich nicht portabel, d.h. nicht auf Rechner

Mehr

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016) Kostenmodell Daniel Graf, Tobias Pröger 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016) Erklärung: Diese Mitschrift ist als Ergänzung zur Vorlesung gedacht. Wir erheben keinen Anspruch

Mehr

Programmierkurs Java. Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.

Programmierkurs Java. Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck. Programmierkurs Java Grundlagen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Algorithmen, Maschinen- und Programmiersprachen Algorithmen

Mehr

Programmiersprachen und Programmierkonzepte

Programmiersprachen und Programmierkonzepte Programmiersprachen und Programmierkonzepte Inhalt Programmiersprachen- Entwicklung Programmiersprachen und Programmierparadigmen Die Geschichte der Programmiersprachen Anfänge vor 200 Jahren Programmierbare

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 21. Oktober 2015 Entstehung von Java 1991 entwickeln Mike Sheridan, James

Mehr

B.4. B.4 Betriebssysteme. 2002 Prof. Dr. Rainer Manthey Informatik II 1

B.4. B.4 Betriebssysteme. 2002 Prof. Dr. Rainer Manthey Informatik II 1 Betriebssysteme Betriebssysteme 2002 Prof. Dr. Rainer Manthey Informatik II 1 Bekannte Betriebssysteme Windows 2000 CMS UNIX MS-DOS OS/2 VM/SP BS 2000 MVS Windows NT Solaris Linux 2002 Prof. Dr. Rainer

Mehr

Programmierkurs II. C und Assembler

Programmierkurs II. C und Assembler Programmierkurs II C und Assembler Prof. Dr. Wolfgang Effelsberg Universität Mannheim Sommersemester 2003 1-1 Inhalt Teil I: Die Programmiersprache C 2. Datentypen und Deklarationen 3. Operatoren und Ausdrücke

Mehr

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

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

Komplexität von Algorithmen

Komplexität von Algorithmen Komplexität von Algorithmen Prof. Dr. Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw Ressourcenbedarf - Größenordnungen Prozesse verbrauchen

Mehr

2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben

2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben Algorithmen und Algorithmisierung von Aufgaben 2-1 Algorithmisierung: Formulierung (Entwicklung, Wahl) der Algorithmen + symbolische Darstellung von Algorithmen Formalismen für die symbolische Darstellung

Mehr

Einführung in die Programmierung WS 2014/15. 2. Algorithmus, Berechenbarkeit und Programmiersprachen 2-1

Einführung in die Programmierung WS 2014/15. 2. Algorithmus, Berechenbarkeit und Programmiersprachen 2-1 Einführung in die Programmierung WS 2014/15 2. Algorithmus, Berechenbarkeit und Programmiersprachen 2-1 2. Alg., Ber. & PS Inhalt 1. Algorithmen 2. Programmiersprachen Algorithmus und Programm(iersprache)

Mehr

Informatik Programmiersprachen eine kurze Übersicht

Informatik Programmiersprachen eine kurze Übersicht Informatik eine kurze Übersicht Seite 1 natürliche Sprachen (nach Wikipedia) ca 6500 gesprochene Sprachen davon etwa die Hälfte im Aussterben etwa 500 Schriftsprachen mit gedruckten Texten P. Bueghel Turmbau

Mehr

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

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015 Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Sudoku. Warum 6? Warum 6?

Sudoku. Warum 6? Warum 6? . / Sudoku Füllen Sie die leeren Felder so aus, dass in jeder Zeile, in jeder Spalte und in jedem x Kästchen alle Zahlen von bis stehen.. / Warum?. / Warum?. / Geschichte der Logik Syllogismen (I) Beginn

Mehr

JAVA als erste Programmiersprache Semesterkurs

JAVA als erste Programmiersprache Semesterkurs JAVA als erste Programmiersprache Semesterkurs 0 - Einstieg WS 2012 / 2013 Prof. Dr. Bodo Kraft Prof. Dr. Bodo Kraft FH Aachen University of Applied Sciences Fachbereich Medizintechnik und Technomathematik

Mehr

Java I Vorlesung 1 Einführung in Java

Java I Vorlesung 1 Einführung in Java Java I Vorlesung 1 Einführung in Java Alexander Koller koller@coli.uni-sb.de 26.4.2004 Problem Algorithmus Programm Programmiersprachen Warum Java? Unser erstes Java-Programm Organisatorisches Was heißt

Mehr

4.Grundsätzliche Programmentwicklungsmethoden

4.Grundsätzliche Programmentwicklungsmethoden 4.Grundsätzliche Programmentwicklungsmethoden 1.1 Grundlage strukturierter und objektorientierter Programmierung Begriff Software Engineering - umfaßt den gezielten Einsatz von Beschreibungsmitteln, Methoden

Mehr

Übersicht. Vorstellung des OO-Paradigmas

Übersicht. Vorstellung des OO-Paradigmas Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java

Mehr

4 Ausklang. ALP 2, Hannes Federrath, Sommersemester 2001

4 Ausklang. ALP 2, Hannes Federrath, Sommersemester 2001 ALP 2, Hannes Federrath, Sommersemester 2001 4 Ausklang Inhalt des Kapitels im Überblick: In diesem Kapitel sollen zum Ausklang der Vorlesung folgende Schwerpunkte behandelt werden: Software-Entwicklungsprozess

Mehr

Organisatorisches/Einstieg

Organisatorisches/Einstieg 1/31 Organisatorisches/Einstieg Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/31 Outline 1 Motivation Theoretische Grundlagen

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Java Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm... Warum Java als Programmiersprache

Mehr

Java. Warum Programmierung? Programmierung Beispiel Taschenrechner

Java. Warum Programmierung? Programmierung Beispiel Taschenrechner Java Programmierung Höhere Programmiersprachen Java als Programmiersprache Aufbau der Java-Software Verwendung von JOE 201-1 Warum Programmierung? Prozessor versteht nur Folgen von 0 und 1 Wie erstellt

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Prof. Dr. Bernhard Schiefer bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Wesentliche Inhalte Einführung Rechnergrundlagen Grundlagen der Programmierung Kern imperativer

Mehr

Kapitel 3. Mein erstes C-Programm

Kapitel 3. Mein erstes C-Programm Kapitel 3 Mein erstes C-Programm 1 Gliederung Kapitel 3 Mein erstes C-Programm 3.1 Einleitung 3.2 Mein erstes C-Programm 3.3 Zusammenfassung 2 Problem Algorithmus Mittelwert für Messwerte berechnen DGL

Mehr

1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung.

1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung. 1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung. Beschreiben Sie ferner je einen frei gewählten Datentyp aus der Gruppe der skalaren und einen aus der Gruppe der strukturierten

Mehr

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

Programmieren Formulierung eines Algorithmus in einer Programmiersprache Zum Titel der Vorlesung: Programmieren Formulierung eines in einer Programmiersprache Beschreibung einer Vorgehensweise, wie man zu jedem aus einer Klasse gleichartiger Probleme eine Lösung findet Beispiel:

Mehr

Grundlagen der Informatik I (Studiengang Medieninformatik)

Grundlagen der Informatik I (Studiengang Medieninformatik) Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Dr. Tom Kamphans 1. Vorlesung 12.10.2016 1 Organisatorisches Vorlesung: Mittwochs 14:00 15:30, Raum F 201 Übung: Mittwochs 15:45 19:00, Raum F 225 Übung: alle zwei Wochen

Mehr

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi 06.09.10 1

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi 06.09.10 1 Kapitel 1 Einstieg in Java Dr. Elham Firouzi 06.09.10 1 1 : Einstieg in Java Einleitung Ein erstes Beispiel Berner Fachhochschule Entwicklung von Java-Programmen Applikationen Applets Vor und Nachteile

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Martin Wirsing 2 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm... Warum als Programmiersprache verwenden? Ein einfaches -Programm erstellen, übersetzen

Mehr

1 Einleitung. 1.1 Höhere Programmiersprachen

1 Einleitung. 1.1 Höhere Programmiersprachen 1 Einleitung 1.1 Höhere Programmiersprachen Programme werden heute zumeist in sogenannten problemorientierten, höheren Programmiersprachen geschrieben. Diese Programmiersprachen abstrahieren (in verschiedenem

Mehr

J.5 Die Java Virtual Machine

J.5 Die Java Virtual Machine Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Prof. Dr. Rudolf Berrendorf Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg URM - Programmierung Dipl.-Inf. Sigrid Weil Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg Einordnung Programmier-Paradigma:

Mehr

12. Rekursion Grundlagen der Programmierung 1 (Java)

12. Rekursion Grundlagen der Programmierung 1 (Java) 12. Rekursion Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 24. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Java für C++ Programmierer

Java für C++ Programmierer Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?

Mehr

Programmierkurs Python I

Programmierkurs Python I Programmierkurs Python I Michaela Regneri 2009-10-30 (Folien basieren auf dem gemeinsamen Kurs mit Stefan Thater, der für diese Vorlesung auf Alexander Kollers Java-Kurs basierte) Organisatorisches Wöchentliche

Mehr

Aspekte der Informatik

Aspekte der Informatik Aspekte der Informatik 1. Algorithmen und Datenstrukturen a) Intuitiver Algorithmusbegriff, Standard-Algorithmen, Standard-Datenstrukturen b) Paradigmen: oo, imperativ, funktional, logisch, regelbasiert

Mehr

Funktionale Programmierung (in Clojure)

Funktionale Programmierung (in Clojure) Funktionale Programmierung (in Clojure) Einführung Burkhardt Renz Fachbereich MNI Technische Hochschule Mittelhessen Wintersemester 2014/15 Übersicht Paradigmen von Programmiersprachen Paradigmen von Programmiersprachen

Mehr

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

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

Wie entsteht ein Computerprogramm?

Wie entsteht ein Computerprogramm? Wie entsteht ein Computerprogramm Grundstrukturen von Programmen Programmiersprachen Entwicklungsschritte eines Programms Programmdokumentation Seite 1 Telefonanruf-Algorithmus Start Rufnummer bereitstellen

Mehr

09.10.2015. 02.10.2015 + 07.10.2015 Seite 1. 02.10.2015 + 07.10.2015 Seite 2

09.10.2015. 02.10.2015 + 07.10.2015 Seite 1. 02.10.2015 + 07.10.2015 Seite 2 02.10.2015 + 07.10.2015 Seite 1 02.10.2015 + 07.10.2015 Seite 2 1 Anzahl der Klassenarbeiten: Mindestens zwei Klassenarbeiten pro Halbjahr (= 4 KA pro Jahr) Im ersten Ausbildungsjahr gibt es jedoch kein

Mehr

Einführung in die Programmiertechnik

Einführung in die Programmiertechnik 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

Mehr

Die Programmiersprache C Eine Einführung

Die Programmiersprache C Eine Einführung Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert

Mehr

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

Prof. Dr.-Ing. Dietrich Schröder GIS und Programmiersprachen: Wohin geht die Reise? Prof. Dr.-Ing. Dietrich Schröder GIS und Programmiersprachen: Wohin geht die Reise? 1954 1960 1965 1970 1975 1980 1985 1990 1995 01 02 03 04 40 Jahre Programmierenausbildung im Studiengang VG Programmiersprachen

Mehr

Ein Streifzug durch die Programmiersprachenlandschaft in der Schule. Gerald Futschek TU Wien Informatiktag 2013

Ein Streifzug durch die Programmiersprachenlandschaft in der Schule. Gerald Futschek TU Wien Informatiktag 2013 Ein Streifzug durch die Programmiersprachenlandschaft in der Schule Gerald Futschek TU Wien Informatiktag 2013 Urwald der Programmiersprachen COBOL Visual Basic Modula-2 Logo Pascal SQL APL BASIC LISP

Mehr

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

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Linux Eine Alternative?

Linux Eine Alternative? Linux Eine Alternative? Agenda Lagebericht Grundlagen von Linux Linux Vor- und Nachteile Einsatzgebiete Kosten Ausblick 1 Durchbruch für Linux Kampf gegen Linux 2 Was ist Linux? UNIX wurde 1969 von der

Mehr

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

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien. Java 1 Einführung Grundlegende Übungsaufgaben Arbeitsauftrag 1.1 1. Formulieren Sie den Algorithmus nach den oben genannten Kriterien. Beispiel: Bedienung eines Getränkeautomaten

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Algorithmen und ihre Programmierung

Algorithmen und ihre Programmierung Veranstaltung Pr.-Nr.: 10 10 V Wirtschaftsinformatik für Wirtschaftwissenschaftler Algorithmen und ihre Programmierung -Teil 1 - Dr. Chris Bizer WS 007/008 Einführung Definition: Algorithmus Ein Algorithmus

Mehr

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

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

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

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Java Martin Wirsing 2 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm... Warum Java als Programmiersprache verwenden? Ein einfaches Java-Programm erstellen,

Mehr

Java Schulung. Objektorientierte Programmierung in Java. Prof. Dr. Nikolaus Wulff

Java Schulung. Objektorientierte Programmierung in Java. Prof. Dr. Nikolaus Wulff Java Schulung Objektorientierte Programmierung in Java Prof. Dr. Nikolaus Wulff Was ist Java? Java ist eine einfache, objektorientierte, verteilte, interpretierte, robuste, sichere, architekturneutrale,

Mehr

Grundlagen der Informatik Übungen 1.Termin

Grundlagen der Informatik Übungen 1.Termin Grundlagen der Informatik Übungen 1.Termin Dr. Ing Natalia Currle-Linde Institut für Höchstleistungsrechnen 1 Kurzvorstellung Dr.-Ing. Natalia Currle-Linde linde@hlrs.de Institut für Höchstleistungsrechnen

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm 1 Vom Problem zum Programm Ein Problem besteht darin, aus einer gegebenen Menge von Informationen eine weitere (bisher unbekannte) Information zu bestimmen. 1 Vom Problem zum Programm Ein Algorithmus ist

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Einführung zu den Übungen aus Softwareentwicklung 1

Einführung zu den Übungen aus Softwareentwicklung 1 Einführung zu den Übungen aus Softwareentwicklung 1 Dipl.-Ing. Andreas Riener Universität Linz, Institut für Pervasive Computing Altenberger Straße 69, A-4040 Linz riener@pervasive.jku.at SWE 1 // Organisatorisches

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung

Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung Seite 1 Allgemeines Dozent Dr. Th. Letschert Lernziel Einführung in die Software-Entwicklung und Programmierung Kenntnisse einer

Mehr

2 Grundlagen der Programmierung

2 Grundlagen der Programmierung Kap02.fm Seite 81 Dienstag, 7. September 2010 2:21 14 2 Grundlagen der Programmierung In diesem Kapitel bereiten wir die Grundlagen für ein systematisches Programmieren. Wichtigstes Ziel ist dabei die

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag,

Mehr

Programmierkurs C++ Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.

Programmierkurs C++ Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck. Programmierkurs C++ Grundlagen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Algorithmen, Maschinen- und Programmiersprachen Algorithmen

Mehr

Stichworte zur Ideengeschichte der Programmiersprachen

Stichworte zur Ideengeschichte der Programmiersprachen Stichworte zur Ideengeschichte der Programmiersprachen Faculty of Technology robert@techfak.uni-bielefeld.de Vorbemerkung Diese Notzien dienen zur Erläuterung des O Reilly Posters über die Entwicklung

Mehr

Java Programmierung auf der Konsole / unter Eclipse

Java Programmierung auf der Konsole / unter Eclipse Fakultät Informatik, HFU Brückenkurs Programmieren 1 Java Programmierung auf der Konsole / unter Eclipse Allgemeine Begriffe Programmiersprache: künstliche Sprache zur Notation von Programmen Programm:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Erste Schritte zum lauffähigen Java Programm

Erste Schritte zum lauffähigen Java Programm Erste Schritte zum lauffähigen Java Programm Diese kleine Einführung ist eine Hilfe für Studenten der Vorlesung SWT I zur Meisterung der sich ergebenden Hürden bei der Erstellung eines ersten kleinen Java-Programms.

Mehr

Objektorientierte Softwareentwicklung SoSe 15

Objektorientierte Softwareentwicklung SoSe 15 Objektorientierte Softwareentwicklung SoSe 15 Heinz Faßbender Raum E148 Tel. 0241/6009 51913 Email: fassbender@fh-aachen.de www.fassbender.fh-aachen.de FH AACHEN UNIVERSITY OF APPLIED SCIENCES FACHBEREICH

Mehr

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 2 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

3. Grundlegende Sprachkonstruktionen imperativer Programme

3. Grundlegende Sprachkonstruktionen imperativer Programme 3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 4. Nov. 2015 2 Schwerpunkte

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr