Informatik-Abitur-2020: Unterschied zwischen den Versionen

Aus SibiWiki
Zur Navigation springen Zur Suche springen
 
(14 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 3: Zeile 3:


Auf dieser Seite wird alles gesammelt, was für das Abitur 2020 (LK + GK) wichtig ist.
Auf dieser Seite wird alles gesammelt, was für das Abitur 2020 (LK + GK) wichtig ist.
=Finale=
Für das Finale lohnt sich ein Blick auf die '''"nervigen Sprachelemente"''' - einfach um sie in der Klausur parat zu haben!<br>Es reicht in der Regel, wenn man sie "passiv" beherrscht, d.h. lesen kann. Notfalls schreibe man an den Rand: ''Dafür gibt es eine Methode, aber sie fällt mir im Moment nicht ein.'' (Das kostet in der Regel keinen Punkt, es sei denn man macht das häufiger...
Außerdem sollte man sich die '''Standard-Themen''' nochmal anschauen, die eigentlich so gut wie immer dran kommen - entweder hier auf dem sibiwiki, oder - wenn vorhanden - auf youtube: '''[https://www.youtube.com/user/akaibel/videos Erklärvideos auf Youtube]'''
==nervige Sprachelemente==
Hier wird aufgeführt, was sich kurz vor der Abiturklausur zu wiederholen lohnt - einfach um darüber Bescheid zu wissen!
'''[[Datei:Dokumentation-Informatik-Seite-1-3.pdf]]''':<br/>Hier sind alle Java- und SQL-Sprachelemente aufgeführt, die im Zentralabitur vorausgesetzt werden.<br/>'''Einmal durchlesen und checken, ob man etwas nicht kennt / kann!'''*
Aus dieser Datei werden einige wichtige Sprachelemente hier nochmal kurz erklärt. Wichtig sind sie insofern, als sie schon häufiger im Abitur vorkamen!
* '''Teilen von ganzen Zahlen''' : z.B.: <code>int a = 11/4;</code><br/>Beim Teilen von ganzen Zahlen wird '''immer abgerundet'''. D.h. a hat den Wert 2.
* '''%''' : z.B.: <code>int a = x%4;</code><br/>Mit % berechnet man den Rest beim Teilen. <br/>D.h. für x = 14 wird dann a = 14%4 = 2.
* '''Integer.parseInt(...)''': Wandelt einen String in eine Ganzzahl um.Z.B.<br/><code>String zahlString = "12345";<br/><code>int zahl = Integer.parseInt(zahlString);</code><br/>Entsprechend gibt es Double.parseDouble(...) und Boolean.parseBoolean(...)
* '''charAt(n)''': Eine Methode der Klasse String: Gibt den n-ten Buchstaben eines Strings zurück. Z.B.:<br/><code>String wort = "Hallo";<br/><code>char buchstabe = wort.charAt(1);</code><br/>buchstabe hat dann den Wert 'a' (Denn der erste Buchstabe hat immer den Index 0!)
* '''indexOf(teilString)''': Methode der Klasse String. Gibt die Position des Teilstrings an. Z.B.:<br/><code>String wort = "Hallo";<br/><code>int position = wort.indexOf("ll");</code><br/>position hat dann den Wert 2.
* '''compareTo(andererString)''': Methode der Klasse String. Vergleicht die zwei Strings alphabetisch und gibt eine negative Zahl, 0 oder eine positive Zahl zurück.
* '''substring(int beginIndex)''' bzw. '''substring(int beginIndex, int endIndex)''': Methoden der Klasse String. Sie geben einen Teilstring zurück.
* '''continue;''' Macht beim nächsten Schleifendurchlauf weiter.
* '''break;''' Verlässt eine Schleife.
* '''continue;''' Macht sofort beim nächsten Schleifendurchlauf weiter
* '''BETWEEN''': Gehört zu SQL. Beispiel:<br/>SELECT f.name FROM film f WHERE f.jahr BETWEEN 1980 and 1990.
* '''DISTINCT''': SQL. Sorgt dafür, dass alles, was dahinter steht, nur 1x aufgeführt wird:<br/>SELECT DISTINCT k.vorname, k.name FROM kunde k.<br/>Wenn es mehrere "Stefan Meyer" gibt, wird nur einer ausgegeben. (Aber andere Stefans werden ausgegeben!)
* '''AVG''': SQL. Berechnet den Durchschnitt Beispiel:<br/>SELECT AVG(u.stunden) FROM unterricht u.
* '''GROUP BY''': SQL. Fasst jeweils mehrere Zeilen zu einer zusammen. Beispiel:<br/>SELECT u.fach, SUM(u.stunden) FROM unterricht u GROUP BY u.fach
* '''LIKE''' in Kombination mit '''%''': SQL. LIKE mit Prozent ermöglicht einen "ungefähren" Abgleich. Beispiel: <br/>SELECT k.name, k.ort FROM kunde k WHERE k.ort = 'Bad%'<br>Sucht alle Kunden aus Orten, die mit "Bad" anfangen.
* '''Wrapper-Klassen:''' Das sind Klassen zu den einfachen Datentypen int, double, char und boolean. D.h. so kann man zu den einfachen Datentypen Objekte erzeugen, z.B.: <br/><code>Double d = new Double(3.1415927);</code>
* '''Reguläre Sprache:''' Für jede reguläre Sprache '''gibt''' es eine reguläre Grammatik und einen DEA. <br/><u>ABER:</u>Eine nicht-reguläre Grammatik kann eine reguläre Sprache erzeugen!
==Fachbegriffe==
Eine Liste der Fachbegriffe für das Informatik-Abitur findet sich hier:<br/>'''[[Informatik_Fachbegriffe]]'''.
==Standard-Themen==
<u>Unterstrichen</u> sind Teilthemen, die eigentlich <u>immer</u> drankommen.<br/>''Bei dieser Liste wird keine Garantie für Vollständigkeit übernommen - das ist aus der Erfahrung der letzten Jahre...''
* '''Datenbanken'''
** <u>[[Entity-Relationship-Modell]]</u>
** <u>[[relationales Datenmodell]]</u>
** <u>[[SQL]]</u>
** <u>[[Normalisierung]]</u>
** mit Java auf Datenbanken zugreifen: [[Java-SQL]]
* '''Objektorientierte Modellierung:'''
** <u>[[Implementationsdiagramm]]</u>
** <u>Erläutern mit Fachbegriffen</u> (Klasse, Attribut, Methode, Konstruktor, Parameter, Rückgabetyp, kennt-Beziehung, erbt-von-Beziehung)
* '''lineare Datenstrukturen:'''
** <u>[[List]]</u>
** <u>Java-Programmierung für Szenarien mit Listen</u>
** [[Selectionsort]] bzw. [[Insertionsort]]
** [[Array]]: 1-dim und 2-dim, durchlaufen
** <u>Methoden erläutern mit Fachbegriffen: [[Quelltextanalyse_Java]]</u>
* '''[[Binärbaum]]''' und '''[[Binärer Suchbaum]]'''
** Traversierungen (Inorder, Preorder)
** <u>rekursive Methoden</u>
** Pfaddurchlauf
** (nur LK:) Linearisierung für Levelorder
** <u>Schnittstelle Comparable (für die Klasse BinarySearchTree)</u>
** <u>Methoden erläutern mit Fachbegriffen: [[Quelltextanalyse_Java]]</u>
* '''Automaten und Grammatiken:'''
** <u>[[Deterministischer Endlicher Automat]] (DEA)</u>
** <u>[[reguläre Grammatik]] (linkslinear bzw. rechtslinear): Anforderungen kennen!</u>
** DEA in reguläre Grammatik umwandeln
** reguläre Grammatik in NEA umwandeln
** <u>[[Potenzmengenkonstruktion]] (um NEA in DEA zu verwandeln)</u>
** <u>Grenzen von DEA: Darf nur endlich viele Zustände haben!</u>
** [[Parser]] programmieren: Am einfachsten mit if-else
** (nur LK:) [[Kellerautomat]] und Parser für Kellerautomat
** (nur LK:) [[Kontextfreie Grammatik]] (Anforderungen kennen!)


=Wiederholungsaufgaben=
=Wiederholungsaufgaben=
Auf der Seite '''[[Informatik-Abitur-Wiederholung]]''' finden sich Wiederholungsaufgaben mit Lösungen zu den verschiedenen Themenbereichen!
Auf der Seite '''[[Informatik-Abitur-Wiederholung]]''' finden sich Wiederholungsaufgaben mit Lösungen zu den verschiedenen Themenbereichen!


Zeile 51: Zeile 132:
# Anwendung von linearen Datenstrukturen in der Programmierung: [[List]], [[Stack]], [[Queue]]
# Anwendung von linearen Datenstrukturen in der Programmierung: [[List]], [[Stack]], [[Queue]]
# [[Vererbung]] und [[Polymorphie]]
# [[Vererbung]] und [[Polymorphie]]
# [[Array|Arrays]]  
# [[Array|Arrays]] :<br/><i>Von Arrays kommt im Vorabi nur dran:</i>
## <i><code>String[][] data = queryResult.getData()</code> und dann das 2-dim Array <code>data</code> mit einer Schleife auswerten.</i>
## <i>(in einer anderen Aufgabe:) einen einfachen Schleifendurchlauf durch ein Array lesen/schreiben.</i>
# NEU: Struktogramme für Programmabläufe verstehen/erweitern.
# NEU: Struktogramme für Programmabläufe verstehen/erweitern.


Zeile 59: Zeile 142:
# einen Server programmieren, z.B. [[Netzwerkprogrammierung#Implementierung|Implementierung Gossipserver]]
# einen Server programmieren, z.B. [[Netzwerkprogrammierung#Implementierung|Implementierung Gossipserver]]
# Datenverwaltung im Server mit Listen: Hilfsmethoden!
# Datenverwaltung im Server mit Listen: Hilfsmethoden!
==Abiklausur (LK)==
Der Lehrer muss aus 4 Aufgaben 3 auswählen und den Schülern vorlegen. Die Schüler haben keine Auswahl. Die Aufgaben können aus folgenden 6 Schwerpunkten stammen, d.h. es stehen nicht immer alle Schwerpunkte zur Auswahl.
Die Jahreszahlen geben an, ob dieses Thema für die letzten 3 Jahre zur Auswahl stand.
# Datenbanken: 2019, 2018, 2017
# Automaten und Grammatiken: 2019, 2018, 2017
# lineare Datenstrukturen, Implementationsdiagramme, Objektorientierte Programmierung: 2019, 2018, 2017
# Netzwerkprogrammierung: 2018, '' aber '''nicht''' 2019 und 2017''.
# Binärbäume und Binäre Suchbäume:  2019, '' aber '''nicht''' 2018 und 2017''.
# Graphen:  2017, '' aber '''nicht''' 2019 und 2018''.


=Grundkurs=
=Grundkurs=
Zeile 67: Zeile 162:
# [[SQL]]
# [[SQL]]
# [[Normalisierung]]
# [[Normalisierung]]
# [[Java-SQL|mit Java auf SQL zugreifen]]
# <strike>[[Java-SQL|mit Java auf SQL zugreifen]]</strike>
# Grundprinzipien des [[Datenschutz|Datenschutzes]]:
# <strike>Grundprinzipien des [[Datenschutz|Datenschutzes]]:</strike>
## Verbot mit Erlaubnisvorbehalt
## <strike>Verbot mit Erlaubnisvorbehalt</strike>
## Erforderlichkeit
## <strike>Erforderlichkeit</strike>


'''b) lineare Datenstrukturen, Implementationsdiagramme, Vererbung'''
'''b) lineare Datenstrukturen, Implementationsdiagramme, Vererbung'''
# Erstellen / Erweitern von [[Klassen-_und_Implementationsdiagramm|Implementationsdiagrammen]]
# Erstellen / Erweitern von [[Klassen-_und_Implementationsdiagramm|Implementationsdiagrammen]]
# Anwendung von linearen Datenstrukturen in der Programmierung: [[List]], [[Stack]], [[Queue]]
# Anwendung von linearen Datenstrukturen in der Programmierung: [[List]], [[Stack]], [[Queue]]
# [[Vererbung]] und [[Polymorphie]]
# <strike>[[Vererbung]] und [[Polymorphie]]</strike>
 
==Abiklausur (GK)==
 
Der Lehrer muss aus 4 Aufgaben 2 auswählen und den Schülern vorlegen. Die Schüler haben keine Auswahl.
In der Regel haben die 4 Aufgaben folgende Schwerpunkte:
# lineare Datenstrukturen, Implementationsdiagramme, Objektorientierte Programmierung
# Binärbäume, binäre Suchbäume
# Datenbanken
# Automaten und Grammatiken
Es '''muss''' eine Aufgabe aus den Bereichen 1+2 ausgewählt werden, die andere Aufgabe ist frei wählbar.

Aktuelle Version vom 15. Februar 2021, 13:03 Uhr


Auf dieser Seite wird alles gesammelt, was für das Abitur 2020 (LK + GK) wichtig ist.

Finale

Für das Finale lohnt sich ein Blick auf die "nervigen Sprachelemente" - einfach um sie in der Klausur parat zu haben!
Es reicht in der Regel, wenn man sie "passiv" beherrscht, d.h. lesen kann. Notfalls schreibe man an den Rand: Dafür gibt es eine Methode, aber sie fällt mir im Moment nicht ein. (Das kostet in der Regel keinen Punkt, es sei denn man macht das häufiger...

Außerdem sollte man sich die Standard-Themen nochmal anschauen, die eigentlich so gut wie immer dran kommen - entweder hier auf dem sibiwiki, oder - wenn vorhanden - auf youtube: Erklärvideos auf Youtube

nervige Sprachelemente

Hier wird aufgeführt, was sich kurz vor der Abiturklausur zu wiederholen lohnt - einfach um darüber Bescheid zu wissen! Datei:Dokumentation-Informatik-Seite-1-3.pdf:
Hier sind alle Java- und SQL-Sprachelemente aufgeführt, die im Zentralabitur vorausgesetzt werden.
Einmal durchlesen und checken, ob man etwas nicht kennt / kann!*

Aus dieser Datei werden einige wichtige Sprachelemente hier nochmal kurz erklärt. Wichtig sind sie insofern, als sie schon häufiger im Abitur vorkamen!

  • Teilen von ganzen Zahlen : z.B.: int a = 11/4;
    Beim Teilen von ganzen Zahlen wird immer abgerundet. D.h. a hat den Wert 2.
  • % : z.B.: int a = x%4;
    Mit % berechnet man den Rest beim Teilen.
    D.h. für x = 14 wird dann a = 14%4 = 2.
  • Integer.parseInt(...): Wandelt einen String in eine Ganzzahl um.Z.B.
    String zahlString = "12345";
    int zahl = Integer.parseInt(zahlString);
    Entsprechend gibt es Double.parseDouble(...) und Boolean.parseBoolean(...)
  • charAt(n): Eine Methode der Klasse String: Gibt den n-ten Buchstaben eines Strings zurück. Z.B.:
    String wort = "Hallo";
    char buchstabe = wort.charAt(1);
    buchstabe hat dann den Wert 'a' (Denn der erste Buchstabe hat immer den Index 0!)
  • indexOf(teilString): Methode der Klasse String. Gibt die Position des Teilstrings an. Z.B.:
    String wort = "Hallo";
    int position = wort.indexOf("ll");
    position hat dann den Wert 2.
  • compareTo(andererString): Methode der Klasse String. Vergleicht die zwei Strings alphabetisch und gibt eine negative Zahl, 0 oder eine positive Zahl zurück.
  • substring(int beginIndex) bzw. substring(int beginIndex, int endIndex): Methoden der Klasse String. Sie geben einen Teilstring zurück.
  • continue; Macht beim nächsten Schleifendurchlauf weiter.
  • break; Verlässt eine Schleife.
  • continue; Macht sofort beim nächsten Schleifendurchlauf weiter
  • BETWEEN: Gehört zu SQL. Beispiel:
    SELECT f.name FROM film f WHERE f.jahr BETWEEN 1980 and 1990.
  • DISTINCT: SQL. Sorgt dafür, dass alles, was dahinter steht, nur 1x aufgeführt wird:
    SELECT DISTINCT k.vorname, k.name FROM kunde k.
    Wenn es mehrere "Stefan Meyer" gibt, wird nur einer ausgegeben. (Aber andere Stefans werden ausgegeben!)
  • AVG: SQL. Berechnet den Durchschnitt Beispiel:
    SELECT AVG(u.stunden) FROM unterricht u.
  • GROUP BY: SQL. Fasst jeweils mehrere Zeilen zu einer zusammen. Beispiel:
    SELECT u.fach, SUM(u.stunden) FROM unterricht u GROUP BY u.fach
  • LIKE in Kombination mit %: SQL. LIKE mit Prozent ermöglicht einen "ungefähren" Abgleich. Beispiel:
    SELECT k.name, k.ort FROM kunde k WHERE k.ort = 'Bad%'
    Sucht alle Kunden aus Orten, die mit "Bad" anfangen.
  • Wrapper-Klassen: Das sind Klassen zu den einfachen Datentypen int, double, char und boolean. D.h. so kann man zu den einfachen Datentypen Objekte erzeugen, z.B.:
    Double d = new Double(3.1415927);
  • Reguläre Sprache: Für jede reguläre Sprache gibt es eine reguläre Grammatik und einen DEA.
    ABER:Eine nicht-reguläre Grammatik kann eine reguläre Sprache erzeugen!

Fachbegriffe

Eine Liste der Fachbegriffe für das Informatik-Abitur findet sich hier:
Informatik_Fachbegriffe.

Standard-Themen

Unterstrichen sind Teilthemen, die eigentlich immer drankommen.
Bei dieser Liste wird keine Garantie für Vollständigkeit übernommen - das ist aus der Erfahrung der letzten Jahre...

  • Binärbaum und Binärer Suchbaum
    • Traversierungen (Inorder, Preorder)
    • rekursive Methoden
    • Pfaddurchlauf
    • (nur LK:) Linearisierung für Levelorder
    • Schnittstelle Comparable (für die Klasse BinarySearchTree)
    • Methoden erläutern mit Fachbegriffen: Quelltextanalyse_Java

Wiederholungsaufgaben

Auf der Seite Informatik-Abitur-Wiederholung finden sich Wiederholungsaufgaben mit Lösungen zu den verschiedenen Themenbereichen!

Materialien des Ministeriums für das Abi 2020

Vorgaben für das Abitur 2020

Die kann man hier herunterladen: Datei:Informatik 2020.pdf

  • GK: Besonders wichtig ist die Tabelle auf S. 4/5!
  • LK: Besonders wichtig ist die Tabelle auf S. 5/5!

Operatoren für die Aufgaben

Die kann man hier herunterladen: Datei:IF Operatoren.pdf

Hier werden die sog. Operatoren (z.B. "implementieren", "beschreiben", "benennen"...) erläutert.
Vorschlag zur Umgehensweise: Ausdrucken, durchlesen, ungewohnte Operatoren anstreichen, später nochmal anschauen.

Dokumentationen

Im Abitur bekommt man zu fast allen Klassen eine Dokumentation.

Ausnahmen:
die folgenden Teile der Dokumentation liegen nicht der Klausur bei:

  1. Basis-Sprachelemente und -Datentypen
    1. insbesondere die Klasse String, der Datentyp char und die Wrapper
  2. SQL
  3. Klassendiagramme (d.h. Entwurfsdiagramme und Implementationsdiagramme)

Leistungskurs

Vorabi-Klausur (LK)

a) Datenbanken:

  1. Entity-Relationship-Modell, relationales Datenmodell
  2. SQL
  3. Normalisierung
  4. mit Java auf SQL zugreifen
  5. Grundprinzipien des Datenschutzes:
    1. Verbot mit Erlaubnisvorbehalt
    2. Erforderlichkeit

b) lineare Datenstrukturen, Implementationsdiagramme, Vererbung

  1. Erstellen / Erweitern von Implementationsdiagrammen
  2. Anwendung von linearen Datenstrukturen in der Programmierung: List, Stack, Queue
  3. Vererbung und Polymorphie
  4. Arrays :
    Von Arrays kommt im Vorabi nur dran:
    1. String[][] data = queryResult.getData() und dann das 2-dim Array data mit einer Schleife auswerten.
    2. (in einer anderen Aufgabe:) einen einfachen Schleifendurchlauf durch ein Array lesen/schreiben.
  5. NEU: Struktogramme für Programmabläufe verstehen/erweitern.

c) Netzwerkprogrammierung

  1. Protokolle erstellen / erweitern
  2. Implementationsdiagramm für eine Serveranwendung, z.B. Implementationsdiagramm GossipServer
  3. einen Server programmieren, z.B. Implementierung Gossipserver
  4. Datenverwaltung im Server mit Listen: Hilfsmethoden!

