2. Differenzierung anhand von C++ und JavaScript:
Compiler vs. Interpreter
Typisierung !: Dynamisch vs. statisch
Variablen: Deklaration vs. Initialisierung
Paradigmen: funktionale vs. Objektorientierte
Programmierung
Objektorientierung: Klassen, Kapselung, Geheimnisprinzip
Hardwarenahe Programmierung: C++ und Zeiger
Gemeinsamkeiten: Auswahlanweisungen und
Kontrollstrukturen
Schichten-Architektur: MVC
WS15/16: Programmiersprachen und ihre Unterschiede
4. Datenstrukturen
Stack / Kellerspeicher
Queue
Liste
Baum
Traversierungsarten
Preorder
Inorder
Postorder
Levelorder
Such- und Sortieralgorithmen
Themenüberblick „Algorithmen und Datenstrukturen“
5. Datentyp:
Bauplan für eine Variable (benannte Speicherstelle im
Arbeitsspeicher des Rechners)
Legt fest, welche Operationen mit einer Variable möglich sind
Bestimmt die interne Darstellung (Repräsentation) der
Variablen im Rechner
Z.B. bool, int, float, double, unsigned int, etc.
Algorithmen, Datenstrukturen
8. Typische Stackoperationen / Schnittstellen
push(x, s)
legt ein Element x auf den Stack s
top(s), peek(s)
liefert das zuletzt auf den Stack s gelegte Element (ohne das
entsprechende Element zu entfernen)
pop(s)
entfernt das zuletzt auf den Stack s gelegte Element und gibt es
zurück
isEmpty(s)
gibt an, ob der Stack s leer ist
14. Um die Liste zu durchlaufen:
Beginn beim ersten Element („Anker“ für den Beginn der
Liste)
„next“ zeigt auf das nächste Listenelement
Letztes Glied der Kette: next-Zeiger = NULL
Um wieder auf das erste Element zugreifen zu können:
anfang-Zeiger auf das erste Element der Liste
Hilfszeiger auf innere Elemente: cursor
Einfach verkettete Liste
15. Element Einfügen:
Ursprüngliche Liste:
Liste nach Einfügen von Element „mat“
Einfach verkettete Liste
bat cat sat vat NULLstart
bat cat sat vat NULLstart
mat
16. Element Löschen:
Ursprüngliche Liste:
Liste nach Entfernen des Elements „cat“
Einfach verkettete Liste
bat cat sat vat NULLstart
bat cat sat vat NULLstart
17. Vorteil:
Elemente lassen sich sehr schnell am Anfang der einfach
verketteten Liste einfügen
Nachteil:
Über jedes einzelne Element muss iteriert werden
Einfach verkettete Liste
bat cat sat vat NULLstart
18. Charakteristika: Jedes Element verfügt über
Einen Inhalt
Einen Zeiger auf das nachfolgende Element
Einen Zeiger auf das vorhergehende Element
Vorteile
Möglichkeit, vom Ende der Liste zum Beginn zu iterieren
Schnelles Löschen und Einfügen von Elementen
Nachteil
Speicherplatzbedarf durch zweiten Zeiger erhöht
Doppelt verkettete Liste
bat cat sat vat NULLstart
Algorithmus: Eindeutige Beschreibung eines endlichen Verfahrens zur Lösung einer bestimmten Klasse von Problemen
Komplexität eines Algorithmus: Bedarf an Ressourcen (i.e. Rechenzeit und Speicherplatz)
Güte eines Algorithmus:
Qualität der Ergebnisse
Laufzeit / Rechenbedarf des Algorithmus
Einfach verkettete Liste
Liste Folge von Elementen; jedes Element = Teil einer Kette
Jeder Eintrag in der Liste verfügt nicht nur über seinen Inhalt, sondern darüber hinaus über einen Zeiger auf das nächste Listenelement:
Extensivform
Knotenbeziehungen Achsen:
Elternknoten (parent) – Jedes Element verfügt über einen Elternknoten.Ausnahme: ???
Vorfahre (ancestor) – Elternknoten von KnotenBeispiel: Der Knoten „2“ ist Vorfahre des Knotens „3“.
Kind (child) – Untergeordnete KnotenBeispiel: „3“ ist Kindknoten von „2“.
Geschwister (siblings): Knoten mit gleichen Elternknoten sind Geschwisterknoten.Beispiel: Der Knoten „3“ ist Geschwisterknoten des Knotens „4“.