Programmieren 1 Flashcards
(43 cards)
Determinierter Algorithmus
Gleiche Eingabedaten => gleiche Ausgabedaten
Deterministische Algorithmen
Gleiche Eingabedaten => gleiche berechnung
Paradigma - Wie wird ein Algorithmus formuliert?
Imperativ, objektorientiert, funtional, logisch. hybrid, prozedural, deklarativ.
Komplexität - Mit welchem Aufwand löst der Algorithmus das Problem?
Z.B. Benötigte Rechenzeit oder verwendeter Speicherplatz
Korrektheit
Verifikation
Abstrakte Datentypen
Definiert durch algebraische Methoden
Berechenbarkeit/Entscheidbarkeit
Gibt es für das Problem einen algorithmus?
Entwurf von Algorithmen
Rekursion, Backtracking, Divide-and-Conquer, Greedy-Algorithms
Standardslgorithmen
Wird häufig verwenden
Algorithmen zum Suchen und Sortieren, Algorithmen für konkrete Datentypen (Graphen, Listen, Keller (Stacks), Schlangen (Queues))
Varianten des Algorithmenbegriffs
Nichtdetwrministische, parallele, randomisierte Algorithmen
Imperativen Algorithmus
In einem imperativen Algorithmus gibt es Variable, die verschiedene Werte annehmen können. die Menge aller Variablen und ihrer Werte sowie der Programmzähler beschreiben den Zustand zu einem bestimmten Zeitpunkt. Ein Algorithmus bewirkt eine Zustandstransformation.
Sprache: Algol, Algol68, Pascal, C,..
Funktionaler Algorithmus
Ein funktionaler Algorithmus formuliert die Berechnung durch Funktionen. Die Funktionen können rekursiv sein; auch gibt es Funktionen höherer Ordnung.
Sprache: Lisp, Scheme, ML, Haskell
Objektorientierten Algorithmus
In einem objektorientierten Algorithmus werden Datenstrukturen (Attribute) und Funktionen/Methoden zu einer Klasse zusammengefasst. Von jeder Klasse können Objekte gemäß der Datenstruktur erstellt und über die Methoden manipuliert werden.
Sprache: Smalltalk, Eiffel
Logischer (deduktiver) Algorithmus
Ein logischer (deduktiver) Algorithmus führt Berechnungen durch, indem er aus Fakten und Regeln durch Ableitungen in einem logischem Kalkül Ziele beweist.
Hybriden Paradigma
Die Mischung von Paradigmen
Sprache: java, C++, C# (Imperativ, Objektorientiert), Scala (imperativ, objektorientiert, funktional)
Prozedurale Programmiersprachen:
Es wird exakt angegeben. Wie die Lösung eines Problems ermittelt werden kann. z.B. imperative Programmiersprachen
Deklarative Programmiersprachen
Zur deklarativen Programmierung fragt man, was berechnet werden soll. Der Lösung wird nicht programmiert, sondern das gewünschte Ergebnis angegeben. Deklarative Paradigmen beruhen auf mathematischen, rechnerunabhängigen Theorien. z.B. Prädikative und (partiell) funktionale Programmiersprachen.
Elementare Datenstrukturen
Wertebereiche, Operationen, boolean, char, cardinal, integer, real, enumeration
Konstruktoren
Array(Feld), record(Satz), set(Menge), pointer(Zeiger). Zeiger gestatten rekursive Datenstrukturen (Listen, Bäume, Graphen)
General Purpose Language (GPL)
Programmiersprachen
Domain Specific Language (DSL)
Sprachen für spezielle Anwendungen
Sprachen der Informatik:
Algorithmen: Programmiersprachen (Java, C, LISP)
Dokumente: Markup-Sprachen (HTML, XML)
Modelle, Systeme: Modellierungssprachen (BPMN, UML)
Spezifikationen: Spezifikationssprachen (OCL, VDM-SL, Z)
Datenbanken: Anfragesprachen (SQL)
Lexik
Die Lexik einer Programmiersprache bestimmt die textuellen Grundbausteine der Programme.
-Schlüsselwörter
-Zeichen
-Bezeichner
Angegeben durch Aufzählung oder reguläre Ausdrücke.
Syntax
Die Syntax einer Programmiersprache beschreibt, wie aus den Grundbausteinen vollständige Programme gebildet werden können.