Diskrete Modellierung
|
|
- Kirsten Biermann
- vor 5 Jahren
- Abrufe
Transkript
1 Diskrete Modellierung Wintersemester 2018/19 Martin Mundhenk Uni Jena, Institut für Informatik 22. Oktober 2018
2 Vorlesung Diskrete Modellierung Grundlagen der Programmierung mit Python (Teil 2) (Winter 2018/19) Die Vorlesung/Übung orientiert sich am Buch Introduction to Programming in Python An Interdisciplinary Approach von Robert Sedgewick, Kevin Wayne und Robert Dondero (Addison Wesley, 2015) Die Webseite zum Buch ist auch für diese Vorlesung nützlich.
3 Organisatorisches Vorlesung montags, 16:15-17:45 Uhr, Raum 3325 Ernst-Abbe-Platz 2 Übung donnerstags, 8-10 Uhr, Raum 3410 (Linux-Pool 2) EAP2 Zur Teilnahme brauchen Sie eine Nutzerkennung beim KSZ! (KSZ... Kompetenz- und Service-Zentrum der Fakultät für Mathematik und Informatik) Es gibt ein wöchentliches Übungsblatt (ca. 12). Abgabe montags 16 Uhr (an pythonkurs@uni-jena.de) Zur Zulassung zur Modulprüfung müssen jeweils mindestens 50% der Punkte der Übungsblätter aus der ersten und der zweiten Hälfte erreicht sein. Die Abschlussprüfung ist mündlich und dauert ca. 30 Minuten. Prüfungstermine werden am Ende der Vorlesungszeit vereinbart. Bei der Abschlussprüfung kann ein Programmierprojekt vorgestellt werden.
4 0.0.4 Inhaltsverzeichnis 3. Objektorientiertes Programmieren 3.1 Benutzung von Daten-Typen 3.2 Erzeugen von Daten-Typen 3.3 Entwurf von Daten-Typen 3.4 Zwei Anwendungsbeispiele 4. Algorithmen und Datenstrukturen 4.1 Rechenzeit 4.2 Schnelles Sortieren 4.3 Keller und Warteschlangen 4.4 Symboltabellen 4.5 Anwendungsbeispiel: Small-World-Phänomen Die Nummerierung der Kapitel entspricht der Nummerierung im Buch von Sedgewick et al.
5 3 Objektorientiertes Programmieren Bisher haben wir nur elementare Datentypen (int, float, string, bool, []) benutzt, mit denen man Zahlen etc. und Folgen davon speichern und verarbeiten kann. Jetzt werden wir lernen, wie man komplexere Datentypen benutzt, definiert und entwirft. Ein Ziel ist, Daten und Operationen auf Daten mit Namen ansprechen zu können. Ein anderes Ziel ist, Operationen auf Daten mit den Daten zusammen zu implementieren Objektorientiertes Programmieren 3.1 Benutzung von Daten-Typen 3.2 Erzeugen von Daten-Typen 3.3 Entwurf von Daten-Typen 3.4 Zwei Anwendungsbeispiele
6 Erzeugen von Datentypen Darstellung der Potenziale, die von elektrischen Punktladungen in der Fläche erzeugt werden Wir haben eine Fläche, auf der sich in einigen Punkten elektrische Ladungen befinden. Jede einzelne Ladung bewirkt in jedem Punkt der Fläche ein elektrisches Potenzial, das sich nach dem Gesetz von Coulomb berechnet. Das elektrische Potenzial in jedem Punkt ist die Summe der von jeder Punktladung bewirkten Potenziale. Die beiden Bilder stellen graphisch die Potenziale dar, die von einer bzw. zwei Punktladungen in der Fläche bewirkt werden (rot=hoch, blau=niedrig). Wir wollen solche Bilder berechnen.
7 Die benötigten technischen Details Potenzial in px, yq bezgl. p ist k q0 r Wodurch wird eine Punktladung beschrieben? ihr Punkt px 0, y 0 q auf der Fläche (x- und y-koordinate) r px 0, y 0 q Punktladung p mit Ladung q 0 px, yq ihre elektrische Ladung q 0 Was bewirkt eine Punktladung? ein elektrisches Potenzial in jedem Punkt der Fläche Das elektrische Potenzial V im Punkt px, yq bewirkt durch die Ladung q 0 im Punkt px 0, y 0 q ist k q0 Abstand von px 0, y 0 q zu px, yq Dabei ist k N m2 C 2 die Coulombsche Konstante.
8 3.2.3 Der Datentyp Charge Ein Datentyp besteht aus einer Menge von Werten und einer Menge von Funktionen auf den Werten. Wir wollen einen Datentyp Charge für Punktladungen und von ihnen bewirkte Potenziale implementieren. Jede Punktladung p wird durch die Koordinaten des Punktes px0, y 0q und den Wert der Ladung q0 bestimmt (Werte/Daten). Das durch diese Punktladung (Punkt px0, y0q mit Ladung q0) an Punkt px, yq bewirkte Potenzial ist k (Funktion von der Punktladung und x und y). q0 Abstand von px0, y0q zu px, yq
9 Die API für Charge Die API (application programming interface) beschreibt, wie man den Datentyp benutzen kann. Unser Datentyp Charge soll Folgendes beschreiben: eine Ladung an einem Punkt in der Ebene, d.h. den Wert der Ladung q0 und die Koordinaten des Punktes px0, y0q das Potenzial an Punkt px, yq, das durch die Punktladung bewirkt wird. Operation Charge(x0,y0,q0) c.potentialat(x, y) str(c) Beschreibung eine neue Punktladung an Punkt px0, y 0q mit Ladung q0 das Potenzial an Punkt px, y q bewirkt durch Punktladung c q0 in (x0,y0) zur Darstellung von c als String
10 3.2.5 Die Implementierung von Charge In Python beschreibt man Datentypen durch Klassen. Die Klasse Charge muss die Werte q0, x0, y0 für eine Punktladung speichern können (Konstruktor), für jeden Punkt px, yq das Potenzial, das von der Punktladung im Punkt px0, y0q bewirkt wird, bestimmen können (Methoden), und eine Punktladung als string darstellen können (spezielle Funktionen).
11 # Die Datei charge.py mit der Klasse Charge. # Eine besser kommentierte Fassung ist auf der Webseite zur Vorlesung. import sys, stdio, math class Charge: # Ein Konstruktor def init (self, x0, y0, q0): self._xkoord = x0 self._ykoord = y0 self._ladung = q0 # Eine Methode def potentialat(self, x, y): COULOMB = 8.99e9 dx = x - self._xkoord dy = y - self._ykoord r = math.sqrt(dx*dx + dy*dy) if r == 0.0: if self._ladung > 0: return float('inf') else: return -float('inf') return COULOMB * self._ladung / r def test(): c = Charge(0.51, 0.63, 21.3) print(c) print(c.potentialat(0.7,0.8)) if name ==' main ': test() # Eine spezielle Funktion def str (self): text = str(self._ladung) + ' in (' + str(self._xkoord) + ', ' + str(self._ykoord) + ')' return text
12 3.2.7 Der Konstruktor Signatur spezielle Parameter-Variable gewöhnliche Parameter-Variablen def init ( self, x0, y0, q0 ): self. xkoord = x0 Instanz-Variablen self. ykoord = y0 Funktions-Rumpf self. ladung = q0 Der Rückgabewert des Konstruktors ist stets self (auch ohne return-anweisung). self ist eine Referenz auf das neu erzeugte Objekt.
13 3.2.8 Konstruktor-Abarbeitung auf dem Objekt-Level Charge c = Charge(0.1,0.2,3.0) self x0 [ init (self,0.1,0.2,3.0)] y0 0.1 q
14 3.2.8 Konstruktor-Abarbeitung auf dem Objekt-Level Charge c = Charge(0.1,0.2,3.0) self x0 [ init (self,0.1,0.2,3.0)] y0 0.1 q0 0.2 self. xkoord = x0 self x0 y0 q0 Charge xkoord
15 3.2.8 Konstruktor-Abarbeitung auf dem Objekt-Level Charge c = Charge(0.1,0.2,3.0) self x0 [ init (self,0.1,0.2,3.0)] y0 0.1 q0 0.2 self. xkoord = x0 self. ykoord = y0 self x0 y0 q0 Charge xkoord ykoord
16 3.2.8 Konstruktor-Abarbeitung auf dem Objekt-Level Charge c = Charge(0.1,0.2,3.0) self x0 [ init (self,0.1,0.2,3.0)] y0 0.1 q0 0.2 self. xkoord = x0 self. ykoord = y0 self. ladung = q0 self x0 y0 q0 Charge xkoord ykoord ladung
17 Konstruktor-Abarbeitung auf dem Objekt-Level Charge c = Charge(0.1,0.2,3.0) self x0 [ init (self,0.1,0.2,3.0)] y0 0.1 q0 0.2 self. xkoord = x0 self. ykoord = y0 self. ladung = q0 [return self] self x0 y0 q0 c Charge xkoord ykoord ladung Charge xkoord ykoord ladung
18 Methoden Signatur spezielle Parameter-Variable gewöhnliche Parameter-Variablen def potentialat( self, x, y ): COULOMB = 8.99e9 lokale Variablen dx = x - self. xkoord dy = y - self. ykoord Instanz-Variablen r = math.sqrt(dx*dx, dy*dy) Funktions-Aufruf if r == 0.0:... return Anweisung return COULOMB * self. ladung / r 3.2.9
19 Variablen in Methoden Parameter-Variablen Bsp.: self, x, y Aufgabe: Übergabe von Argumenten beim Aufruf der Methode Gültigkeitsbereich (scope): Methode Instanz-Variablen Bsp.: xkoord, ykoord Aufgabe: Speicherung von Werten des Datentyps Gültigkeitsbereich (scope): Klasse lokale Variablen Bsp.: dx, dy Aufgabe: Speicherung von temporären Werten beim Rechnen Gültigkeitsbereich (scope): Methode
20 Spezielle Funktionen und Konventionen Die Funktion str(c) in der API: nach Konvention wird beim Aufruf str(c) die Methode c. str () angewendet. Beim Aufruf von print(c) wird von Python print(str(c)) ausgeführt (etc.). Die Schreibweise mit Unterlänge am Anfang eines Variablen- oder Methodennamens wird dann benutzt, wenn der Name nur innerhalb der Implementierung der Klasse benutzt werden soll. In Python gibt es keine Möglichkeit, die Benutzung dieser Variablen- und Methodennamen zu verbieten. Andere Programmiersprachen bieten Konzepte dafür.
21 Erzeugen eines Datentyps Kurze Zusammenfassung 1. Angabe der API Ziel: einfache Benutzung des Datentyps von Klienten Klarheit über Struktur des Datentyps: welche Daten und welche Methoden? 2. Implementierung einer Klasse in Python Konstruktur init mit self als erster Parameter-Variable gefolgt von den gewöhnlichen Parameter-Variablen Methoden gemäß der API mit self als erster Parameter-Variable gefolgt von den gewöhnlichen Parameter-Variablen spezielle Funktionen, deren Namen von doppelten Unterlängen eingeschlossen sind mit self als erster Parameter-Variable 3. Testen der Implementierung
22 Abschließendes Beispiel: Visualisierung von Potenzialen Wir wollen Punktladungen aus einer Datei einlesen (alle Punkte haben Koordinaten px, yq mit 0 ď x, y ď 1), die Potenziale aller Punkte eines Bildes mit Auflösung 400 ˆ 400 und Koordinaten 0 ď x, y ď 1 berechnen (das Potenzial in Punkt px, yq ist die Summe der von allen Punktladungen in px, y q bewirkten Potenziale) % more charges.txt und graphisch darstellen, z.b. verschiedene Graustufen hohes Potential ist hell und niedriges Potential ist dunkel.
23 Die Struktur des Programms 1. Lies von der Kommandozeile den Namen der Datei mit den Punktladungen. 2. Berechne für jedes Pixel des Bildes das Potenzial. 3. Bestimme abhängig von der Spannbreite aller Potenziale deren Darstellung als Farbe. 4. Setze für jedes Pixel des Bildes die Farbe. 5. Zeige das Bild an. Wir implementieren eine Variante, bei der man zusätzlich zwischen drei Darstellungsarten wählen kann.
24 Welche Datenstrukturen wollen wir benutzen? Charge zur Darstellung der Punktladungen. Picture zur Darstellung des Ergebnis-Bildes. Der Zugriff auf die einzelnen Punkte des Bildes ist dabei sehr einfach. Color zur Darstellung der Farben. InStream zum Einlesen der Datei.
25 Die API von InStream
26 potenzialbild.py import sys, stdio, stddraw, stdarray, math from charge import Charge from color import Color from picture import Picture from instream import InStream # Lies einen Dateinamen von der Kommandozeile # und öffne die Datei mit diesem Namen. dateiname = sys.argv[1] eingabe = InStream(dateiname) # Lies die Art der Darstellung t von der Kommandozeile. t = 1 if len(sys.argv)>2: t = int(sys.argv[2]) # Die Datei enthält zeilenweise die Punktladungen bestehend # aus der x- und der y-koordinate des Punktes und der Ladung q # (alles float). Die Datei wird eingelesen, die Punktladungen # werden erzeugt und in einem Array gespeichert. punktladungen = [] while not eingabe.isempty(): x = eingabe.readfloat() y = eingabe.readfloat() q = eingabe.readfloat() punktladungen += [Charge(x,y,q)] # Die Ausgabe ist ein quadratisches Bild mit aufloesung*auf aufloesung = 400 # Es wird das Potenzial für jedes Pixel berechnet. # potenziale ist ein 2d-Array, in dem die Pixel-Potenziale # gespeichert werden. # Es wird später für die Darstellung als Picture # verwendet. # allepotentiale ist ein 1d-Array, in dem alle Potenziale # gespeichert werden. # Es wird später für die Umrechnung der Potenziale in # Farben verwendet. potenziale = stdarray.create2d(aufloesung,aufloesung) allepotenziale = [] for s in range(aufloesung): for z in range(aufloesung): # Die (x,y)-koordinaten des Punktes in Spalte s und # Zeile z werden bestimmt. x = 1.0 * s / aufloesung y = 1.0 * z / aufloesung # Das Potenzial im Punkt wird berechnet. v = 0.0 for p in punktladungen: v += p.potentialat(x,y) potenziale[s][z] = v allepotenziale += [v]
27 # Sortiere das Array mit allen Potenzialen. # Wir stellen uns das Array aufgeteilt in 256 Abschnitte vor. Jeder Abschnitt steht für eine "Farbe" von allepotenziale.sort() abschnittlaenge = len(allepotenziale) // 256 # Erzeuge ein (leeres) Bild. bild = Picture(aufloesung,aufloesung) # Male jedes Pixel des Bildes mit einer Farbe, die das Potenzial des Pixels (aus potenziale[][]) darstellt. for s in range(aufloesung): for z in range(aufloesung): # Stelle fest, in welchem der 256 Abschnitte von allepotenziale das Potenzial des Pixels (s,z) liegt. # Dieser Wert wird in graustufe gespeichert. graustufe = 0 while potenziale[s][z] > allepotenziale[(graustufe+1)*abschnittlaenge-1] and graustufe<=254: graustufe += 1 # Stelle den Wert von graustufe als Farbe dar. # Die erste Variante ist die Darstellung als Graustufe. if t==1: farbe = Color(graustufe,graustufe,graustufe) # 2.Variante: stelle Farbstufe 0 als blau (kalt) und Farbstufe 255 als rot (warm) dar # und mische die dazwischenliegenden Farbstufen aus Rot- und Blau-Bestandteilen zusammen. elif t==2: farbe = Color(graustufe,0,255-graustufe) # 3.Variante : male "Isobaren" aus Potenzialen mit gleicher Farbstufe im Abstand 5. else: if graustufe % 5 == 0: farbe = Color(0,0,0) else: farbe = Color(255,255,255) # Trage den Farbpunkt in bild ein (die Zeilen in bild werden andersherum gezählt als # in unserer Vorstellung von der Fläche mit den Punktladungen) bild.set(s,bild.height()-1-z, farbe)
28 # Zeige bild auf dem Bildschirm an. stddraw.setcanvassize(bild.width(),bild.height()) stddraw.picture(bild) stddraw.show() Die Umwandlung von Potenzialen in Graustufen kann auf verschiedene Weise dargestellt werden. python potenzialbild.py charges.txt 1 python potenzialbild.py charges.txt 3 python potenzialbild.py charges.txt 2
29 Zusammenfassung Wir haben die ersten Schritte dazu gesehen, wie man einen Datentyp entwirft, eine API dafür angibt und den Datentyp in Python als Klasse implementiert. Wir werden noch mehr Schritte dazu sehen.
Diskrete Modellierung
Diskrete Modellierung Wintersemester 2016/17 Martin Mundhenk Uni Jena, Institut für Informatik 24. Oktober 2016 3.2 Erzeugen von Datentypen Der Datentyp Charge Charge ist eine Datentyp für geladene Teilchen
Mehr3.2 Erzeugen von Datentypen
3.2 Erzeugen von Datentypen Der Datentyp Charge Charge ist ein Datentyp für geladene Teilchen auf einer Fläche (Punktladung). Potential in px, yq Das elektrische Potential V im Punkt px, yq bezgl. p ist
MehrDiskrete Modellierung
Diskrete Modellierung Wintersemester 2017/18 Martin Mundhenk Uni Jena, Institut für Informatik 16. Oktober 2017 Vorlesung Diskrete Modellierung Grundlagen der Programmierung mit Python (Teil 2) (Winter
MehrDiskrete Modellierung
Diskrete Modellierung Wintersemester 2016/17 Martin Mundhenk Uni Jena, Institut für Informatik 17. Oktober 2016 Vorlesung Algorithmische Grundlagen (Sommer 2016) Die Vorlesung/Übung orientiert sich am
Mehr3.2.b Turtle-Graphik. male einen 10cm langen Strich (und warte kurz) Der Datentyp Turtle
3.2.b Turtle-Graphik Der Datentyp Turtle Idee: Bilder lassen sich mit einem Bleistift malen, indem man wiederholt eine Richtung 0 360 einnimmt in diese Richtung einen geraden Strich einer bestimmten Länge
MehrDiskrete Modellierung
Diskrete Modellierung Wintersemester 2018/19 Martin Mundhenk Uni Jena, Institut für Informatik 13. November 2018 3.3.1 3.3 Entwurf von Datentypen Durch das Erzeugen von Datentypen entwickelt der Programmierer
Mehr3.3 Entwurf von Datentypen
3.3 Entwurf von Datentypen Durch das Erzeugen von Datentypen entwickelt der Programmierer eine eigene Sprache, mit der über die Daten gesprochen werden kann. Deshalb muss man beim Entwickeln einer Idee
MehrImplementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
Mehr1 Berechnung von Summen (ca = 10 Punkte)
Einführung in die wissenschaftliche Programmierung Klausur 26.02.2013 Seite 1/8 Name, Vorname, Unterschrift: Matrikelnummer: 1 Berechnung von Summen (ca. 5 + 4 + 1 = 10 Punkte) Gegeben sind natürliche
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) Übungsorganisation Bringen Sie Ihren Labtop in die Übungen mit! 09.10.2017 CuP - VO 2 Programmieren 1. Definition der Aufgabe, die das Programm lösen soll. 2.
MehrVorlesung Versickerung (ein Anwendungsbeispiel) 2.3.1
2.3.1 Vorlesung 07 2. Funktionen und Module 2.1 Definition von Funktionen 2.2 Module 2.3 Rekursion Die Fakultätsfunktion Schnelles Potenzieren Zeichnen von Funktionsgraphen 2.4 Versickerung (ein Anwendungsbeispiel)
MehrObjektorientiertes Programmieren II
Objektorientiertes Programmieren II Symbolische Programmiersprache. Benjamin Roth Folien von Annemarie Friedrich Wintersemester 2017/2018 Centrum für Informations- und Sprachverarbeitung LMU München 1
Mehrhue12 January 24, 2017
hue12 January 24, 2017 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern
Mehrpue13 January 28, 2017
pue13 January 28, 2017 1 Aufgabe 1 (Klammern und Anweisungsblöcke) Wie Sie in der Vorlesung gelernt haben, werden Anweisungsblöcke in Java nicht durch Einrückung, sondern mithilfe von geschweiften Klammern
MehrGrundlagen. Felix Döring, Felix Wittwer 24. April Python-Kurs
Grundlagen Felix Döring, Felix Wittwer 24. April 2017 Python-Kurs Gliederung 1. Scriptcharakter 2. Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren 3.
MehrPython Einführung. Monica Selva Soto. 24 März Mathematisches Institut
Mathematisches Institut mselva@math.uni-koeln.de 24 März 2009 Übungen zur Numerik 1 Vorlesung Übungen praktische Aufgaben Webseite: (Anmeldung, Übungsblätter) http://www.mi.uni-koeln.de/~mselva/numerik1.php
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
MehrNachtrag: Vergleich der Implementierungen von Stack
Nachtrag: Vergleich der Implementierungen von Stack In der letzten Vorlesung hatten wir zwei Implementierung der Klasse Stack: eine Implementierung als Liste (Array): liststack eine Implementierung als
MehrParameterübergabemechanismen für den Methodenaufruf
Methode, griech. der Weg zu etwas, planmäßiges Verfahren -Brockhaus Parameterübergabemechanismen für den Methodenaufruf Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw
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:
MehrVererbung, Polymorphie
Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08
Mehr4.4 Symboltabellen. Symboltabellen sind von grundlegender Bedeutung beim Programmieren. Wir werden uns ansehen, wie man sie implementieren kann.
4.4 Symboltabellen Eine Symboltabelle assoziiert Werte mit Schlüsselwörtern. Beispiele: ein Adressbuch, in dem Namen (Schlüsselwörter) Adressen, Telefonnummern und Geburtstage (Werte) zugeordnet werden
MehrMethoden und Wrapperklassen
Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)
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
MehrC++ - Objektorientierte Programmierung Konstante und statische Elemente
C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja
Mehr4.3 Keller und Warteschlangen
.3 Keller und Warteschlangen Wir werden zuerst die weitverbreitete Datenstruktur Keller (auch stack, pushdown) kennenlernen. Auch in Python selbst wird sie z.b. bei der Auswertung arithmetischer Ausdrücke
MehrTag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)
Tag 5 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Methoden Deklaration
MehrHumboldt-Universität zu Berlin Wintersemester 2010/11 Institut für Informatik Grundlagen der Programmierung. 6. Übungsblatt
Humboldt-Universität zu Berlin Wintersemester 2010/11 Institut für Informatik Grundlagen der Programmierung Prof. Redlich 6. Übungsblatt 21 (+4) Punkte Abgabe bis 31.01.2010 (08:00 Uhr) über GOYA Aufgabe
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
MehrOrganisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download
Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches
MehrWissenschaftliches Rechnen
Institut für Numerische und Angewandte Mathematik 11.04.2012 FB Mathematik und Informatik der Universität Münster Prof. Dr. Christian Engwer, Dipl. Math. Dipl. Inf. Sebastian Westerheide Übung zur Vorlesung
MehrAlgorithmen und Datenstrukturen II
Algorithmen und Datenstrukturen II in JAVA D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 31. März 2009, c 2009 D.Rösner
MehrKapitel 1: Informationsverarbeitung durch Programme
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2009 Kapitel 1: Informationsverarbeitung
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
MehrPython 2. Vorlesung Computerlinguistische Techniken Alexander Koller. 28. Oktober 2014
Python 2! Vorlesung Computerlinguistische Techniken Alexander Koller! 28. Oktober 2014 Listen Sequenz von beliebigen Werten. Literale: [], [1,2,3], [ hallo, True, -5.0] Hinten an Liste anhängen: L.append(27)
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
MehrEinführung in die Programmierung Wintersemester 2018/19
Einführung in die Programmierung Wintersemester 2018/19 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Inhalt Einführung in das konzept Attribute / Methoden
Mehr1 Klassen und Objekte
1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente
MehrVererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.
Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1
MehrThemen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen
Themen der Übung 1 Organisatorisches Methoden und Wrapperklassen 2 Methoden 3 Wrapper-Klassen CoMa-Übung IV TU Berlin 07.11.2012 Organisatorisches: Im Pool nur auf die Abgabeliste setzen, wenn ihr wirklich
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
Mehrhue06 December 2, 2016
hue06 December 2, 2016 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern
MehrLabor Software-Entwicklung 1
Fakultät für Technik STUDIENGANG MEDIZINTECHNIK Labor Software-Entwicklung Vorbereitungsaufgaben zu Versuch 2 C-Programmierung Mathematische Berechnungen Wintersemester 205/206 Seite von 5 Vorbemerkungen
MehrProbeklausur: 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,
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
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen
Mehr1. Teilklausur. Name:... Vorname:... Matrikel-Nummer:...
ALP II Objektorientierte Programmierung SS 2012 Prof. Dr. Margarita Esponda 1. Teilklausur Name:... Vorname:... Matrikel-Nummer:... Ich bin mit der Veröffentlichung der Klausurergebnisse mit Matrikel-Nummer
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
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
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/
MehrAlgorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
MehrC++ - Objektorientierte Programmierung Konstruktoren und Destruktoren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue
MehrBeuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1
Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1 Parameter-Übergabe-Mechanismen in Java und in anderen Sprachen. 1. Methoden vereinbaren mit Parametern Wenn man (z.b. in Java) eine Methode
MehrAlgorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
MehrKlassenvariablen, Klassenmethoden
Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden
MehrEinstieg in die Informatik mit Java
1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
MehrAlgorithmen und Datenstrukturen. Organisatorisches. Christian Komusiewicz Ernst-Abbe-Platz 2, R3315
Algorithmen und Datenstrukturen Christian Komusiewicz Ernst-Abbe-Platz 2, R3315 christian.komusiewicz@uni-jena.de Friedrich-Schiller-Universität Jena Institut für Informatik http://users.fmi.uni-jena.de/
MehrFolienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Folienpaket 7 Themenschwerpunkte: Methoden in OOP 284 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Eine Klasse entwerfen Eine Klasse enthält folgende Information: Name der Klasse (ist auch der
MehrFakultät IV Elektrotechnik/Informatik
Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)
MehrAnweisungen zur Ablaufsteuerung
Anweisungen zur Ablaufsteuerung if-else switch while do-while for Ausdrücke Ein Ausdruck ist eine Folge von Variablen, Operatoren und Methodenaufrufen, der zu einem einzelnen Wert ausgewertet wird. Operanden
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung Anweisungen durch Methodenaufrufe Ausgabe auf der Konsole System.out.println(...); Benutzereingabe einlesen = scanner.nextdatentyp(); Mathematische Funktionen Math.sqrt( ), Math.sin( ), Math.random(),
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für
MehrKlausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 15 Pkt.) Was liefert
MehrJava Einführung Methoden. Kapitel 6
Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden
MehrEinstieg in die Informatik mit Java
1 / 17 Einstieg in die Informatik mit Java Methoden und Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 17 1 Überblick 2 Felder als Parameter bei Methoden 3 Feld
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]
MehrInhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme?
Liebe Leserin, lieber Leser 10 Kapitel i: Schnelleinstieg 13 Kapitel 2: Was sind Programme? 17 Was ist ein Programm? 18 Sprechen Sie Computer? 18 Von der Idee zum Programm 19 Von Windows, Fenstern und
MehrGrundlagen der Programmierung in C Klassen
Grundlagen der Programmierung in C Klassen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple address pointer reference structured integral
MehrInstitut für Informatik und Angewandte Kognitionswissenschaften
Grundlegende Programmiertechniken (»Programmierung«), WS 2007/2008 Übungsblatt 5 Präsenzaufgaben: 11, 12, 13 Hausaufgabe: 14 Aufgabe 11 STRING- UND OBJEKT-VERGLEICH String s1 = new String("Test String");
MehrAbstrakte Datentypen und deren Implementierung in Python
Kapitel 15: Abstrakte Datentypen und deren Implementierung in Python Einführung in die Informatik Wintersemester 007/08 Prof. Bernhard Jung Übersicht Abstrakte Datentypen ADT Stack Python-Implementierung(en)
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
MehrEinstieg in die Informatik mit Java
1 / 15 Einstieg in die Informatik mit Java Zeichenketten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick: Zeichenketten 2 Zeichenketten 3 Erzeugen von Zeichenketten
MehrProgrammieren Vorkurs
Programmieren Vorkurs Input/Output, If, Bedingungen Thole Goesmann, 10.10.2018 Über mich Thole Goesmann Studiere Mathematik und Informatik HiWi am Institut für Anwendungssicherheit gewähltes Mitglied im
MehrElementare Konzepte von
Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)
MehrKlausur: Informatik, am 11. Juli 2013 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:
Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 15 Pkt.) Was liefert
MehrKlausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: E Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 15 Pkt.) Was liefert
MehrTag 7 Repetitorium Informatik (Java)
Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium
MehrKonstruktor. public Rational(int i) { Zaehler = i; Nenner = 1; }
Konstruktor spezielle Methode zum Initialisieren bei Erzeugen eines Objekts mit new trägt Namen der Klasse hat keinen Rückgabetyp keiner angegeben: Compiler erzeugt Standard-Konstruktor (analog: Attribute
MehrAlgorithmen & Programmierung. Rekursive Funktionen (1)
Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden
MehrGrundelemente objektorientierter Sprachen (1)
Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte
MehrKlausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:
Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 6 Pkt.) a) Geben
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
MehrInformatik I: Einführung in die Programmierung. Übungsblatt 3. Abgabe: Freitag, 15. November 2013, 18:00 Uhr
Informatik I: Einführung in die Programmierung Prof. Dr. Bernhard Nebel Dr. Christian Becker-Asano, Dr. Stefan Wölfl Wintersemester 2013/2014 Universität Freiburg Institut für Informatik Übungsblatt 3
MehrInhaltsübersicht. Vorwort 15. Vorwort zur deutschen Ausgabe 22. Kapitel 1 Elemente der Programmierung 25. Kapitel 2 Funktionen und Module 203
Inhaltsübersicht Vorwort 15 Vorwort zur deutschen Ausgabe 22 Kapitel 1 Elemente der Programmierung 25 Kapitel 2 Funktionen und Module 203 Kapitel 3 Objektorientierte Programmierung 335 Kapitel 4 Algorithmen
MehrEinführung in die Programmierung
Einführung in die Programmierung by André Karge Übung - Operatoren, Methoden, Primitives 25. Oktober 2018 Einführung in die Programmierung WS18/19 André Karge 1/29 Notizen Standard Linux Befehle: http://images.linoxide.com/linux-cheat-sheet.pdf
MehrEinführung in die Programmierung Wintersemester 2008/09
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Funktionen Inhalt Funktionen - mit / ohne Parameter
MehrInformatik I: Einführung in die Programmierung
Informatik I: Einführung in die Programmierung 7. Albert-Ludwigs-Universität Freiburg Bernhard Nebel 31. Oktober 2014 1 31. Oktober 2014 B. Nebel Info I 3 / 20 Um zu, muss man zuerst einmal. Abb. in 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
MehrObjektorientierung. Programmierstarthilfe WS 2010/11 Fakultät für Ingenieurwissenschaften und Informatik
Programmierstarthilfe WS 2010/11 Fakultät für Ingenieurwissenschaften und Informatik Organisatorisches Im Web unter http://www.uni-ulm.de/psh Vorwissen Du kannst bereits Klassen als Typen mit statischen
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
MehrOOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik
Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik
MehrWS2018/ Oktober 2018
Einführung in die Programmierung Ronja Düffel WS2018/19 05. Oktober 2018 Rückblick Datentypen bool Zahlen (int und float) string Variablen Kontrollstrukturen Verzweigungen (if...: und if...else:) Schleifen
MehrKlassen mit Instanzmethoden
Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 3.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 3.12.07
MehrUmsetzung einer Klassenkarte in einer Programmiersprache
Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,
Mehr