Abiklausur (LK)

Der Lehrer muss aus 4 Aufgaben 3 auswählen und den Schülern vorlegen. Die Schüler haben keine Auswahl. Die Aufgaben können aus folgenden 6 Schwerpunkten stammen, d.h. es stehen nicht immer alle Schwerpunkte zur Auswahl.

Die Jahreszahlen geben an, ob dieses Thema für die letzten 3 Jahre zur Auswahl stand.

  1. Datenbanken: 2019, 2018, 2017
  2. Automaten und Grammatiken: 2019, 2018, 2017
  3. lineare Datenstrukturen, Implementationsdiagramme, Objektorientierte Programmierung: 2019, 2018, 2017
  4. Netzwerkprogrammierung: 2018, aber nicht 2019 und 2017.
  5. Binärbäume und Binäre Suchbäume: 2019, aber nicht 2018 und 2017.
  6. Graphen: 2017, aber nicht 2019 und 2018.

Grundkurs

Vorabi-Klausur (GK)

a) Datenbanken:

  1. Entity-Relationship-Modell, relationales Datenmodell
  2. SQL
  3. Normalisierung
  4. mit Java auf SQL zugreifen
  5. Grundprinzipien des Datenschutzes:
    1. Verbot mit Erlaubnisvorbehalt
    2. Erforderlichkeit

b) lineare Datenstrukturen, Implementationsdiagramme, Vererbung

  1. Erstellen / Erweitern von Implementationsdiagrammen
  2. Anwendung von linearen Datenstrukturen in der Programmierung: List, Stack, Queue
  3. Vererbung und Polymorphie

Abiklausur (GK)

Der Lehrer muss aus 4 Aufgaben 2 auswählen und den Schülern vorlegen. Die Schüler haben keine Auswahl. In der Regel haben die 4 Aufgaben folgende Schwerpunkte:

  1. lineare Datenstrukturen, Implementationsdiagramme, Objektorientierte Programmierung
  2. Binärbäume, binäre Suchbäume
  3. Datenbanken
  4. Automaten und Grammatiken

Es muss eine Aufgabe aus den Bereichen 1+2 ausgewählt werden, die andere Aufgabe ist frei wählbar.