Informatik Fachbegriffe: Unterschied zwischen den Versionen

Aus SibiWiki
Zur Navigation springen Zur Suche springen
 
(8 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 120: Zeile 140:


'''Fachbegriffe:'''
'''Fachbegriffe:'''
* [[Laufzeit_von_Algorithmen|Laufzeit]]
** O(log(n)): Suchen in einem [[Binärer Suchbaum|Binären Suchbaum]]
** O(n): Suchen in einer unsortierten Liste
** O(n*log(n)): Sortieren mit [[Quicksort|Quicksort]]
** O(n<sup>2</sup>): Sortieren mit [[Bubblesort]], [[Insertionsort]], [[Selectionsort|Selectionsort]]
* <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>
Zeile 155: Zeile 181:
* zurückgeben: <code>return ergebnis;</code>
* zurückgeben: <code>return ergebnis;</code>
* ausgeben: <code>System.out.println("Hallo");</code>
* ausgeben: <code>System.out.println("Hallo");</code>
=Sortierverfahren=
* [[Bubblesort]] <u>nur für Arrays!</u>, Laufzeit O(n<sup>2</sup>)
* [[Insertionsort]] für Listen, Laufzeit O(n<sup>2</sup>)
* [[Selectionsort]] für Listen, Laufzeit O(n<sup>2</sup>)
* nur LK: [[Quicksort]] für Listen, Laufzeit O(n*log(n)) im Average Case
* Sortieren mit einem [[Binärer Suchbaum|Binären Suchbaum ]]<br/>- Der Reihe nach in den Binären Suchbaum einfügen<br/>- Inorder-Traversierung<br/>Laufzeit O(n*log(n)) im Average Case


=Binärbäume und binäre Suchbäume=
=Binärbäume und binäre Suchbäume=

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!

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

Entity-Relationship-Modellierung

zum Nachlesen hier klicken

  • Kardinalität
  • 1:n
  • n:m
  • Primärschlüssel
  • Attribut
  • Entitätsmenge
  • Entität (=ein Objekt einer Entitätsmenge)
  • Relation (=Beziehung)

relationales Datenmodell

zum Nachlesen hier klicken

  • 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

zum Nachlesen hier klicken

  • 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

zum Nachlesen hier klicken

  • 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

zum Nachlesen hier klicken

  • 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];
  • In Zahl konvertieren: int zahl = Integer.parseInt(data[i][0]);

Objektorientierte Modellierung und Programmierung

zum Nachlesen:

Fachbegriffe:

Java-Programmierung mit linearen Datenstrukturen

zum Nachlesen:

Fachbegriffe:

  • Laufzeit
  • 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
  • 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
  • List: Liste.
    Listen kann man einfach durchlaufen und irgendwo einfügen.
    • anhängen: pList.append(...)
    • einfügen vor dem aktuellen Element: pList.insert(...);
  • 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())
  • aktuelles Element:
    • Array: array[i];
    • Liste: pList.getContent();
  • 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 steht null!
    • erzeugen eines zweidimensionalen Arrays: int[][] einmalEinsTabelle = new int[10][10];
  • Schleife
    • Schleife verlassen: break;
    • Schleife beim nächsten Element fortsetzen: continue;
  • 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!!!
  • 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

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