Informatik Fachbegriffe: Unterschied zwischen den Versionen
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 4: | Zeile 4: | ||
''Kursiv sind "interne" Begriffe, die anschaulich sind, aber keine echten Fachbegriffe.'' | ''Kursiv sind "interne" Begriffe, die anschaulich sind, aber keine echten Fachbegriffe.'' | ||
=Operatoren= | |||
Die Operatoren definieren, was genau man in einer Aufgabe zu machen hat. Anders als in Mathe sind die Operatoren weitestgehend "intuitiv" verständlich - mit Ausnahme des Operators "Analysieren" (siehe unten). | |||
* '''Liste der Operatoren:'''<br/>analysieren, angeben, anwenden, begründen, beschreiben, bestimmen, beurteilen, darstellen, dokumentieren, entscheiden, entwerfen, entwickeln, erläutern, ermitteln, erweitern, implementieren, interpretieren, modellieren, modifizieren, Stellung nehmen, überführen, vergleichen, vervollständigen, zeigen | |||
* '''Vollständige Liste der Operatoren mit Erläuterungen:'''<br/>[https://www.standardsicherung.schulministerium.nrw.de/cms/zentralabitur-wbk/faecher/getfile.php?file=2282 Operatoren Informatik-Abitur (Standardsicherung NRW)] | |||
* '''Analysieren Sie ... '''.<br/>''Der Operator "Analysieren Sie..." heißt in Informatik nur so viel wie "Denken Sie nach über...". <br/>Das heißt: <font color='red'>Dazu muss man NICHTS aufschreiben!!</font><br/>Der Operator "Analysieren Sie..." steht immer zusammen mit einem anderen Operator - und für den muss man was tun. | |||
=Algorithmen= | |||
''Algorithmen entwickeln und implementieren'' kann in jedem Teilbereich vorkommen! | |||
'''[[Algorithmus_entwickeln_und_implementieren|zum Nachlesen hier klicken]]''' | |||
* Die Methode ... hat als Parameter ... | |||
* Abbruchbedingung: Wenn ...., wird die Methode verlassen und ... zurückgegeben. | |||
* eine Variable ... mit Startwert ... festlegen. | |||
* ... mit einer Schleife ... durchlaufen. | |||
* für jedes Element... | |||
* wenn ... (sonst...) | |||
* Die Variable ... erhöhen/verringern um ... | |||
* Am Ende ... zurückgeben. | |||
=Datenbanken= | =Datenbanken= | ||
==Entity-Relationship-Modellierung== | ==Entity-Relationship-Modellierung== | ||
Zeile 127: | Zeile 147: | ||
* <u>statische</u> Datenstruktur (Array): <br/>''Man muss vorher angeben, wie viele Einträge das Array hat.'' | * <u>statische</u> Datenstruktur (Array): <br/>''Man muss vorher angeben, wie viele Einträge das Array hat.'' | ||
* <u>dynamische</u> Datenstrukturen: Stack, List, Queue (und auch BinaryTree, BinarySearchTree, Graph)<br/>''Dynamische Datenstrukturen können während der Laufzeit "wachsen" und "schrumpfen".'' | * <u>dynamische</u> Datenstrukturen: Stack, List, Queue (und auch BinaryTree, BinarySearchTree, Graph)<br/>''Dynamische Datenstrukturen können während der Laufzeit "wachsen" und "schrumpfen".'' | ||
* [[Java_Basis-Sprachelemente#NullPointerException|NullPointerException]] | |||
* [[Queue|Queue]]: Schlange (vorne - hinten) | * [[Queue|Queue]]: Schlange (vorne - hinten) | ||
** vorderstes Element: <code>pQueue.front()</code> | ** vorderstes Element: <code>pQueue.front()</code> |
Aktuelle Version vom 10. März 2024, 12:56 Uhr
Hier werden die wesentlichen Fachbegriffe zusammengestellt, die für das Informatik-Abitur relevant sind.
Kursiv sind "interne" Begriffe, die anschaulich sind, aber keine echten Fachbegriffe.
Operatoren
Die Operatoren definieren, was genau man in einer Aufgabe zu machen hat. Anders als in Mathe sind die Operatoren weitestgehend "intuitiv" verständlich - mit Ausnahme des Operators "Analysieren" (siehe unten).
- Liste der Operatoren:
analysieren, angeben, anwenden, begründen, beschreiben, bestimmen, beurteilen, darstellen, dokumentieren, entscheiden, entwerfen, entwickeln, erläutern, ermitteln, erweitern, implementieren, interpretieren, modellieren, modifizieren, Stellung nehmen, überführen, vergleichen, vervollständigen, zeigen - Vollständige Liste der Operatoren mit Erläuterungen:
Operatoren Informatik-Abitur (Standardsicherung NRW) - Analysieren Sie ... .
Der Operator "Analysieren Sie..." heißt in Informatik nur so viel wie "Denken Sie nach über...".
Das heißt: Dazu muss man NICHTS aufschreiben!!
Der Operator "Analysieren Sie..." steht immer zusammen mit einem anderen Operator - und für den muss man was tun.
Algorithmen
Algorithmen entwickeln und implementieren kann in jedem Teilbereich vorkommen!
- Die Methode ... hat als Parameter ...
- Abbruchbedingung: Wenn ...., wird die Methode verlassen und ... zurückgegeben.
- eine Variable ... mit Startwert ... festlegen.
- ... mit einer Schleife ... durchlaufen.
- für jedes Element...
- wenn ... (sonst...)
- Die Variable ... erhöhen/verringern um ...
- Am Ende ... zurückgeben.
Datenbanken
Entity-Relationship-Modellierung
- Kardinalität
- 1:n
- n:m
- Primärschlüssel
- Attribut
- Entitätsmenge
- Entität (=ein Objekt einer Entitätsmenge)
- Relation (=Beziehung)
relationales Datenmodell
- Tabelle
- Relationenschema (damit meint das Zentralabitur eine Tabelle)
- Datenbankschema (damit meint das Zentralabitur das ganze relationale Datenmodell)
- Attribut
- Primärschlüssel: unterstrichen
- Fremdschlüssel: ↑
...bezieht sich auf den Primärschlüssel der Tabelle ... - kombinierter Primärschlüssel
Normalisierung
- atomar
- nicht eindeutiger Primärschlüssel
- funktional abhängig von einem Teil des Primärschlüssel (Verstoß gegen 2. NF)
- funktional abhängig von einem Nicht-Schlüssel-Attribut (Verstoß gegen 3. NF)
- Anomalien
- Einfüge-Anomalie
- Änderungs-Anomalie
- Lösch-Anomalie
- die können nach Normalisierung nicht mehr auftreten!
SQL
- Kartesisches Produkt: "jede(r) mit jedem"
- Abgleich zwischen Tabellen
- Verknüpfen (Join) von zwei Tabellen, wobei ... mit ... abgeglichen wird.
- "Drückeberger":
... LEFT JOIN ... WHERE ... IS NULL
- Differenz:
NOT IN
- Vereinigung:
UNION
- selbstdefinierte Tabelle
- Alias:
AS
- zusammenfassen von Zeilen:
GROUP BY
- sortieren nach:
ORDER BY
mit Java auf Datenbanken zugreifen
- DatabaseConnector
- Query (=Abfrage)
- Variablen (z.B. Parameter) im SQL-Statement
- Zeilenzahl:
int zeilenZahl = queryResult.getRowCount();
- Array (2-dim):
String[][] data = queryResult.getData();
- durchlaufen:
for(int i=0; i<data.length; i++){
String name = data[i][0];
String vorname = data[i][1];
- durchlaufen:
- In Zahl konvertieren:
int zahl = Integer.parseInt(data[i][0]);
Objektorientierte Modellierung und Programmierung
zum Nachlesen:
- Klassen- und Implementationsdiagramm
- Klasse
- Vererbung
- Polymorphie
- Abstrakte Klasse
- Interface
- Java Basis Sprachelemente, u.a. Bedingung, Schleife etc.
- Arrays
Fachbegriffe:
- Vererbung
- erbt von
- ist ein (gleichbedeutend mit "erbt von"!)
- Super-Klasse
- Sub-Klasse
- Polymorphie
- polymorphe Methode
- Abstrakte Klasse (=Klasse mit mind. einer abstrakten Methode)
- abstrakte Methode
- Interface
- Klassen- und Implementationsdiagramm
- hat-Beziehung
- Assoziation (=kennt-Beziehung)
- Multiplizität
- Klasse
- Objekt (Von einer Klasse kann man mehrere Objekte erzeugen.)
- Attribut
- public / private
- Konstruktor
- Methode
- Parameter
- lokale Variable
- Rückgabetyp
- public / private
- ContentType (z.B. für Listen kann man den ContentType angeben.)
- Schnittstelle (interface, vgl. ComparableContent)
- Struktogramm
- Anweisung
- Methodenaufruf
- Bedingung
- Schleife
- Zählschleife (for)
- bedingte Schleife (while)
- mit Schleife ein Array durchlaufen:
for(int i=0; i<array.length; i++)
- Arrays
- Index
- Wert
- zweidimensionales Array, z.B.:
private int[][] einmalEinsTabelle;
Java-Programmierung mit linearen Datenstrukturen
zum Nachlesen:
Fachbegriffe:
- Laufzeit
- O(log(n)): Suchen in einem Binären Suchbaum
- O(n): Suchen in einer unsortierten Liste
- O(n*log(n)): Sortieren mit Quicksort
- O(n2): Sortieren mit Bubblesort, Insertionsort, Selectionsort
- statische Datenstruktur (Array):
Man muss vorher angeben, wie viele Einträge das Array hat. - dynamische Datenstrukturen: Stack, List, Queue (und auch BinaryTree, BinarySearchTree, Graph)
Dynamische Datenstrukturen können während der Laufzeit "wachsen" und "schrumpfen". - NullPointerException
- Queue: Schlange (vorne - hinten)
- vorderstes Element:
pQueue.front()
- anhängen:
pQueue.enqueue(...)
- vorderstes Element entfernen:
pQueue.dequeue()
- ist leer:
pQueue.isEmpty()
- Hilfs-Queue: z.B. um einen Queue zu durchlaufen, ohne ihn zu zustören
- vorderstes Element:
- Stack: Stapel (oben)
- oberstes Element:
pStack.top()
- oben drauflegen:
pStack.push(...)
- oberstes Element entfernen:
pStack.pop()
- ist leer:
pStack.isEmpty()
- Hilfs-Stack: z.B. um einen Stack zu durchlaufen, ohne ihn zu zustören
- oberstes Element:
- List: Liste.
Listen kann man einfach durchlaufen und irgendwo einfügen.- anhängen:
pList.append(...)
- einfügen vor dem aktuellen Element:
pList.insert(...);
- anhängen:
- Array:
statische Datenstruktur - man muss die Anzahl der Elemente vorher festlegen. - durchlaufen (Liste, Array)
- ein Array durchlaufen:
for(int i=0; i<array.length; i++)
- eine Liste durchlaufen:
for(pList.toFirst(); pList.hasAccess(); pList.next())
- ein Array durchlaufen:
- aktuelles Element:
- Array:
array[i];
- Liste:
pList.getContent();
- Array:
- erzeugen
- erzeugen eines Objektes:
Person p = new Person("Mustermann", "Max");
- erzeugen einer Liste:
List<Person> ergebnisListe = new List<>();
- erzeugen eines Arrays:
z.B.Person[] einwohner = new int[1000];
Vorsicht! In jedem der 1000 Werte stehtnull
! - erzeugen eines zweidimensionalen Arrays:
int[][] einmalEinsTabelle = new int[10][10];
- erzeugen eines Objektes:
- Schleife
- Schleife verlassen:
break;
- Schleife beim nächsten Element fortsetzen:
continue;
- Schleife verlassen:
- Methode verlassen
return;
- zurückgeben:
return ergebnis;
- ausgeben:
System.out.println("Hallo");
Sortierverfahren
- Bubblesort nur für Arrays!, Laufzeit O(n2)
- Insertionsort für Listen, Laufzeit O(n2)
- Selectionsort für Listen, Laufzeit O(n2)
- nur LK: Quicksort für Listen, Laufzeit O(n*log(n)) im Average Case
- Sortieren mit einem Binären Suchbaum
- Der Reihe nach in den Binären Suchbaum einfügen
- Inorder-Traversierung
Laufzeit O(n*log(n)) im Average Case
Binärbäume und binäre Suchbäume
- Rahmenmethode
- rekursive Methode
- Abbruchbedingung
- Wurzelbehandlung
- Sachlogik
- rekursive Aufrufe
- Traversierung
- Preorder
- Inorder (=im Suchbaum: Sortierte Ausgabe!)
- Levelorder (nur LK)
- Baumliste für Levelorder (nur LK)
- ComparableContent
- implementiert die Schnittstelle (ComparableContent)
- Dummy: zum Suchen in Suchbäumen.
Automaten und Grammatiken
zum Nachlesen:
Kategorie endliche Automaten
Da gibt es Links zu allen Unterüberschriften.
endliche Automaten
- Deterministischer endlicher Automat (DEA)
- A, Z, d, Q0, E: allen Zuhörern doofen Quatsch erzählen
- Der DEA erkennt eine reguläre Sprache
- Der DEA überprüft ein Wort, ob es zur Sprache gehört.
- Nicht-deterministischer endlicher Automat (NEA)
- "es gibt einen Weg"
- Zustand
- Anfangszustand
- Endzustände
- Übergang
- Alphabet
- Zustands-Übergangs-Graph
- Zustands-Übergangs-Tabelle
- Zustandsfolge
- für einen NEA ggf. mit geschweifter Klammer mehrere Zustände zusammenfassen.
- Senke (=ein Zustand, aus dem es keinen Ausweg mehr gibt)
- Potenzmengenkonstruktion
- Potenzmenge (=eine Menge von Zuständen)
reguläre Grammatik
- G = {N, T, S, P} Nerds testen Sonys Playstation
- linkslineare Grammatik: Nicht-Terminal links
- rechtslineare Grammatik: Nicht-Terminal rechts
- linkslineare und rechtslineare Regeln nicht mischen!!!
z.B.:S → aS | Sb
ist nicht regulär!!!
- linkslineare und rechtslineare Regeln nicht mischen!!!
- Terminal-Symbol
- Nicht-Terminal-Symbol
- Startsymbol
- Produktionsregeln
- Produktion eines Wortes
- die RG erzeugt eine (reguläre) Sprache
Kellerautomaten (nur LK)
- Keller-Alphabet
- Keller-Zeichen
- Epsilon (ε): Um den Endzustand zu erreichen, darf man das Zeichen ε (="nichts") schreiben.
kontextfreie Grammatik (nur LK)
- lässt sich durch Kellerautomaten prüfen
Parser
- Parser für DEA
- Parser für Kellerautomaten (nur LK)
- Keller (=
Stack
)
- Keller (=
Graph (nur LK!)
- Knoten
- Kante
- markieren (Knoten oder Kante)
- Markierung aufheben
- Gewicht
- Traversierung (d.h. Breitendurchlauf oder Tiefendurchlauf)
- Tiefendurchlauf
- rekursiv
- Breitendurchlauf
- Knotenliste
- Dijkstra-Algorithmus
- rote Liste (für Dijkstra-Algo)
- gelbe Liste (für Dijkstra-Algo)
Datenschutz
Schutz von Angaben, aus denen man einen bestimmten Menschen erkennen kann oder die einem bestimmten Menschen zugeordnet werden können.
Prinzipien des Datenschutzes:
- Verbot mit Erlaubnisvorbehalt
- Datenminimierung
- Zweckbindung
- Transparenz
- Erforderlichkeit
Backtracking (nur LK!)
- Stufe
- Teillösungsschritt
- Abbruchbedingung
- Lösung erreicht
- Lösung nicht mehr erreichbar
- maximale Stufenzahl überschritten
- rückgängig machen