Paradigmen zur Algorithmenbeschreibung
|
|
- Jesko Sommer
- vor 6 Jahren
- Abrufe
Transkript
1 Paradigmen zur Algorithmenbeschreibung In einem objektorientierten Algorithmus werden Datenstrukturen und Methoden zu einer Klasse zusammengefasst. Von jeder Klasse können Objekte gemäß der Datenstruktur erstellt und über die Methoden manipuliert werden. 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 Algorithmus heißt funktional, wenn die zugrunde liegende Berechnungsvorschrift mittels einer Sammlung von Funktionen definiert wird. Die Funktionsdefinitionen dürfen insbesondere Rekursionen und Funktionen höherer Ordnung enthalten. Rückblick und Ausblick A-1
2 Algorithmus von Euklid Der folgende, in einer imperativen Programmiersprache formulierte Algorithmus von Euklid 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 Rückblick und Ausblick A-2
3 Algorithmus von Euklid Variable 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 14 Rückblick und Ausblick A-3
4 Imperatives Programmieren In einem imperativen Programm gibt es Variable, die Werte speichern können. Die Variablen und ihre Werte legen den Zustand des Programms fest. Der Zustand ändert sich mit dem Ablauf des Programms. Die Wertzuweisung gestattet es, den Zustand zu verändern. Mit einer Sequenz können Anweisungen nacheinander ausgeführt werden. Die Selektion erlaubt die Auswahl zwischen Anweisungen. Anweisungen können mit der Iteration wiederholt werden. Eingabe-Anweisungen ermöglichen es, den Zustand von außen zu beeinflussen. Ausgabe-Anweisungen erstellen einen Ausdruck des Zustands (oder eines Teils davon). Rückblick und Ausblick A-4
5 Imperatives Programmieren Prozeduren: Abstraktionen von Anweisungen Funktionen: Abstraktionen von Ausdrücken Datentypen: Primitive Datentypen: boolean, char, int, real Zusammengesetzte Datentypen: enumeration, array, record, pointer Typdeklarationen: Abstraktionen von Datentypen Typsysteme können unabhängig von Paradigmen und Sprachen definiert und untersucht werden. Rückblick und Ausblick A-5
6 Imperatives Programmieren Weitere Kontrollstrukturen Module Ausnahmebehandlung Parallelverarbeitung Rückblick und Ausblick A-6
7 Algorithmus von Euklid imperative/iterative Formulierung: while b # 0 do r := a mod b; a := b; b := r od funktionale/rekursive Formulierung: ggt(a,b) = { a b = 0 ggt(b, a mod b) b 0 Rückblick und Ausblick A-7
8 Algorithmus von Euklid (Scheme, funktional) (define (ggt a b) (if (= b 0) a (ggt b (remainder a b)))) (ggt 36 52) > 4 Rückblick und Ausblick A-8
9 Funktionales Programmieren Ein funktionaler Algorithmus formuliert die Berechnungsvorschrift durch eine Menge von Funktionen. Die Funktionen können wechselseitig-rekursiv oder auch von höherer Ordnung (Funktionale) sein. Rückblick und Ausblick A-9
10 (define (inc n) (+ n 1)) (define (square x) (* x x)) (define (cube x) (* x x x)) Funktionen höherer Ordnung (define (sum f a next b) (if (> a b) 0 (+ (f a) (sum f (next a) next b)))) Rückblick und Ausblick A-10
11 (define (sum-square a b) (sum square a inc b)) (define (sum-cube a b) (sum cube a inc b)) > (sum-square 1 4) 30 > (sum-cube 1 4) 100 Rückblick und Ausblick A-11
12 Deduktive Algorithmen Ein deduktiver (logischer) Algorithmus führt Berechnungen durch, indem er aus Fakten und Regeln weitere Fakten, sogenannte Anfragen (Ziele), beweist. Fakten: P Regeln: P if Q 1 and Q 2 and... and Q k Regeln dieser Form werden auch Horn-Klauseln genannt. Fakten können als Regeln mit k = 0 gesehen werden. Die folgenden Beispiele wurden in der deduktiven Programmiersprache Prolog geschrieben. Rückblick und Ausblick A-12
13 Beispiel: Eingabe der Fakten und Regeln vater(johann,heinrich). vater(johann,thomas). vater(heinrich,carla). vater(thomas,erika). vater(thomas,klaus). vater(thomas,golo). vater(thomas,monika). vater(thomas,elisabeth). vater(thomas,michael). verheiratet(johann,julia). verheiratet(heinrich,maria). verheiratet(thomas,katia). mutter(x,y) :- vater(z,y), verheiratet(z,x). geschwister(x,y) :- vater(z,x), vater(z,y), X \= Y. Rückblick und Ausblick A-13
14 Beispiel: Eingabe der Anfragen Nachdem das Programm eingelesen wurde, können Anfragen gestellt werden, die von einer Interferenzmaschine, zum Beispiel einem Prolog-Interpreter, beantwortet werden. Anfragen werden nach der Eingabeaufforderung?- gestellt:?- geschwister(thomas, heinrich). true? ; no?- geschwister(thomas, golo). no Die Ausgabe true bedeutet, dass die Anfrage positiv beantwortet wurde, das heißt, dass Thomas und Heinrich Geschwister sind. Nach einem Fragezeichen erwartet der Interpreter Anweisungen, wie fortzufahren ist. Ein Semikolon ist die Aufforderung, nach weiteren Lösungen zu suchen. Rückblick und Ausblick A-14
15 Beispiel: Eingabe der Anfragen Falls eine Anfrage eine Variable enthält, werden alle Belegungen für die Variablen ermittelt, die die Aussage wahr werden lassen. Wenn wir die Geschwister von Golo suchen, stellen wir die folgende Anfrage.?- geschwister(x,golo). X = erika? ; X = klaus? ; X = monika? ; X = elisabeth? ; X = michael? ; no Erika, Klaus, Monika, Elisabeth und Michael sind also die Geschwister von Golo. Rückblick und Ausblick A-15
16 Beispiel: Eingabe der Anfragen Eine Anfrage kann mehr als eine Variable enthalten. Durch?- geschwister(x,y). werden insgesamt 32 Geschwisterpaare ermittelt, da Paare wegen der Symmetrie der Relation doppelt ausgegeben werden. Rückblick und Ausblick A-16
17 Algorithmus von Euklid (Prolog, deduktiv) ggt(a,0,a). ggt(a,b,z) :- U is A mod B, ggt(b,u,z).?- ggt(36,52,z). Z = 4? Rückblick und Ausblick A-17
18 Funktionen und Relationen Eine Funktion f : X Y ordnet jedem Element der Menge X (Definitionsbereich) genau ein Element der Menge Y (Wertebereich) zu: x f (x) Eine Relation R X Y besteht aus Paaren (x, y) X Y. Dabei kann es zu einem x X mehrere Elemente y Y mit geben. (x, y) R Rückblick und Ausblick A-18
19 Deduktives Programmieren Deduktives Programmieren beschäftigt sich mit Relationen und nicht mit Funktionen. Fakten und Regeln können als Eingabe von Relationen bzw. als Konstruktionsvorschriften für Relationen angesehen werden. Anfragen überprüfen, ob Paare in einer bestimmten Relation stehen oder ermitteln solche Paare: Eine Anfrage der Form P(x, y) überprüft, ob x und y bezüglich P in Relation stehen. Die Anfrage P(X, y) berechnet alle x mit (x, y) P. Anfragen der Form P(X, Y ) führen zur Ausgabe aller Paare (x, y) mit (x, y) P. Rückblick und Ausblick A-19
20 Deklaratives Programmieren In deklarativen Programmiersprachen wird aus einer nach bestimmten Regeln gebildeten mathematischen Formulierung eines Problems automatisch ein Programm erzeugt. Die formale Problembeschreibung kann z. B. auf der Prädikatenlogik (logische Programmiersprachen) oder dem λ-kalkül (funktionale Programmiersprachen) basieren. Deklarative Programmiersprachen haben sich vom Konzept der ausführenden Maschine gelöst. Rückblick und Ausblick A-20
21 .. Entwicklung der Programmiersprachen 2000 C#. Programmiersprachen in der Informatikausbildung 1995 JAVA SCHEME (standard) C++ OCCAM CSP ADA SMALLTALK80 MODULA 2 SCHEME C PROLOG PASCAL LOGO ALGOL68 SIMULA PL/I BASIC COBOL ALGOL LISP FORTRAN Algol Algol68 Modula-2 Scheme Java Rückblick und Ausblick A-21
22 Programmiersprachen Imperative Programmiersprachen: Cobol, Fortran, PL/I, Basic, Algol, Algol68, Pascal, Modula-2, C, Ada Funktionale Programmiersprachen: Lisp, Scheme, ML, Haskell, Scala. Die Sprache Scala ist eine Erweiterung von Java. Objektorientierte Programmiersprachen: C++, Eiffel, Smalltalk, Java, C#, Oberon Logische Programmiersprachen: Prolog Skriptsprachen, Spezialsprachen Rückblick und Ausblick A-22
23 Bisherige Entwicklung von Java Java-Vorläufer, zuerst unter dem Namen Oak. Neu: Applets (little applications) Jan JDK 1.0 (Java Development Kit) Anfang 1997 JDK 1.1 Dez JDK 1.2, wurde Jan 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 Eigentlich sollte Java 8 im September 2013 veröffentlicht werden. Rückblick und Ausblick A-23
24 Fragestellung: Statischer/dynamischer Scope Wie lautet die Ausgabe des folgenden Programms? public class Test { static int x=7; static void p() {x=0;} // x ist eine globale Variable. public static void main(string[] args) { int x=5; p(); System.out.println(x); } } Statischer Scope: Ausgabe: 5, Dynamischer Scope: Ausgabe: 0. Die Semantik der Methode p hängt also davon ab, wie die globale Variable x genommen wird. Wir wissen: Java gibt die 5 aus. Rückblick und Ausblick A-24
25 Java 8 Die wichtigste Erweiterung ist das Projekt Lambda. Das Ziel dieses Projektes ist die Einführung von Closures. Damit wird die Bedeutung von globalen Variablen definiert. Globale Variable können vielfältiger als das obige Beispiel sein. Funktionale Schnittstellen sind Schnittstellen, die genau eine abstrakte Methode enthalten. Abstrakte Klassen mit einer abstrakten Methode zählt man nicht zu den funktionalen Schnittstellen. Schnittstellen sollen auch statische Methoden enthalten können. Eine wichtige Erweiterung sind Lambda-Ausdrücke. Ein Lambda-Ausdruck ist ein Literal, das eine funktionale Schnittstelle implementiert, ohne der Funktion einen Namen zu geben. Die API muss erweitert werden: Lambda, Java Collections Framework,... Rückblick und Ausblick A-25
26 Closures Friedrich Esser: Ein Closure ist ein Block (bzw. eine Einheit) von Code, der freie Variable aus der Umgebung, genauer dem umgebenden Scope zur Berechnung des Ergebnisses mit einbezieht. Abhängig von der Art der freien Variablen, gibt es Closures, deren Ergebnisse nur von ihren Argumenten abhängen, da die freien Variablen immutable sind. Ergebnisse mit den mutablen Werten der freien Variablen variieren. Leider wird Closure je nach Autor oder Sprache evtl. anders interpretiert. Rückblick und Ausblick A-26
27 Scala Scala ist eine hybride Sprache: imperativ, objektorientiert, funktional. SCAlable LAnguage Scala wird in der Schweiz entwickelt. Leiter: Martin Odersky. Scala-Programme können Java-Archive (jars) verwenden und umgekehrt. Rückblick und Ausblick A-27
28 Ist Java 8 der Todesstoß für Scala? Will Java 8 kill Scala? Wir erinnern uns alle noch zu gut: Als Scala damals vorgestellt wurde und die Entwickler-Gemeinde Gefallen an der Sprache fand, unkte man schon, Scala würde Java bald beerben. Und dabei war Scala nicht die einzige JVM-Sprache, die als»java-killer«bezeichnet wurde (siehe z.b. Ceylon). Jetzt scheint sich der Spieß allerdings umzudrehen, denn mit Java 8 hat die Programmiersprache dank Lambda-Expressions, Methodenreferenzen, Functional Interfaces und Co. einen enormen Sprung in Richtung mehr Produktivität und Leistungsfähigkeit gemacht. Und schon fragen sich Entwickler wie Ahmed Soliman in seinem Blog: Will Java 8 kill Scala? Oder rücken die beiden Sprachen nicht eher näher zusammen? (Claudia Fröhling, 27. März 2014) Rückblick und Ausblick A-28
29 Anmerkungen zur Objektorientierung (Wiederholung) Das objektorientierte Paradigma kann anders (und/oder erweitert) als in Java angeboten werden: keine primitiven Datentypen keine statischen Attribute, keine statischen Methoden singleton object, standalone object, case class companion object, companion class Mehrfachvererbung mixin, trait... Rückblick und Ausblick A-29
30 Anmerkungen zur Objektorientierung (Wiederholung) Die Mehrfachvererbung führt (wie schon beschrieben) zum sog. Diamond-Problem. Mixins und Traits ermöglichen eine wiederverwendbare Menge von Attributen und Methoden (ähnlich wie Klassen). Traits sind eine Variante der Mixins. Traits gibt es inzwischen in vielen Programmiersprachen, zum Beispiel Scala. Lothar Piepmeyer: Anders als in Java ist in Scala alles ein Objekt. Die Teilung in primitive Typen und den Rest der Welt kennt Scala nicht. Unter der Haube bildet der Compiler den Scala-Typen Int auf die Java-Typen int und Integer ab. Rückblick und Ausblick A-30
31 Die wichtigsten der bisherigen Aspekte Paradigma oder hybrid? Anweisungen, Sequenz, Auswahl, Wiederholung, Deklaration, break, continue Datentypsystem, Variable, Konstante, Operatoren, Ausdrücke, Speicherung Methoden und ihre Signatur Gültigkeit, Sichtbarkeit, Überladung Programmiertechniken, z. B. Rekursion Zuverlässigkeit von Programmen Ein- und Ausgabe, packages,... Weitere Aspekte kommen im nächsten Semester! Rückblick und Ausblick A-31
32 Programmierausbildung Imperative, objektorientierte und Grundlagen der Programmierung: Programmieren I Programmieren II (Java) (Java, auch kleiner Blick auf andere Sprachen) Softwaretechnik: Softwaretechnik I (UML) Softwareentwicklungspraktikum (Java oder andere Sprache, UML) Funktionale Programmierung und Allgemeine Sicht auf Programmiersprachen: Programmieren für Fortgeschrittene (Haskell) Rückblick und Ausblick A-32
33 Programmierausbildung Deduktive Programmierung und Weiteres zur Logik: Logik in der Informatik Bedeutung von Programmen: (Prolog) Semantik von Programmiersprachen Implementierung von Programmiersprachen: Compiler I, II Compilerbaupraktikum Entwicklung von Software für eine konkrete Anwendung: Softwaretechnisches Industriepraktikum Rückblick und Ausblick A-33
34 Programmieren I + II Programmieren I: 6 LP, 2+2 (+ Rechnerübungen), im Wintersemester Inhalt: Grundzüge der imperativen und objektorientierten Programmierung, Java. Programmieren II: 6 LP, 2+2 (+ Rechnerübungen), im Sommersemester Inhalt: Vertiefung der objektorientierten Programmierung, auch kleiner Blick auf andere Sprachen. Schwerpunkte: Programmierung von Datenstrukturen, Parallelprogrammierung und Grafikprogrammierung. Prüfungsvorleistung/Studienleistung (je nach Studiengang): Hausaufgaben Prüfung: Klausur Rückblick und Ausblick A-34
35 Gehirn und Geist In der aktuellen Ausgabe (Februar 2015, Monatsheft) der Zeitschrift Gehirn und Geist erschien ein Artikel mit dem Titel Im Kopf des Programmierers. Zitat: Während Laien im Quelltext von Computerprogrammen meist nur kryptische Zeichen sehen, entschlüsseln Informatiker im Handumdrehen die Bedeutung des Kodes. Forscher untersuchen, was dabei im Gehirn passiert. von Janet Siegmund, Sven Apel und André Brechmann. Rückblick und Ausblick A-35
Paradigmen zur Algorithmenbeschreibung
Paradigmen zur Algorithmenbeschreibung In einem objektorientierten Algorithmus werden Datenstrukturen und Methoden zu einer Klasse zusammengefasst. Von jeder Klasse können Objekte gemäß der Datenstruktur
MehrParadigmen zur Algorithmenbeschreibung
Paradigmen zur Algorithmenbeschreibung In einem objektorientierten Algorithmus werden Datenstrukturen und Methoden zu einer Klasse zusammengefasst. Von jeder Klasse können Objekte gemäß der Datenstruktur
MehrAusblick: Entwurfsmuster (Design Pattern) 12.1 Entwurfsmuster (Design Pattern) 12.2 Programmierparadigmen und -sprachen und Veranstaltungen
Ausblick: Entwurfsmuster (Design Pattern) 12.1 Entwurfsmuster (Design Pattern) 12.2 Programmierparadigmen und -sprachen und Veranstaltungen 12.1 Entwurfsmuster (Design Pattern) 12-1 Entwurfsmuster (Design
MehrAusblick: Entwurfsmuster (Design Pattern)
Ausblick: Entwurfsmuster (Design Pattern) 12.1 Entwurfsmuster (Design Pattern) 12.2 Programmierparadigmen und -sprachen und Veranstaltungen 12.3 Gegenstände der Software-Technik 12.4 Java 8 und Java 9
MehrAusblick: Entwurfsmuster (Design Pattern)
Ausblick: Entwurfsmuster (Design Pattern) 12.1 Entwurfsmuster (Design Pattern) 12.2 Programmierparadigmen und -sprachen und Veranstaltungen 12.3 Gegenstände der Software-Technik 12.1 Entwurfsmuster (Design
MehrIII.1 Prinzipien der funktionalen Programmierung - 1 -
1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung
MehrAusblick: Entwurfsmuster (Design Pattern)
Ausblick: Entwurfsmuster (Design Pattern) 12.1 Entwurfsmuster (Design Pattern) 12.2 Programmierparadigmen und -sprachen 12.3 Gegenstände der Software-Technik 12.1 Entwurfsmuster (Design Pattern) 12-1 Entwurfsmuster
MehrGliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung
Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung
MehrAusblick: Entwurfsmuster (Design Pattern)
Ausblick: Entwurfsmuster (Design Pattern) 12.1 Entwurfsmuster (Design Pattern) 12.2 Programmierparadigmen und -sprachen 12.3 Gegenstände der Software-Technik 12.4 Java 8 12.1 Entwurfsmuster (Design Pattern)
MehrProgrammieren für Fortgeschrittene
Programmieren für Fortgeschrittene 1. Einführung Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Wintersemester 2016/2017 1. Einführung 1.1 Sprachen
MehrAlgorithmus Beispiele: Algorithmen als Programme Sind Programme korrekt? Gibt es Algorithmen? FAZIT
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
Mehr1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -
1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Deklarative Sprachen Folge von
Mehrn 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 -
n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Deklarative Sprachen l
Mehrn 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -
n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik n "Informatik" = Kunstwort aus Information
MehrInhalte des Moduls Programmieren 1
Inhalte des Moduls Programmieren 1 Einführung: Algorithmus und Programm, Programmiersprache Erste Schritte in Java Grundlagen der Sprache: Datentypen, Ausdrücke und Anweisungen, imperative Programmierung
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
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
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
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
MehrJava: Grundlagen der Sprache: Beispiele aus der Praxis. 3.6 Beispiele aus der Praxis 3-1
Java: Grundlagen der Sprache: Beispiele aus der Praxis 3.6 Beispiele aus der Praxis 3-1 Vorbemerkungen In diesem Abschnitt wollen wir an weiteren Beispielen die bisher vorgestellten Sprachkonzepte von
MehrVorlesung Programmieren
Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache
MehrVorlesung Programmieren. Programmiersprachen-Paradigmen. Programmierparadigmen. Eine Programmiersprache dient dem Aufschreiben von Algorithmen
Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache
Mehr1.3 Geschichte der Programmiersprachen
50er Jahre erste Definition höherer Programmiersprachen Effizienz maßgebliches Designziel FORTRAN (Backus) als Sprache für wissenschaftliches Rechnen (komplexe Berechnungen, einfachen Daten), Arrays, Schleifen,
Mehr1 Programmiersprachen 1.1 1
1 Programmiersprachen 1.1 1 Meilensteine imperativer Programmiersprachen (teilweise objektorientiert) Fortran 1960 Cobol Algol 60 PL/I Algol W Simula 67 Algol 68 1970 Pascal C Smalltalk Modula 1980 Ada
MehrProgrammieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik
Programmieren I Methoden-Spezial Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe bei primitivem Datentypen (Wertkopie) public class MethodParameters
MehrProgrammiersprachen. 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
MehrSemantik von Programmiersprachen
Semantik von Programmiersprachen 1. Einführung Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Sommersemester 2017 1. Einführung 1.1 Sprachen und
MehrProgrammieren I. Methoden-Special Heusch --- Ratz 6.1, Institut für Angewandte Informatik
Programmieren I Methoden-Special Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe: Wertkopie -By- public class MethodParameters { public
MehrÜbung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
Mehr2. JAVA-Programmierung. Informatik II für Verkehrsingenieure
2. JAVA-Programmierung Informatik II für Verkehrsingenieure Problem-Algorithmus-Umsetzung Problemstellung Algorithmus Umsetzung 2 Beispiele für Algorithmen 3 Definitionsversuch Algorithmus Anleitung, wie
MehrÜbung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
MehrGedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.
Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen
MehrProgrammiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 -
Programmiersprachen: Klassifizierung und Methoden Programmier-Paradigmen Grundlagen der Programmierung 2 (1.C) - 1 - Programmiersprachen: Begriffe Syntax Beschreibung der Programme als Texte let xyz =
MehrIntensivübung zu Algorithmen und Datenstrukturen
Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche
MehrEinführung in die Programmierung mit Java
Einführung in die Programmierung mit Java Martin Wirsing 2 Ziele Geschichte der OO-Programmiersprachen Warum Java als Programmiersprache verwenden? Ein einfaches Java-Programm erstellen, übersetzen und
MehrEs gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.
1 Einführung Programmiersprachen: Ermöglichen formale Beschreibung von Problemlösungsverfahren, die auf einem Computer oder Computersystemen ausführbar sind. Bilden die Basis zur Entwicklung von Software
MehrInformatik Vorkurs Sommersemester 2015
Informatik Vorkurs Sommersemester 2015 Vom Algorithmus zum Programm Werner Struckmann / Marvin Priedigkeit, Stephan Mielke 31. März 10. April 2015 Kann ein Computer rechnen? Ist das Programm korrekt? Wiederholung:
MehrErste Java-Programme (Scopes und Rekursion)
Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/
MehrInhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms.
Inhalt Algorithmus Euklidscher Algorithmus Sortieren Programmiersprachen Entwicklungsschritte eines Programms Algorithmen 1 Algorithmus Eindeutige Beschreibung eines allgemeinen Verfahrens unter Verwendung
MehrErste 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
MehrProgrammieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff
Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Agenda Elementare Einführung C Programm Syntax Datentypen, Variablen und Konstanten Operatoren und Ausdrücke Kontrollstrukturen
MehrPraktische Informatik 1
Praktische Informatik 1 Imperative Programmierung und Objektorientierung Karsten Hölscher und Jan Peleska Wintersemester 2011/2012 Was bisher geschah... Konzepte: Klassen und ihre...... Instanzen, die
Mehr(Building) Flexible Functional Programming Interfaces. Von Amos Treiber
(Building) Flexible Functional Programming Interfaces Von Amos Treiber Gliederung Funktionale Programmierung Einführung Aspekte Vergleich: Funktional vs Imperativ Bending the language towards the problem
Mehr1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt
1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Ein Zitat zu Beginn Vor der Wahl, ein theoretischer Physiker oder ein Programmierer
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
MehrBeispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung
Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Anweisungen mit Variablen Wiederholung Deklaration
MehrKonzepte der Programmiersprachen
Konzepte der Programmiersprachen Sommersemester 2010 4. Übungsblatt Besprechung am 9. Juli 2010 http://www.iste.uni-stuttgart.de/ps/lehre/ss2010/v_konzepte/ Aufgabe 4.1: Klassen in C ++ Das folgende C
MehrInhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2
iii Inhaltsverzeichnis Kurseinheit 1 1 Von der Aufgabenstellung zum Programm... 1 1.1 Motivation... 1 1.2 Softwareentwicklung... 2 1.3 EXKURS: Unified Modeling Language (UML)... 4 2 Anforderungsanalyse...
MehrInstitut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 2. Februar 2017 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 13. März
MehrInformatik 1. Sommersemester Helmut Seidl. Institut für Informatik TU München
Informatik 1 Sommersemester 2011 Helmut Seidl Institut für Informatik TU München 1 0 Allgemeines Inhalt dieser Vorlesung: Einführung in Grundkonzepte der Informatik; Einführung in Denkweisen der Informatik;
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
Mehr1 Funktionale vs. Imperative Programmierung
1 Funktionale vs. Imperative Programmierung 1.1 Einführung Programme einer funktionalen Programmiersprache (functional programming language, FPL) bestehen ausschließlich aus Funktionsdefinitionen und Funktionsaufrufen.
MehrÜbung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrÜbung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 Matthias Wieczorek Computer-Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45
MehrJavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
MehrJava 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8
Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen
Mehr2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen
Variablen Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Variablen dienen zur Speicherung von Daten. Um Variablen
MehrGrundlagen der Modellierung und Programmierung, Übung
Grundlagen der Modellierung und Programmierung Übung Prof. Wolfram Amme LS Softwaretechnik Prof. Klaus Küspert LS Datenbanksysteme Prof. Birgitta König-Ries LS Verteilte Systeme Prof. Dr. Wilhelm Rossak
MehrInstitut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. Januar 2018 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 17. Februar
MehrProf. Dr. Jürgen Giesl Lehr- und Forschungsgebiet Informatik 2. Proseminar - 1 -
Prof. Dr. Jürgen Giesl Lehr- und Forschungsgebiet Informatik 2 Proseminar - 1 - Lernziele des Proseminars Wie komme ich zu gesicherten Ergebnissen? Stimmen Angaben? Andere Quellen? Neuere Entwicklungen?
MehrDie Klasse Vertiefung
Die Klasse Vertiefung Vom Objekt zur Klasse Basis des OO-Paradigmas ist (wen verwundert es): Das Objekt Objekte werden in der Lehre und im allgemeinen Programmier-Jargon selbstverständlich mit Klassen
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Wiederholung Anweisungen durch Methodenaufrufe Ausgabe
MehrErste 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
Mehr4.4 Imperative Algorithmen Prozeduren
4.4.2 Prozeduren Der Wert eines Ausdrucks u in Zustand z Z lässt sich damit auch leicht definieren (jetzt W Z statt W σ ) Dazu erweitern wir die rekursive Definition von Folie 57 (Wert eines Ausdrucks):
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen
MehrSystem.out.println("TEXT");
Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
MehrEinführung in die Programmierung
Einleitung Gliederung Einführung in die Programmierung Wintersemester 2017/18 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:
Mehr1. Teilklausur Gruppe A. Bitte in Druckschrift leserlich ausfüllen!
Objektorientierte Programmierung & Modellierung WS 2007/8 Universität Koblenz-Landau Institut für Informatik Prof. Dr. Ralf Lämmel Dr. Manfred Jackel 1. Teilklausur 07.12.2007 Gruppe A Bitte in Druckschrift
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 13. März 2017 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:
MehrJava-Grundkurs für Wirtschaftsinformatiker
Klaus-Georg Deck Herbert Neuendorf Java-Grundkurs für Wirtschaftsinformatiker Die Grundlagen verstehen - Objektorientierte Programmierung - Fortgeschrittene Konzepte kennenlernen - Betriebswirtschaftlich
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrProgrammieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
Mehr7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik
7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik:
MehrWelche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
MehrDas diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen
Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser
MehrTeil 3 - Java. Grundlagen Klassen, Attribute Methoden
Teil 3 - Java Grundlagen Klassen, Attribute Methoden 1 Java 2 - Geschichte Ursprung: Green -Project bei der Firma Sun Microsystems 1991 Entwicklung eines Systems mit folgenden Eigenschaften: hardwareunabhängig
MehrProbeklausur Java Einführung in die Informatik. Wintersemester 2017/2018
Fakultät IV NI & CV Java Einführung in die Informatik Wintersemester 2017/2018 Hinweis: Diese ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen Prüfung des Moduls Einführung
MehrEmpfehlenswerte Literatur
Empfehlenswerte Literatur 1 Flanagan, David: Java in a Nutshell, O Reilly, UK, 2002 (50 ) Online Referenzen unter http://www.wi3.uni-erlangen.de/lehre/ http://java.sun.com http://www.javaworld.com/ Online
MehrEinführung in die Programmierung
Einleitung Gliederung Einführung in die Programmierung Wintersemester 08/09 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 8. September 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr
MehrFunktionale Programmierung Einführung
Einführung Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 13.09.2017 15:29 Inhaltsverzeichnis Was ist imperative Programmierung.......................
MehrProgrammieren in Haskell Einführung
Programmieren in Haskell Einführung Peter Steffen Universität Bielefeld Technische Fakultät 17.10.2008 1 Programmieren in Haskell Veranstalter Dr. Peter Steffen Raum: M3-124 Tel.: 0521/106-2906 Email:
MehrSoftware-Entwicklung
SWE-0 Software-Entwicklung Prof. Dr. Uwe Kastens 2001 bei Prof. Dr. Uwe Kastens Vorlesung Software-Entwicklung / Folie 00 Ziele der Vorlesung SWE-1 Die Studierenden sollen die Programmentwicklung in Java
MehrII.1.1. Erste Schritte - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.
Mehr12. 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
Mehr1. 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
Mehr10. Programmierungs-Phase: Objektorientierung Software Engineering
10. Programmierungs-Phase: Objektorientierung Software Engineering Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 15. Dezember 2005 Einordnung in den Kontext
MehrDie 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
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 6. März 2013 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:
Mehr