3.2 Erzeugen von Datentypen
|
|
- Eugen Siegel
- vor 5 Jahren
- Abrufe
Transkript
1 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 k q0 bewirkt durch die Punktladung in px r 0, y 0 q wird beschrieben durch r px 0, y 0 q Punktladung p mit Ladung q 0 px, yq V k q0 r Dabei ist q 0 die Ladung im Punkt px 0, y 0 q, r ist der Abstand zwischen px, yq und px 0, y 0 q und k N m2 ist die Coulombsche C 2 Konstante. Unser Ziel ist, das Potential an verschiedenen Punkten der Ebene bezgl. mehrerer Punktladungen zu berechnen
2 Die API für Charge 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 Potential an bel. Punkt px, y q bewirkt durch die Punktladung, d.h. k q0 Abstand von px0, y0q zu px, yq Operation Charge(x0,y0,q0) Beschreibung eine neue Punktladung an Punkt px0, y 0q mit Ladung q0 c.potentialat(x, y) das Potential an Punkt px, y q bewirkt durch Punktladung c str(c) q0 in (x0,y0) zur Darstellung von c als String
3 In Python beschreibt man Datentypen durch Klassen. Die Klasse Charge muss die Werte q0, x0, y 0 für bel. Punktladungen speichern können (Konstruktur), für jeden Punkt px, yq das Potential, das von der Punktladung im Punkt px0, y 0q bewirkt wird, bestimmen können (Methoden), und eine Punktladung als string darstellen können (spezielle Funktionen).
4 # Die Datei charge.py mit der Klasse Charge. import sys, stdio, math def test(): c = Charge(0.51, 0.63, 21.3) stdio.writeln(c) stdio.writeln(c.potentialat(0.7,0.8)) 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 # Eine spezielle Funktion def str (self): text = str(self._ladung) + ' in (' + str(self._xkoord) + ', ' + str(self._ykoord) + ')' return text
5 3.2.5 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
6 3.2.6 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
7 3.2.6 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
8 3.2.6 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
9 3.2.6 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 = q self x0 y0 q0 Charge xkoord ykoord ladung
10 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 = q self x0 y0 q0 Charge xkoord ykoord ladung [return self] c Charge xkoord ykoord ladung
11 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) if r == 0.0:... Funktions-Aufruf return Anweisung return COULOMB * self. ladung / r 3.2.7
12 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
13 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 stdio.writeln(c) wird von Python stdio.writeln(str(c)) ausgeführt (etc.). Die Schreibweise mit Unterlänge wird dann benutzt, wenn ein Variablen- oder Methodenname nur innerhalb 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.
14 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 doppelte Unterlängen eingeschlossen sind mit self als erster Parameter-Variable 3. Testen der Implementierung
15 Bsp.: Visualisierung von Potentialen Wir wollen Punktladungen aus einer Datei einlesen (alle Punkte haben Koordinaten px, y q mit 0 ď x, y ď 1), die Potentiale aller Punkte mit Koordinaten 0 ď x, y ď 1 berechnen (das Potential in einem Punkt ist die Summe der Potentiale aller Punktladungen in dem Punkt) und graphisch darstellen, z.b. verschiedene Graustufen hohes Potential ist hell und niedriges Potential ist dunkel. % more charges.txt
16 Welche Datenstruturen wollen wir benutzen? Charge Picture zur Darstellung des Ergebnis-Bildes. Der Zugriff auf die einzelnen Punkte des Bildes ist dabei sehr einfach. Color InStream zum Einlesen der Datei.
17 Die API von InStream
18 potential.py # potential.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 Kommandzeile # und öffne die Datei mit diesem Namen. dateiname = sys.argv[1] eingabe = InStream(dateiname) # Die Datei enthält zuerst die Anzahl (int) # der Punktladungen, die folgen, # und anschließend die Punktladungen bestehend # aus den Koordinaten (x,y) des Punktes und # der Ladung a (alles float). # Die Datei wird eingelesen # und die Punktladungen werden erzeugt. n = eingabe.readint() charges = stdarray.create1d(n) for i in range(n): x = eingabe.readfloat() y = eingabe.readfloat() q = eingabe.readfloat() charges[i] = Charge(x,y,q) # Die Ausgabe ist ein quadratisches Bild mit # aufloesung*aufloesung Pixeln. aufloesung = 400 # Das Potential für jedes Pixel wird berechnet. # potentials ist ein 2d-Array, in dem die # Potentiale gespeichert werden. Es wird später # für die Darstellung als Picture verwendet. # allepotentiale ist ein 1d-Array, in dem alle # Potentiale gespeichert werden. Es wird später # zur Umrechnung der Potentiale in Graustufen # verwendet. potentials = \ stdarray.create2d(aufloesung,aufloesung) allepotentiale = [] for s in range(aufloesung): for z in range(aufloesung): x = 1.0 * s / aufloesung y = 1.0 * z / aufloesung v = 0.0 for i in range(n): v += charges[i].potentialat(x,y) potentials[s][z] = v allepotentiale += [v] # Sortiere das Array mit allen Potentialen. allepotentiale.sort() blocklaenge = len(allepotentiale) /
19 # Sortiere das Array mit allen Potentialen. allepotentiale.sort() # Die Potentiale im sortierten Array allepotentiale im ersten 256stel # des Arrays erhalten Graustufe 0, im zweiten 256stel Graustufe 1 # und so weiter, bis im 256sten 256stel die Graustufe 255 erreicht wird. # Die Länge dieser Abschnitte wird durch blocklaenge bestimmt. blocklaenge = len(allepotentiale) / 256 # Das Potential für jedes Pixel wird dargestellt. pic = Picture(aufloesung,aufloesung) # Berechne für jedes Pixel des Bildes die Graustufe. for s in range(aufloesung): for z in range(aufloesung): # Bestimme die Graustufe. gray = 0 while potentials[s][z] > allepotentiale[(gray+1)*blocklaenge-1] and gray<=254: gray += 1 graustufe = Color(gray,gray,gray) pic.set(s,pic.height()-1-z, graustufe) # Male pic auf dem Bildschirm stddraw.setcanvassize(pic.width(),pic.height()) stddraw.picture(pic) stddraw.show()
20 Die Umwandlung von Potentialen in Graustufen kann auf verschiedene Weisen dargestellt werden... Das erste Bild ensteht mit dem angegebenen Programm.
21 Turtle-Graphik Der Datentyp Turtle Idee: Bilder lassen sich mit einem Bleistift malen, indem man wiederholt eine Richtung einnimmt in diese Richtung einen geraden Strich einer bestimmten Länge zeichnet Bsp.: ein gleichseitiges Dreieck malt man durch: nimm Richtung 0 ein male einen 10cm langen Strich drehe die Richtung 120 nach links male einen 10cm langen Strich drehe die Richtung 120 nach links male einen 10cm langen Strich
22 Die API für Turtle Ein Datentyp zum Malen auf diese Art muss die Stelle und die Richtung speichern, eine Methode zum Ziehen eines Strichs und eine Methode zum Ändern der Richtung haben. Operation Turtle(x0,y0,a0) t.goforward(s) t.turnleft(d) str(t) Beschreibung eine neue Turtle an Punkt px0, y0q mit Richtung a0 Turtle t geht s Schritte vorwärts und malt dabei einen Strich Turtle t dreht d Grad nach links (x0,y0) mit Richtung a0 zur Darstellung von t als String
23 Was brauchen wir? Mittels stddraw.line(a,b,x,y) kann man einen Strich von Punkt pa, bq nach Punkt px, yq malen. Wir müssen also aus Punkt pa, bq, Winkel α und Strichlänge s den von der Turtle beim Malen erreichten Punkt ausrechnen. pa ` s cos α, b ` s sin αq s s sin α pa, bq α s cos α
24 turtle.py import sys, stddraw, math class Turtle: def init (self,x0,y0,a0): self._x = x0 self._y = y0 self._angle = a0 def turnleft(self,delta): self._angle += delta % 360 def goforward(self,stepnumber): oldx = self._x oldy = self._y self._x += stepnumber * math.cos(math.radians(self._angle)) self._y += stepnumber * math.sin(math.radians(self._angle)) stddraw.line(oldx, oldy, self._x, self._y) def str (): return '(' + x0 + ',' + y0 + ') mit Richtung ' + a0
25 # Der Test-Client liest einen int-wert n von der Konsole ein # und zeichnet ein n-eck def test(): n = int(sys.argv[1]) step = math.sin(math.radians(180.0/n)) t1 = Turtle(0, 0, 0) stddraw.setcanvassize(800,800) stddraw.setxscale(-0.2,1.2) stddraw.setyscale(-0.2,1.2) for i in range(n): t1.goforward(step) t1.turnleft(360.0/n) stddraw.show() if name == ' main ': test()
26 Erweiterung der API für Turtle Wir wollen der Turtle beim Malen zuschauen können und erlauben ihr, zufällige Schritte zu machen (und in anderen Farben zu malen). Operation Beschreibung Turtle(x0,y0,a0,steps,delay) eine neue Turtle an Punkt px0, y0q mit Richtung a0 ; das Malen eines Strichs wird in steps (default 1) Etappen zerteilt und nach jeder Etappe wird das bisher gemalte für delay ms (default 10) angezeigt t.goforward(s) t.turnleft(d) t.randomstep(s) Turtle t geht s Schritte vorwärts und malt dabei einen Strich Turtle t dreht d Grad nach links Turtle t ändert die Richtung zufällig und macht einen Schritt der Länge s
27 Die neue Methode randomstep(s) in turtle.py import stdrandom Class Turtle:... def randomstep(self,steplength): angle = stdrandom.uniformfloat(0.0,360.0) self.turnleft(angle) self.goforward(steplength)
28 Brown sche Bewegung Wir lassen die Turtle eine zufällige Wanderung über die Ebene machen. # drunk1.py import sys, stddraw import sys, stddraw, stdrandom from turtle import Turtle python drunk1.py trials = int(sys.argv[1]) step = float(sys.argv[2]) stddraw.setpenradius(0.0) t = Turtle(0.5,0.5,0.0,1,0) for x in range(trials): angle = stdrandom.uniformfloat(0.0,360.0) t.turnleft(angle) t.goforward(step) stddraw.show()
29 Wir können jetzt auch viele Turtles gleichzeitig malen lassen. # drunkn.py import sys, stddraw, stdrandom from color import Color from turtle import Turtle n = int (sys.argv[1]) trials = int(sys.argv[2]) step = float(sys.argv[3]) python drunkn.py stddraw.setpenradius(0.0) # Erzeuge ein Array aus n turtles mit # zufälligen Startpositionen. turtles = stdarray.create1d(n) for t in range(n): x = stdrandom.uniformfloat(0.1,0.9) y = stdrandom.uniformfloat(0.1,0.9) turtles[t] = Turtle(x,y,0.0,1,1) # Lasse sie alle für trials Schritte laufen. for t in range(trials): for t in turtles: t.randomstep(step) stddraw.show()
30 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
MehrDiskrete Modellierung
Diskrete Modellierung Wintersemester 2018/19 Martin Mundhenk Uni Jena, Institut für Informatik 22. Oktober 2018 Vorlesung Diskrete Modellierung Grundlagen der Programmierung mit Python (Teil 2) (Winter
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
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
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
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)
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.4 Zwei Anwendungsbeispiele
3.4.1 3.4 Zwei Anwendungsbeispiele Zum Abschluss dieses Kapitels schauen wir uns zwei Anwendungsbeispiele an. Ähnlichkeits-Test n-body simulation 3.4.2 Ähnlichkeits-Test Das Internet ist voll von verschiedensten
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
MehrVorlesung Abschluss-Beispiel: Page Rank
Vorlesung 05 1. Elemente des Programmierens 1.2 Grundlegende Daten-Typen 1.3 Verzweigungen und Schleifen 1.4 Arrays 1.5 Ein- und Ausgabe standard output standard input standard drawing 1.6 Abschluss-Beispiel:
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
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 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 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
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
MehrAufgabenblatt 3. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:
Aufgabenblatt 3 Kompetenzstufe 1 Allgemeine Informationen zum Aufgabenblatt: Die Abgabe erfolgt in TUWEL. Bitte laden Sie Ihr IntelliJ-Projekt bis spätestens Freitag, 24.11.2017 13:00 Uhr in TUWEL hoch.
MehrJAVA für Nichtinformatiker - Probeklausur -
JAVA für Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erläutere kurz die Bedeutung der folgenden Java-Schlüsselwörter und gib Sie jeweils
MehrAufgabenblatt 2. Kompetenzstufe 2. Allgemeine Informationen zum Aufgabenblatt:
Aufgabenblatt 2 Kompetenzstufe 2 Allgemeine Informationen zum Aufgabenblatt: Die Abgabe erfolgt in TUWEL. Bitte laden Sie Ihr IntelliJ-Projekt bis spätestens Freitag, 01.12.2017 13:00 Uhr in TUWEL hoch.
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
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)
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
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,
MehrPraktikum 4: Grafiken und Ereignisse
Praktikum 4: Grafiken und Ereignisse Aufgabe 1: Java Applikation Bisher haben wir in Java (ebenso wie in C) jeweils selbständige Konsole-Applikationen erstellt. Java wurde als Programmiersprache für das
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]
MehrOOP. Mit Zahlen rechnen. Henrik Horstmann
OOP Mit Zahlen rechnen Henrik Horstmann 15. September 2014 Inhaltsverzeichnis Inhaltsverzeichnis 1 Bedeutung der Symbole...1 2 Ein Taschenrechner zum Addieren...2 3 Die Benutzereingaben...3 4 Strings in
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
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
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
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
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/
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
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
MehrGI Vektoren
Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung
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
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
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
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
Mehr1 Eine Einführung in die objektorientierte Programmierung
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # """ # Created on Fri Jan 12 09:34:34 2018 # # @author: christianehelzel # """ import matplotlib.pyplot as plt 1 Eine Einführung in die objektorientierte
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
MehrVorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken
Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken Aufgabe 1.60 a) Welchen Wert erhält die boolesche Variable z in folgendem Beispiel? int i = 2, j = 5; boolean
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
MehrWS2017/ Oktober 2017
Einführung in die Programmierung Ronja Düffel WS2017/18 09. Oktober 2017 Rückblick Datentypen bool Zahlen (int und float) string Variablen Kontrollstrukturen Verzweigungen (if...: und if...else:) Schleifen
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
MehrTeil 2: Weitere Aspekte der Objektorientierung
Teil 2: Weitere Aspekte der Objektorientierung Klassenvariablen So wie es Instanzvariablen gibt, die zu einer gewissen Instanz (Objekt) gehören und deren Attribute speichern, so gibt es aus Klassenvariablen:
MehrPROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy
PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion
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
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
Mehr1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH
1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch
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 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)
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
MehrAnalyse der Klasse Konto
Klasse Konto erzeugt Objekte vom Typ Konto mit gleichen Eigenschaften mit gleichen Fähigkeiten Welche Eigenschaften hat ein Konto? Attribute Datenfelder - Konto hat eine Nummer - Konto hat Inhaber - Konto
MehrC# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services
C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften
MehrAusgabe:
Aufgabe 2.10: Schreiben Sie ein Programm, das zunächst die Quadratzahlen zu den Zahlen 1-10 mit Hilfe einer While- Schleife und danach die Quadratzahlen zu den Zahlen 3, 6, 9,.., 30 mit Hilfe einer For-Schleife
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");
Mehr1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden
MehrBasispruefung Herbst 2016/ Einführung in die Programmierung
Basispruefung Herbst 2016/17 0027 Einführung in die Programmierung Departement Informatik ETH Zürich Nachname: Vorname: Stud.number: Mit Ihrer Unterschrift bestätigen Sie, dass Sie folgenden Hinweise zur
MehrSFZ FN Sj. 13/14. Python 2 Turtle. GZG FN W.Seyboldt. Inf K1/2 Sj 13/14
SFZ FN Sj. 13/14 Python 2 Turtle 1 Turtle Die Turtle ist eine programmierbare Schildkröte, die auf dem Boden hin- und herlaufen kann und, falls der Zeichenstift abgesenkt ist, ihren zurückgelegten Weg
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
MehrProgrammieren I. Kapitel 10. Spezielle Features
Programmieren I Kapitel 10. Spezielle Features Kapitel 10: Spezielle Features Ziel: Besonderheiten von Java bei OO Konzepten statische Attribute und Methoden innere, verschachtelte und lokale Klassen anonyme
MehrOrganisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online
Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches
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
Mehr1 Stückweise konstante Funktionen (ca =10 Punkte)
Einführung in die wissenschaftliche Programmierung Klausur Seite 1/5 Name, Vorname, Unterschrift: Matrikelnummer: 1 Stückweise konstante Funktionen (ca. 4+2+4=10 Punkte) In dieser Aufgabe soll eine Klasse
Mehr1 Autorennen ( = 11 Punkte)
Einführung in die wissenschaftliche Programmierung Klausur 11.02.2016 Seite 1/8 Name, Vorname, Unterschrift: Matrikelnummer: 1 Autorennen (3 + 3.5 + 4.5 = 11 Punkte) Eine Physikerin beobachtet die Geschwindigkeit
Mehr6 Ein- und Ausgabe. Bisher war unsere (Bildschirm-) Ausgabe leichtflüchtig (
6 Ein- und Ausgabe Bisher war unsere (Bildschirm-) Ausgabe leichtflüchtig ( Drucken war hoffnungslos übertrieben); heute lernen wir, wie wir die Ergebnisse unserer Programme abspeichern können, um sie
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
MehrProgrammieren mit Jython Teil 4: Selektion und Zufallszahlen
Programmieren mit Jython Teil 4: Selektion und Zufallszahlen Lernziele Verwendung der if Anweisung: gewisse Zeilen werden nur dann ausgeführt, wenn eine Bedingung erfüllt (oder nicht erfüllt) ist. Erzeugung
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
Mehrzu 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
MehrEinführung in die Informatik - Teil 6a -
Eckart Modrow Felder mit dem JBuilder S. 1 Einführung in die Informatik - Teil 6a - Felder mit dem JBuilder Inhalt: 1. Bezug zum Unterricht: Anwendungen 2. Eine eigene Klasse Feldverwalter 3. Den Feldverwalter
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
MehrJava Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.
Java Übung Übung 3 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 2. Mai 2006 (UniDUE) 2. Mai 2006 1 / 17 Aufgabe 1 Umwandeln von do while in for Schleife. Listing 1: aufgabe3 1.java 1 public
MehrUniversität Paderborn Prof. Dr. Heike Wehrheim. Betreutes Arbeiten. Ab diese Woche: freitags, 14 16, E-Pool (während Tutorium Knopf) GPI, WS 07/08
Betreutes Arbeiten Ab diese Woche: freitags, 14 16, E-Pool (während Tutorium Knopf) 375 Wiederholung Klasse: class Klassenname { konzeptuelle Einheit der Modellierungsdomäne kapselt Daten und Operationen
MehrAufgabenblatt 1. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:
Aufgabenblatt 1 Kompetenzstufe 1 Allgemeine Informationen zum Aufgabenblatt: Die Abgabe erfolgt in TUWEL. Bitte laden Sie Ihr IntelliJ-Projekt bis spätestens Freitag, 03.11.2017 13:00 Uhr in TUWEL hoch.
Mehr1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster
1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster Aufgabe: Bearbeitungszeit: ca. 1/4 Std) Schreiben Sie ein "objektorientiertes" Programm ("CuB_05_1") für das Sammeln der Körner. Aufgabenbeschreibung:
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
Mehr1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden
Mehrfloat: Fließkommazahl nach IEEE 754 Standard mit 32 bit
Primitive Datentypen Fließkommazahlen float: Fließkommazahl nach IEEE 754 Standard mit 32 bit Vorzeichen Exponent 8 bit Mantisse 23 bit double: Fließkommazahl nach IEEE 754 Standard mit 64 bit Vorzeichen
MehrInstitut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen
MehrKapitel 3. Programmierkurs. Arten von Anweisungen. 3.1 Was sind Anweisungen?
Kapitel 3 Programmierkurs Birgit Engels, Anna Schulze ZAIK Universität zu Köln Anweisungen, Variablen Arten von Anweisungen Variablen Konstanten Höchste Zeit für ein Programm Gültigkeitsbereich von Variablen
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
MehrÜbungszettel 2a - Python
Vorsemesterkurs Informatik Übungsaufgaben Übungszettel 2a - Python Aufgabe 1: Python starten Teilaufgaben (a)-(c) beziehen sich auf das Arbeiten unter den Systemen, die auf den RBI-Rechnern installiert
Mehr1 Bizz Buzz Woof (ca =18 Punkte) def read file(file_in): fp = open(file_in, r ) l = fp.read() fp.close() return l
Einführung in die wissenschaftliche Programmierung Klausur 1. März 2010 Seite 1/7 Name, Vorname, Unterschrift: Matrikelnummer: 1 Bizz Buzz Woof (ca. 3+9+6=18 Punkte) In dieser Aufgabe sollen Zahlen codiert
MehrAufgabenblatt: OOP - Seite 1. (2.) Geometrie: Erstellen Sie eine Klasse CPyramid, die sich von der Klasse Square ableitet:
Aufgabenblatt: OOP - Seite 1 Aufgabenblatt: OOP II (1.) Gegeben ist nebenstehende die Klasse CPoint! (a.) Schreiben Sie eine Subklasse CPoint3 mit nebenstehenden Eigenschaften und Methoden und Testen Sie
MehrArrays. Einleitung. Deklarieren einer Array Variablen
Arrays Einleitung bisher jede Variable einzeln deklariert: 12 3 14 12 32 32 3 32 5 3 double sum; int count; ÿ Sie können Zweck und Aufbau von Array-Datentypen erklären ÿ Sie können einen Array korrekt
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1
Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1
Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
Mehr- EINSTIEG IN JAVA - (1/5) Datum:
- EINSTIEG IN JAVA - (1/5) Datum: 2.2 Wir lernen die Programmiersprache Java und entwickeln ein Computerspiel Schritt #1: Constructor-Methoden: Wir setzen die beiden Spieler in die 'Welt' (das Spielfeld)
MehrTeil VI. Objektorientierte Programmierung. T. Neckel Einführung in die wissenschaftliche Programmierung IN8008 Wintersemester 2016/
Teil VI Objektorientierte Programmierung T. Neckel Einführung in die wissenschaftliche Programmierung IN8008 Wintersemester 2016/2017 125 Was ist ein Objekt? T. Neckel Einführung in die wissenschaftliche
MehrPYTHON. 04 Funktionen II, Module
PYTHON 04 Funktionen II, Module Funktionen Funktionen enthalten Programm-Teile können später im Programm aufgerufen werden können beliebig oft aufgerufen werden (und man muss nur die Funktion aufrufen,
MehrInstitut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke
Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie
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
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
Mehr