Beruflich Dokumente
Kultur Dokumente
2023
mulzerginf. fu-berlin. de
Sprechstunden nach Vereinbarung (auch nachts
Scheinkriterien:
·
Übungsgruppe à2 Personen
·Prüfung Klausur
-120Minuten
-27. Juli2023 18-12 Uhr Hörsaal fall
-
10.10.23 10-22 Uhr Nachklausur Hörsaal 1b Haupt 3250%
Hilfe:1A4Blatt
Statt 1
Aufgabenblatt ->
1x Mitschriften in CATET (20 Punkte)
IImperative Programmierung (Pythow) vorkurs 18.04.23
Zwei
groe Ansätze bei Programmiersprachen:Deklarative Imperative Prog.
↓
Beschreiben das Programm tunsall
was
Funktionale Programmierung:
Styp) (Valuel
Zentrale Konzept:Ausdruck (besitzttyp & wert
Typ gibtan, welche Werte erlaubt sind.
Sammlung von
Definitionen, die Angeben, was in einem Schritt
passieren darf
Imperative Programmierung:
Beschreibe, wie ein Programm Schritt für Schritt vorgehen soll zB. Python.
·Paradigma:Beschreiben, ein
wie Programm Schrittfür Schrittvorgehen soll
Steuereinheit
(contral unit]
Recheneinheit
Archimetic logic Zentrale Prozessor
Das Programm
unit)
Takt Leber
Einheit [Central &die Werte befinden sich im
(Luck)
processing unith speicher.
I
Bus I Interaktion mitder Auenwelt
# Der Bus ist auch der von-Neumannsche-Flachenhals
Speicher Ein-/Ausgabe
(memory) I10
Rechnung im Rechenwerk
Manhattan -
Projektmitarbeit
-
Lese Schreib partim Speicher (Entwicklung Atombombel
-Durchführen eines Vergleichs ...
Film:Dr. Strange Love
EHarward-Architektur: im
So können mehrere Prozesse Parallel ablaufe
Bus der CPU ein weiterer
ist Speicher (Cachel)
ImperativeProgrammiersprachen führen diesen Zyklus auf einer höheren
19.4.23
Zentrales Konzept d. Imperativen Programmierig.
Zustand
·
(Configuration / State)
>Gesamtheitaller Speicher inhalte, Position der Ein-, Ausgabegeräte &
Inhaltdes Befehlszählers
Imperatives Programm
Folge von Anweisungen (Statement, Instructions)
Zuweisungen (assignments) a 5* 52
·Hatdie Form:Variable=Ausdruck z.B.:a 5=
oder =
+
↓Variable:Name für
Speicherbersich
Ausdruck:Wie in Haskell, hatWert& Typ
zB.:arithmetische Ausdrücke
Bookesch Ausdrucke
operationen auf zeichenketten
Funktions aufrufe, etc.
Achtung:bei der Auswertung eines Ausdrucks kann sich der Zustand ändern
↳der Ausdruck kann Nebenwirkungen haben (Seiten effekte
Iside effects)
Zaneisung:ZweiArten:
A
·
Speicher
·
werksemantik:
25.4.2023
Arten von Anweisungen:
1
Zuweisungen (Variable wird Wert zugewiesen) >a 547 =
=
(35)
c a
Referenzsemantik vs. Wertsemantik
+ + + +++ ++
+ ++ + 7
+
↳False
a 1
=
Weniger Flexibel L S
Typische
2 =2
4
a 1,2,3
=
= -
1
b a
=
b [13 100
=
=
1 Sprünge (Jumps]
2 Verzweigungen (branches)
3 Schleifen Loops
4 Unterprogramme
Sprünge:
Direkteste Artden Kontrallfluss zu ändern
Sprungmarke fortgesetzt
2.B... endlosschleife
5
3
x =
markeit y 7
=
endliche Beschreibung
z
=
7 eines unendlichen
go to marke
7
vorganges
beierfüllter
bedingung ausgeführt.
x 5 nicht endlos
sprünge sind verpöhnt (kösel!
=
immer
marke:2 =
* x- 7
noch sehr
eingeschränkt möglich verwendung von code
...
Programmiersprachen
aus zu
entfernen
Haupt actor:Edsgar 2. Diskstia
26.4.2023
Kontrollstrukturen:
In Python:
if [Bedingung] I
immer an 1. Stelle
E
elif unbegrenzt oft Möglich!
Befehl
Optional
elif Bedingung3] eli_=elsetif
Schleifen:(Loops
Führen ein Block von Anweisungen mehrfach aus (mitunterschiedlichen
Belegungen der Variable.)
ZweiArten:
Menge von Elementin
-
Zählschleife (for-Loops) e
wird typischerweise benutztum über einen Bereich zu iferieren
·
In Python:Für Variable im Persich (:foriin range (10):
print (a) tr
Befehle
--
(0,1, .
.,10)
Bereich kann sehr allgemein sein, meist foriin
10,9,-4)
·
range
sind es zahlen folgen, in Python, wird dies
Start ziel
durch range dargestellt immer
·
In unterschiedlichen Programmiersprachen sehen für Schleifen anders äus
Bedingungsschleife(radifraa
=>
loop
Anzahl der Interation wird durch eine
Bedingung gesteuerf
Infyth:while a 10
=
Schleifen:
Wichtiges Konzeptbeim Nachdenken Schleifen:
prod=prod* ;
i i 1
=
+
print (prod)
30.Ein
Ausgabeamm mitder Auenwelt" zu kommunizieren
·Auenwelt Menschen, Dateisystem, Netz, Datenträgern, Peripheri)
Wird in unterschiedlichen Sprachen Unterschiedlich gehandhaubt
Hängt von der Art der Auenwelt
Eingabe in Python:
input (test)
·
liet textund eingabe von der Tastatur
.
Ausgabe:print ("Text")
Text wird auf dem Bildschirm ausgegeben.
Iviele Möglichkeiten die
für Formatierung von TextentPoku)
Bei EIA
istmitFellern zu rechnen (durch die Auenwelt)
·Eingabefehlen, Hardware Fehler, USB-Stick, keinNetzl
Wiegel ich damit
(Fehlerhandling
·
um
~Programmabbruch, muss
explizitgetestetwerdee
3 Rückruf, Signal, unterbrechung
4
Schreibe Fehlerbehandlung, die
Exceptions (Ausnahment
ausgeführtwird & Fehler behebt
↳Strukturierte Möglichkeit,
Fehlerbehandlung Programm vom zu tunnen
↳von Python/Java genutzt
Syntax
Fehler
mit
try:
Block -
.
>exept: kein Fehler
finally:I
Finally istoptional
Block
"Hallo", True]
Reihenfolge
Elemente
wichtig
ist
a[start: ende:schritt)
/ I
inklusiv exklusin
Listen:[x] veränderbar
Tupel: (X)
sind
sind nichtveränderbar &sonstgleiche Funktion.
Nachtrag:
Indexfür das Erste Vorkommen eines Elemente herausfinden.
a 2, "Haller", 2, 1, "West"]
=
a.index)"Welt") (=4)
Container:
<Prozeduale Programmers)
Haben viele Namen:Funktion, prozedur, Methode, Subroutine, unterprogramm
Beispiel:
def begruesse()
Print ("Guten Tag")
print?"Herzlich Willkommen zu ALP2")
Die Parameter bei der Definition der Funktion Lien formale Parameter
Beim Aufruf der Funktion, werden die Formalen Parameter an die tatsächlichen
Parameter Gebunden.
Es kann zur
überdedung kommen (variablen gleicher name zB.b:56 4) =
global =
xNach Funktionsanfraf bleibtVariable
sollte aber vermieden werden
erhalten
kann zu
Nebenwirkungen führen und sollte Sparsam
eingesetzt werden
Problemstellung orientieren.
Das istaber in
imperativen Programmiersprachen, oft nicht sehr effizient,
weil Funktions aufrufe, tener"sind.
Aufgaben:
If[Bedingung]
then I Block
If[Bedingung]
then I Block
If[Bedingung]
then I Block
Mensakartenproblem:
·Karte im Hörsaal gefunden
·
BE
Lehen zur Mensa
·
·
Maximalen nutzen erziehlen, BE ausgeben, jedes Gerichtmax 1x
·In der Mensa gibtes Speisen 1,2,...in mitPreisen P, R...., n in t
E
=
·
·Humus 2E Pz=
E P5
Suppe
·
2 =
Beschleunigung:Gedächtnis technik:
Speichere Funktions die schon Stattgefunden haben in einem
aufrute
Wörterbuch. Führe Funktionen nur aus, wenn noch kein
Aufrut stattfand.
10.5.2023
Iterative Lösung:
Idee:Baue Systematisch eine Tabelle allen
mit Funktionswerten.
Es gibtein für
Funktionswert jedes bzwischen 0 und b und
a[n][b] True =
g.dw. b 0
=
·Budget B
·Preise P,z, ..., Pu
·
a zweidimensionales Feld
a[i][b] Kann man aus
Speisen it, ..., n ein Mann von Speisen
auswählen, die seine be kosten,
3
a abcdef
=
-Eindimensional
0 + 2345
3 zweidimensional
*
E
BudgetB Imperativ
:2)D
0
Bsp.:B 4
=
Speise
dynamisches Programmieren".
Es gibt viele Varianten des Mensakartenproblems, welche sich ähnlich
Lösen lassen.
?
Der Algorithmus füllt eine Tabelle der Göe(n+1) (b+1) aus.
Bsp.:
direktverglichbar 1 <2
g Xz...Xn-
*
Bsp.5
A, Xo, X2,y,X3
·
Schneller Suchen
·
zwischenschrittfür andere Problem, mit sortierter Liste leichter
Uns interessiertdie Sortierte Reihenfolg
zB. beitreisen
17.05.2023
Suchen & Sortieren:
Name
↳Schlüssel:Martikelnummer
Eintrag:StudentX...
wenn die Liste beliebig ist, wissen wir uns im Schlüsselfall alle
Eintrage anschauen a schritte
noch durchmischtist,
Also:wenn die Liste wesentlich schwerer
geht es
Warum:(Binäre Suchel
sei kam der Schlüssel in der Mitte der Liste
13 km 2 K
nur Hälfe
Fall 3: kmck => liste Rechte seite weiter
für Hälfte
[Log(n +
11]
17.5.2023
.
Wir nehmen das nächste Elementund fügen es an die
richtige stelle in die bereits sortierte lists ein.
Frage:Wie implementiert
man das?
nicht
effizientimperativ?
Frische liste a a 5762749
=
0,1 ... n - 1
Index is -
Lassen; in der Liste nach links bis es an der Richtigen stelle ist
5Untertic in 2 listen
(i) alle Elements (x
Las-Vegas Algoritmus
Algorithmus benutztden Zufall. Das Ergebnis das
ist gleicht also:
laufzeithängtab r.
zufall.
24.5.282]
einspeichern.
Datenstruktur für Heap-Sort:
Piraritäts warteschlange (Max-Hemp)
limplementieral
Heup-fortverwendeteine besonders effiziente Artdiese Operation
nämlich
umzusetzen, Binären Max den Hea
Binären Max Heap:
·
3
~Wurzel grütes3
100e
n Elmente Element MaxHeap
-9 -kante
-
00 90
x1
Kinder
->
-
- Eigenschaft
199,90 70 70
00000 Blatt ok d
Alle Elemente bis auf die letzten sind roll besetzt.
Die Letzte Ebene istvon links nach rechts besetzt.
Elements sind in den Knota gespeichert.
Elemente müssen die Max Heap Eigenschaft erfüllen.
↳ Für alle Kanten gitt, Schlüssel der Elternknoten Schlüssel in Kind Knoten
·100
- W Aufgabe:füge 99 ein
-99 70
4
* / W
90609980 70 58
zu
e
Idee:setz 99 an und lasse sie nach den Wandern
die nächste freie Stelle
bis Max Heap Eigenschaft erfülltist. (bubble up)=(Seitenblase)
Delete Mar:Entferne Element von der Wurzel, gibt es zurück
schrlibe hinterstes Element des Max-Heaps an die Wurde und
lasse es nach unten wandern (Bubble Downl
beiden Kindern, vertausche
vergleich mit
↳
den
mit gröten Kind, fall, schluss
Der CLue:
Diese Besondere Struktur des Max Heaps erlaubteine sehr elegante und
effizienteImplementierung,
0
0 0123456789101112131415
1 I20
38405-ob Elternknoten bekommen:((kind-1):2)
cosés de on
↑
0nj
Speichern der Elemente der Knoten in einer Liste, Wurzel beiIndex O,
dann von unten und von
oben nach links nach rechts, sie:index,
eines Knotens in der Liste, dann lassen sich die Indizies der Eltern- und
Kinderknoten wie folgt bestimmen:
·
Parents (i) (i 1):2
= -
rightchild(i) (2.i) 2
= +
30.05.2023
Binäre Heaps nor
3 g
zo
Max-Heap-Eigenschaff
Elemen t im Elternknoten?Elementin kindknoten
·
Bubble up & Bubble down
als liste.
ImpliziteDarstellung
def parent(i):
return (i -
1)/2
erfüllt ist.
def heapSat(al:
#Baue Hea
fori in range (1, (en(a)):
bubble Up (a, i)
a [2,7,6,4,9,75,70]
=
Leapsort(a)
swap (a, 0, il
bubbleDown(a,i)
30.05.23
Analyse von Algorithmen:
Frage:Wie gut istein Algorithmus?
1
Eingate Algorithmus muss korrektsein.
endlich vielen Schrittene
siericgindenglichfeingabe,
Er nach
Laber es
gibt das Problem, der Stabilität, aber das istnichtimmer der Fall)
800
Einband-Turingmaschine
·
·Mehrband-Turing maschine
.
X -
Kalkül
Beliebtes
Modell für Sarticalgorithmen:
Vergleichbasiertes Modell
Primitive Operationen:
.
Kosten:
Vergleich:1
&Beliebig
-
Vertauschen:O
·Rest: 0
Vergleiche.
31.05.23
Für welche Eingaben Analysieren wir den Algorithmus?
Antwort: Alle! (Worst-Case Analyse) -
Eigenschaftdes Problems.
EB. Länge der zu sortierenden Liste;Anzahl der Ziffern der Zahlen
·Budgetliste beim Mensakartn- die in995bestimmt
problem. Gröter gemeinsamer Teiller"
Wir stellen die Langzeit als Funktion T:(-> dar
3 worst-Case -
isj
2354672345
7
is
Vergleiche:2 3 2 3 3 3 T(3) 3 =
def isort(a): 31.5.2027
Algorithmus:
for i in range(len(a)):
# füge a[i] an der richtigen Stelle in a[0], ..., a[i] ein
j = i
while (j > 0) and (a[j] < a[j - 1]):
swap(a, j, j-1)
j = j - 1
While-Schleife innen
ausgeführt
Das hängtdavon ab, was
genau
die Eingabe ist.
Aber wir können sagen, dass dieser Vergleich höstens i- mal darchgeführtwird.
Bestell in Schlimmsten Fall haben wir histens
=4-)n - Vergleiche 2
=
Diese Anzahl
Vergleich kann wirklich
passiern:
Eingabe:n n-T n-2... 1
ZB. Liste von hinter aufsteigend
Also:T(n) als
- Eingabe
=
Bemerking.
Diegenaue Laufzeitfunktion T(n) kann sehr schnell kompliziertwerden.
6.6.2023
0 -Notation
worst-case-Analyse von
Algorithmen:
Bestimme die Funktion T(n):X->X
welche
fürEingabegröe
jede der Maximalen laufzeitausgibt, die der
in
Algorithmus
Nachteil:Starke Vereinfachung der Wirklichlait
Bsp.:T(n) =
2 n2 +2 -0,1 logn + 2400
↳Dominater Term, weil grüte Laufzeit
T(n) 102g(logn) 5 0,1 logn
=
- +
↳
Dominater Term
T(n) =
0,001.24 1000.00
+
Dominanter Term
3c 0 7n.EN
=
n no-f(n) c.y(n)
= =
Grund:c 6 =
40 100
=
=Im In+
11
+
t ein =6.n
E(Logn) >
Logarithmische LaufmitzD. Binäre Suche
o (m) >
Sublineare LangzeitzB. Suche in einer unsortierten lists mit
Quantencomputern
⑦(n) ->
lineare (aufzit zB. Suche in unsortierte liste
alle Elements d. Eingabe betrachten
⑦(nlogn) -> Linearimetische Laufzeit
⑦(n!) -
2
Merge Sort:
Sei T(n) die worst-case-laufzeit von
Mergesort.
Potenz ist.
Nimman zur
vereinfachung das n eine zweier
+(1) 0
3
=
E 88
·
-ein
1111... O Vergliche
in 1111
n, ,Fo,,...
wen =
->
7.7.2027
3 QuickSort
lagzit:
Deterministisches Quicksort:Pirot element:hinterstes Element
Pech:hinteres Element
gröte Element/kuingte Element
=
T(0) 0
=
T(1) 0 =
Bild:
L 3
Vergleiche
"
M
- E
E
n 7
-
n - 1
vergleicht n (n 7) (n 2)-
+
- + -
+
.
20
. + +
I n -
2 11
n-Ebenen n-a A
-
3 1)
* n - 4 L
Lumgekehrte GanB-Summe
n 3
0
:
-
=O(n)
i
⑧ -n
"
⑧
Glücksfall:Hinterstes-Median (Mitte der Sortierten Reihenfolgel
Im Glücksfall haben wir
folgende Rekursion
BTs OCulog
T(0) 0
=
+(1) 0 n)
=
=
i(n) 2.
=
T(E) n
+
=
+
n n +
-
nt
- n 1
+ -
T(h 2)...
+ -
2) n (n 2) T(n 3)...
=
+ - + -
7.6.2013
NichtKlausch relevant
Randamisierten Quicksort:Wähle Pirat Elementzufällig:
T(0) 0
=
↑(-1) 8
(ET(k 1) T(n k))
=
T(n) n
=
- +
+
-
um
-
+ +
= n
.k) 1
+
+
=n =
+
T()
Das heitdie Rekursion lässt sich schreiben als
T(0) 0 =
+
↑(1) 0 =
+x n
=
Es gilt:
T()TK In =
n +
n.T() n ETCK
einer-mettig
2.
= +
-
Subtrahieren
3 nTi)
-
-
-
(n-c). T(n-2) c (n-2) 2.T(-1)
=
+
Also: nT(n)
2n =
-
1 (n 11-
+
+ +(n -
)).n(n 1)
- +
h(n+2 1 +
+
n
Also Rekursion
=
T(0) 0,T() 0
=
=
) ood
13.6.2]
Untere Schranke für Vergleichsbasiertes Sortieren:
,
Xn
123 12345
n
+2 x
xy
zX5
*
0
-richt zusammenhängenderGreer zusammenhängendeine
an
Stellex;
I In was sich hier ein
553Datgrimus
wei nicht
=
-
13.6.23
Tatsächlich gilt
U(n) (nLoga)
=
Beweis:Existiert Sortieralgorithmus A
und Eingabegröe n.
xx An Xo
Ja vein Ja Nein
↳ weiter neue
Verzweigungen, dann so weiter
in in s
↓x3
sy ein -
tycxy ⑭W
-
(a/
*1,Xg,xz
13.6.23
DamitEntschichungsbäum Funktionieren kann, müssen alle Sortier reihenfolgen vorkommen?
als Blätter min. 1X
Entscheidungsbaum istBinärbaum
Dh. Ebenen- höchstens 2 Blätter
Also:Ein Entscheidungsbaum besetzt mit ein Blatt, für das Mlnlogn) verglich
nötig sind
·
Merge-Heapsortsind am
effizientesten.
Nur für Vergleichsbasierte Verfahren
14.6.202]
Programmverifikation:
Frage:Wie kann ich wissen das mein Programm Korrekt"ist.
Frage:Was heitkorrekt?
Antwort:Es gibteine Präzize Spezifikation, diegenau festlegt, was das
Programm tun soll.
Verschiedene Möglichkeiten
Wir konzentrieren uns auf Folgende:
.
·Vorbedingung (Pre-Condition)
(Post Condition)
Nachbedingung
·
-
Nachbeding entspricht.
zB. Spezifikation fürs Wurzelziehen:
Vorbedingung as [avariable, Float]
Float:Geitkommazahl
Nachbedingung bib a
=
[b Variable, Float]
None
=
14.6.702]
Formalisierung:
Die Tatsache,dass ein Programm S eine
gewisse Spezifikation erfüllt
wind mithilfe von so genannten Programmformeln" formalisiert.
Schreibweise:EPS [Q3
Verbedingung -Nachbedingung
Programme
abschitt
Folge/anweisung
wir
sagen jetzt die Programmfame [PYSSQ3 ist ältig,gaw. gilt
für jeden Zustand der die Vorbedingung P erfülltgilt
wenn S
wir
sagen auch [P3S[Q3 gültig gaw. S istPartiellkorekt für
SpezifikiertP, Q
BSP.:{x > 03 xx = -
v3xx 13 -
gültige Programmformel
2 x 303 xx
=
-
1[x =03
gültig, nur wenn int
x ist.
{xx3x x 10(x)03 =
-
[x203 while x! =
7 x x+1
=
9x=73
Formales Beweissystem
gültig sin
Sequenzregeln
[P] SER3, {R3 S-[Q3
[P3 S, S2 [Q3
Hoare Kalkül
Ziel:Definier ein
logisches System um die Gültigkeitvon Programmformeln
nachzuweisen.
Axiom
·
& Schlussregeln
Schlussfolgerung
Bedeutet:wenn voraussetzung 1 bisk erfülltsind, dann giltauch die
Schlussfolgerung.
1 Sequenzregel:Hintereinander ausführung von Anweisungen
{03: Nachbedingung
2 IF-Regel: SB3 Bedingung
=
EP3S {Q3
Goldbach
Vermutung:Gerade zahlen Summe zweier Primzahlen.
=
Lendlose Schleifel
20.06.202]
Axiom:(Schlussregel ohne Vorraussetzung, immer Gültig)
· Achtung,
un i
string G Variable Ausdruck so istes
ersetze jedes Korrekt,man muss umderlen.
vorkommen von
in Q durch E
*
{x213 xx
= -
3x =0]
Silsei Wi
um zu
zeigen
{y21 1y2537 y 15x221y = 53 = +
Nach
zuweisung gilt:
{y 1 = 2ny253112x231y=53
+
- I Da nachmuster
{y= 1 1y=53 einsetzen Erst das istes lautAxiom
z
-
x
=
-{y B1 =
z A3
=
1 1 (1B1
= ( =
= A3=
1
= E
3x B1y A3
= =
{y B1z A3 x y2xB1z A3
= = = =
= Beweis
im Hoare-kalkil
·
(x B1z 13y z
= [x B1y A3=
= = =
Wenn
sequenzregel giltauch:
·
Nochmal
sequenzregel anwenden:
{y B1 x A3z x,xy,y z3x B =
y A)
= =
1
= =
=
=
r.q 5 10)
S
x-(x
= = +
while q:
S S
=
q
-
r r+ = -
1
{x r.q=
5152015
+ -
q3
Eigen:01q0br s1sx)3(A)
Müssen 0,3
= =
x
(x r.q
=
+
oder
qs=sq,
Ex
s.1
=
rürzu
2x r .q s15201scq3
=
+
3
03
508.q1 203( x ) 20 0n x
1 =
(1) -
30
r.q1x 03
{x r.q x
1x203
=
=
+
=
Songo Nicht Formal!
S A =
2x
r.q 515203
=
+
21.06.2073
5x = 01q>0)
r0
=
s X =
while s2q
1. En
[x
r.q 15201scq3
=
+
Schon spezifiziert
\x201903
r0
=
SX
=
{x r.q s15-0}
=
+
TODO:
{x r.q
=
5 15
+
03
-
while :B
s S = -
q
r r 1 7B
s1s=0
+
=
-
(x rq
=
+
Sie
spacis
(while)
↑
E
-
-{x (r 1).q
=
+
5s =03
+ {x
r.q
=
s 152
+
93
↳ess20
W
{x r.q q 515203
=
+ +
UK1 21.06.2023
Vorkurs Java
. Wie Pythonist Java eine Imperative Programmiersprache
·
1. Unterschied:
-
public class JaunBeispiel d Classen mitGrobuchstabe
public static void main
(String [] args) {
system. OutprintInl"Hallo Oop");
3
3
2. Unterschied:
3
VK1 21.06.2073
3. Unterschied:Syntax
Sowohl Java als auch Python Programme bestehen aus einer Folge von
Anweisungen.
Aber:Python istlayout sensitiv, javanicht. (bedenktbei Python spielen herzlichen
eine Rolle, beiJava nicht.)
publicbice,tatsaBeisting angst d
system. OutprintInl"Hallo Oop");
int is Blöcke markiertdurch
j:Il Bla
(** geschweifte klammern
i
5jj 6;
= =
3
3
IFin Java
public class JavaBeispiel
public static void main
(String [] args) {
system. OutprintInl"Hallo Oop");
int is Il Bla
j:
(**
i 5jj 6;
= =
if (i < 5:
bei 2 Anweisungen
publicbice,tatsaBesking angst d X
if (i< 5.{
system. out print In)";istgröper als5";
system, putprint In ("Hinter if";
↳ else
Faureine
3 System. out.print In("; ist 5."; Anweisung,
3 daher keine E}
While-Schleife:
public class JavaBeispiel
public static void main (String [] args) {
system, out.IprintInl"Hallo Oop");
int is Il Bla
j:
(**
5jj 6;
i = =
while (i<10)
system. out. print ln(++i;
3
3
For-Schleife:
public class JavaBeispiel
public static void main (String [] args) {
system. OutprintInl"Hallo Oop");
int is
j:Il Bla um erhöht (zählen
i 10;j 6
=
=
-
L
wer me
bevor die bedingung
For schleife
starfet
Unterprogramme
·
Ein/Ausgabe
↳Wesentlich unhandlicher all in Python
Datentypen in Java:
3
int, long =ganzzahlen lint=32bit, longs gröer)
=
2.) von
Anfang an gröe des Felder festlegen Igrie=Anzahl d. Elementel
(kein insert(delete)oppent)
zB. int[] feld new
=
int 110];
oder int23 feld new
=
int4.3 20,1,2,5,13;
28.6.2023
Objektorientierte Programmierung:
Problem:Wie entwickeltman Software im groen Stil?
Ziel: Beherrschbarkeit
·
übersichtlichkeit
wartbarkeit
Erweiterbarkeit / Wieder verwendbarkeit
·
Modul Studi Idee: Fasse Daten & zugehörige Funktion als Einheitauf
floatberechne Schnitt (Studi.S.) Statteinem Modul Studi, das aus einer Sammlung
·
von
Robjekt
stud: 1 stud: 2 stud: 3
28.06.23
Ein Objekt ist eine
Sammlung von Daten (Attribute, Eigenschaftl
und methode (Funktionen, die aufDaten des Objekts operieren)
Identität:selbst, wenn alle Attribute übereinstimmen müssen objekte nicht gleich sein.
Objekte helfen, Programme besser zu Strukturieren undEntitäten"der realen Welt
im Programm zu modellieren
Sie sollen Loch übersichtlicher & verständlicher machen.
Eine klasse isteine vorlage für ein objektund deklariert die zugehörigen Attribute
und Methoden.
04.07.2023
stat: c:
·
vor Methoden:kann ausgeführtwerden ohne dass ein Objekt dieser Klasse erzeugt
werden muss.
Unterordner in Java:
source
/Tjara
Main. java
E
importPackagename.Klassenname;
Package Packagezame;
Zugriffsmodifizer:
-
konstruktor:
·
Methode die beim erstellen eines Objektes ausgeführtwird
kein Rückgabewert
·
Syntax:public classenname(){
3
5.7.2825
Call-by-reference VS. Call-by-Value (Javal
Methode bekommt Methode bekommtLokale test (intx)
eine Referenz
auf Kopie des Wertesd. Variable (Studix)
den Speicher zum
Parameter original
E !ACHTUNG!
xyz Kopie
x Y Keks (x,Y)
-* z
-2
Manchmalvermischt sich beides
wenn zB. Name geändertwird,
Funktion (x) ändert es sich überall.
Vererbung:
Beziehung zwischen klassen
·
·
Unter Klassen, erbenleiten ab von der Oberklasse
Die Unterklasse hat die Attribute von Methoden der Oberklasse und ggf. mehr
↳ class unterblasse extends oberklasse
So schreiben
klasse -
Mensch
vor. String name schat Prof.:name, gebjahr, fach
erber int gebjahr Studiename, gebjahr, noten
erbt
von
Studi Prof
int[] noten
string fach
Das was explizitim Code steht Der Typ den das Konkrete Objekt tatsächlich hat
Casten
Objekt-typen umwandeln, wenn sie Typkompatibel sind.
Test ob ein Objekt vom Typ einer bestimmten Klasse istobi. instance classe
Schreibtman 8 Overside über eine Methode wird überprüft ob es mit Oberklasse problemgibt.
5.7.23
Mehrfachvererbung:
klasse -
Mensch
vor. String name
erber int gebjahr
erbt
von
Studi Prof
int[] noten
string fach
I
Herbt von von -
erbt
möglich
Nic↳t
Mg Fach
in Java
Interfache:
·DefiniertSchnittstelle
Enthalten keine Attribute Class Tutor extends Studi implements Lehrender
·Enthalten keine Implementierungen v. Methoden
·
Enthalten Signaturen, von Methoden die Unterklassen implementieren müssen
public interface None
zulassung fu-berlin. de
Formel
uh! bei 0-Notation anschauer für
11.07.23
Abstrate Datentypen in Java:(ADT)
4 Beispiele:
Stapel/Keller
·
·
Schlange
·
Z-köpfigs-Schlange
·
Wörterbuch
1
Aufgabe:Implementien einen LIFO-Speicher
Das heit:vir möchten folgende Operationen unterstützen
POP
-zuletztEingefügt
·is
Empty: (Ist LIFO-Speicher leer oder nicht?
is Empty is EmptyM
B.:
z
echi 13x 10
C Liefert11 12 72
, (12) 11 13
push(3)
Po >Liefert17 70 11
POP
>
Liefert72
> liefert10
pop
is
Empty >Leerer Stapel
In Java setzen wir die Spezifikation eines als
ADT Interface um.
1;
=-
imEmper
blücke
new
ram
abgelegt
return result;
3 else {
throw new Exception ("Stack is Empty"
zB.: ...
Size -2 public boolan
return top
is
==
Empty () {
-
3
8.................. public staticvoid main (String [] args)[
size-L mystack (Integer testStack new
=
Arraystack c
Integers (10);
for linti 0;ic 9;=
=
itt) {
teststack.push(i)
3
while siteststack. isEmpty () {
system. Out.printIn (test
Stack.pop());
1. mit einem Array, wir speichern die Elemente 3
3
0 - SIZE-1
in einem Array. 3
Stapel wächst ?Links nach rechts
wir haben ein Index top, der das letzte Element
anzeigt.
12.7.2023
3.
Möglichkein: Einfach Verketteteliste (Date:Linkedlist Stack)
Für jedes Element im Stack erzeugen wir ein Objekt, das dieses Elementspeichert,
wir verwenden verweise, zwischen den Objekten um die Reihenfolge der Element
abzubilden.
nes
so lange wit
methode (s) (4) (5) (6) ...
main
to.-Gabage-Collector
head
Mimant, äche))) -
enqueue (X)
·
Empty
head > - -
I
tail
18.7.23
Abstrakter
FiFO-Speicher
Datentyp:Warteschlange:
am
implementiertmithilte verkettete
listen
-(1) w
e(2) w
9,1,2,3,4
↑C
12,44-40123401234
-
44
11213141112131415
↑I R IR
Ei Front 234
0 +
,
5 ↑Z / ↑↑
E S
Liste wird als her
erkannt.
4 3
a
e
Java:Modulo wird als to implementiert.
Abstraler Datentyp:Wörterbuch (Dictonary):
In Python teil der Sprach definition, in anderen Sprachen nichtenthalten.
In Java selbstimplementieren.
·
Sonderfälle
↳Einfügen/lüschen am
Anfang/Ende der liste
de
> --> I I
I C I S I 3
↑
Alles wird
zwischen
-
,
eingefügt.
Die Tatsächlichen Knoten befinden sich immer in der Mitte, alle Sonderfälle
fallen beidieser Technik weg.
Binärer Suchbaum:(Referantfürs nächste Semester NICHT Klansurrelevant.
Binäre Bäume
·
verzweigte Datenstruktur, die rekursic definiert ist
entweder Gerer Baum
↳oder ein Knoten,genanntWurzel) +1 linker Kindbaum +1 rechter Kindbaum
0
In den Kurten können Informationen gespeichert werden
Binärer Suchbaum ist ein Binärer Baum, knoten speichern (Schlüssel/Wert) Einträge
Folgende Regel muss beiallen Knoten gelten:
·
alle Schlüssel im Linken Kind Baum Schlüssel in der Wurzel alle
Schlüssel in rechten teilbaum.
- Objekte
5o
-- Null-pointer /null-Zeigen
*
I ,