🎯 IT FOS Prüfungsvorbereitung 2026

Informatik – Alle prüfungsrelevanten Themen kompakt zusammengefasst

📅 IT FOS Prüfung Berlin

Datum: 30. April 2026

Fach: Informatik (FOS)

Ziel: Sehr gute Note durch strukturierte Vorbereitung

1. Themenübersicht & Gewichtung

📊 Alle Prüfungsthemen nach Gewichtung

#ThemenblockGewichtungSchwierigkeit
1Zahlensysteme & Konvertierungen⭐⭐⭐ Hoch🟡 Mittel
2Digitaltechnik (Logik, Gatter, KV)⭐⭐⭐ Hoch🔴 Schwer
3OOP-Theorie (Begriffe, Konzepte)⭐⭐⭐ Hoch🟡 Mittel
4Java-Programmierung⭐⭐⭐ Hoch🔴 Schwer
5UML-Diagramme (Klassen/Objekt)⭐⭐ Mittel🟡 Mittel
6Struktogramme (Nassi-Shneiderman)⭐⭐ Mittel🟢 Leicht
7Programmablaufpläne (PAP)⭐⭐ Mittel🟢 Leicht
8Sortieralgorithmen⭐⭐ Mittel🟡 Mittel
9Datenbanken / Normalisierung⭐ Niedrig🟡 Mittel

2. Zahlensysteme & Konvertierungen

2.1 Dezimal ↔ Dual

📖 Umrechnungsmethoden

Dezimal → Dual: Fortlaufend durch 2 teilen, Reste von unten nach oben lesen.
Dual → Dezimal: Jede Stelle × 2Position (von rechts, bei 0 beginnend).
Kommazahlen: Nachkommastellen × 2, Ganzzahlanteil notieren.

✏️ Übungsaufgaben

  1. Wandle um: 0, 74, 101 (Dezimal → Dual)
  2. Wandle um: 1101111010₂ → Dezimal
  3. Wandle 21,75₁₀ ins Dualsystem um
  4. Berechne: 23 + 45 + 7 im Dualsystem
  5. Wie groß ist der Informationsgehalt einer 8-stelligen Binärinformation? → 2⁸ = 256 Möglichkeiten

2.2 Hexadezimal & Konvertierungen

🔤 Hex-Tabelle zum Auswendiglernen

Hex:  0    1    2    3    4    5    6    7
Dual: 0000 0001 0010 0011 0100 0101 0110 0111

Hex:  8    9    A    B    C    D    E    F
Dual: 1000 1001 1010 1011 1100 1101 1110 1111

Zusammenhang: Je 4 Bit = 1 Hex-Ziffer (da 16 = 2⁴)

✏️ Übungsaufgaben

  1. Wandle um: 14F5B₁₆ → Dual
  2. Wandle um: 1010 1111 0011₂ → Hexadezimal
  3. Erstelle eine Hex-Tabelle (0-F mit Dual- und Dezimalwerten)

3. Einer- und Zweierkomplement

📖 Komplement-Methoden

Einerkomplement: Alle Bits invertieren (0→1, 1→0). Problem: Es gibt +0 und −0 (Doppelte Null!).

Zweierkomplement: Einerkomplement + 1. Vorteil: Nur eine Null, Subtraktion = Addition des Komplements.

Subtraktion a − b: a + Zweierkomplement(b), Überlauf ignorieren.

🎯 Prüfungsfrage (häufig!)

„Weshalb ist die Verwendung des Zweierkomplements bei der Subtraktion von Binärzahlen der Verwendung des Einerkomplements vorzuziehen?"

→ Beim Einerkomplement gibt es zwei Darstellungen der Null (+0 und −0), was zu Fehlern führt. Das Zweierkomplement hat nur eine Null und ermöglicht eine direkte Subtraktion durch Addition.

✏️ Übungsaufgaben

  1. 00110101 + 00110101 (Addition)
  2. 01100111 + 00010101 (Addition)
  3. 00110101 − 01011100 (mit Einer- UND Zweierkomplement, 8-Bit)
  4. 10101 × 10101 (Multiplikation)
  5. 43 − 47 = (−4) im Dualsystem berechnen
  6. Wie lautet die dezimale 16 im Dualsystem? Wie im Zweierkomplement?

4. Digitaltechnik

4.1 Logische Gatter

📊 Wahrheitstabellen der Grundgatter

AND (∧)        OR (∨)         NOT (¬)        XOR (⊕)
A B | Y        A B | Y        A | Y          A B | Y
0 0 | 0        0 0 | 0        0 | 1          0 0 | 0
0 1 | 0        0 1 | 1        1 | 0          0 1 | 1
1 0 | 0        1 0 | 1                       1 0 | 1
1 1 | 1        1 1 | 1                       1 1 | 0

💡 Halbaddierer

Summe S = A XOR B
Übertrag C = A AND B
A B | S C
0 0 | 0 0
0 1 | 1 0
1 0 | 1 0
1 1 | 0 1

4.2 Boolesche Algebra & Vereinfachung

📐 Wichtige logische Identitäten

Idempotenz:      A ∧ A = A          A ∨ A = A
Neutralität:     A ∧ 1 = A          A ∨ 0 = A
Dominanz:        A ∧ 0 = 0          A ∨ 1 = 1
Komplement:      A ∧ ¬A = 0         A ∨ ¬A = 1
Kommutativ:      A ∧ B = B ∧ A      A ∨ B = B ∨ A
Assoziativ:      (A∧B)∧C = A∧(B∧C)
Distributiv:     A∧(B∨C) = (A∧B)∨(A∧C)
De Morgan:       ¬(A∧B) = ¬A ∨ ¬B   ¬(A∨B) = ¬A ∧ ¬B
Absorption:      A ∨ (A∧B) = A      A ∧ (A∨B) = A

4.3 KV-Diagramme, KNF, DNF

📖 Vorgehensweise KV-Diagramm

  1. Wahrheitstabelle aufstellen
  2. Werte ins KV-Diagramm eintragen (Gray-Code-Reihenfolge!)
  3. Blöcke bilden (2er-Potenzen: 1, 2, 4, 8...)
  4. Minimierte Funktion ablesen

DNF: Alle Minterme (= Zeilen mit Ergebnis 1) mit OR verknüpfen.
KNF: Alle Maxterme (= Zeilen mit Ergebnis 0) mit AND verknüpfen.

🎯 Prüfungshinweis 5 Punkte

KV-Diagramme kamen in der Klausur mit 5 Punkten vor – unbedingt üben!


5. OOP-Theorie

5.1 Grundbegriffe

📊 Die wichtigsten OOP-Begriffe

BegriffDefinitionBeispiel
KlasseVorlage/Bauplan/Datentyp für Objekteclass Rechteck { }
ObjektKonkrete Instanz einer KlasseRechteck r1 = new Rechteck(5, 3);
AttributEigenschaft/Variable einer Klasseprivate int breite;
MethodeFunktion innerhalb einer Klassepublic int berechneFlaeche()
KonstruktorSpezielle Methode zur Objekterzeugungpublic Rechteck(int b, int h)
ParameterWertübergabe an Methoden(int breite, int hoehe)
VererbungSubklasse erbt Attribute/Methodenclass Quadrat extends Rechteck
KapselungZugriffsschutz durch Modifikatorenprivate + public Getter/Setter
ÜberschreibenMethode wird in Subklasse neu definiert@Override public String toString()

🔑 Zugriffsmodifikatoren

public:     Von überall zugreifbar
private:    Nur innerhalb der eigenen Klasse zugreifbar
protected:  Innerhalb der eigenen Klasse + Subklassen zugreifbar

🎯 Prüfungsaufgabe 17 Punkte!

„Erläutern Sie die Begriffe Objekte, Klassen, Attribute, Konstruktoren und Methoden schriftlich in einem geschlossenen Text an einem Beispiel über eine Rechteckklasse."

📝 Mustertext (auswendig lernen!)

Eine Klasse ist ein Bauplan für Objekte. Die Klasse Rechteck definiert die Attribute breite und hoehe als private Variablen. Diese beschreiben die Eigenschaften jedes Rechtecks. Ein Konstruktor Rechteck(int b, int h) ist eine spezielle Methode, die beim Erzeugen eines Objektes aufgerufen wird und die Attribute mit den übergebenen Parametern initialisiert. Ein Objekt ist eine konkrete Instanz dieser Klasse, erzeugt durch new Rechteck(5, 3). Methoden wie berechneFlaeche() definieren das Verhalten der Objekte. Durch Kapselung (private Attribute, public Getter/Setter) wird sichergestellt, dass Attribute nicht unkontrolliert von außen verändert werden können. Durch Vererbung kann eine Klasse Quadrat von Rechteck erben und alle Attribute und Methoden übernehmen, ohne den Code duplizieren zu müssen.

5.2 Vererbung, Interfaces, Abstrakte Klassen

🔗 Vererbung

class Fahrzeug {                    // Oberklasse
    protected String marke;
    public void fahren() { }
}

class Auto extends Fahrzeug {       // Subklasse erbt von Fahrzeug
    private int tueren;
}
Mehrfachvererbung – Das Diamond-Problem:
Java erlaubt KEINE Mehrfachvererbung! Wenn eine Klasse von zwei Oberklassen erben würde, die die gleiche Methode haben → Konflikt!
Lösung: Interfaces verwenden.

🔌 Interface-Konzept

interface Schwimmfaehig {
    void schwimmen();          // Nur Methodensignaturen, keine Implementierung
}

interface Fahrbar {
    void fahren();
}

class Amphibienfahrzeug implements Schwimmfaehig, Fahrbar {
    public void schwimmen() { /* Implementierung */ }
    public void fahren() { /* Implementierung */ }
}

🏗️ Abstrakte Klassen

abstract class Fahrzeug {          // Kann nicht instanziiert werden
    abstract void bewegen();       // Muss von Subklassen implementiert werden
    public void hupen() { }        // Kann normale Methoden haben
}

abstract wenn die Oberklasse zu allgemein ist, um eigene Objekte zu haben


6. UML-Klassendiagramme

📖 UML-Klassendiagramm Aufbau

classDiagram class Klassenname { -Typ attribut1 -Typ attribut2 +Rueckgabe methode1() +void methode2(Typ p) }

Sichtbarkeiten: - (private), + (public), # (protected)

📊 Beziehungspfeile

Vererbung (leerer Pfeil), Implementierung (gestrichelt), Assoziation (einfache Linie), Aggregation (leere Raute), Komposition (volle Raute)

classDiagram class Subklasse class Oberklasse class Interface class Ganzes class Teil Oberklasse <|-- Subklasse : Vererbung Interface <|.. Subklasse : Implementierung KlasseA --> KlasseB : Assoziation Ganzes o-- Teil : Aggregation Ganzes *-- Teil : Komposition

🔢 Kardinalitäten

1      = genau eins
0..1   = null oder eins
*      = beliebig viele
1..*   = mindestens eins
0..*   = null oder beliebig viele

✏️ Übungsaufgaben

  1. Gastronomie-Klassendiagramm erstellen (Belegschaft, Kunden, Kellner, etc.)
  2. Fitnessstudio-Klassendiagramm
  3. Baum-Klassendiagramm: Baum → Äste → Zweige → Blätter
  4. Von Objektdiagramm auf Klassendiagramm schließen

7. Struktogramme & PAP

7.1 Struktogramme (Nassi-Shneiderman)

📊 Grundelemente

┌─────────────────────┐
│   Anweisung 1       │  ← Sequenz (nacheinander)
├─────────────────────┤
│   Anweisung 2       │
├─────────────────────┤
│   Anweisung 3       │
└─────────────────────┘

┌─────────────────────┐
│     Bedingung?      │  ← Verzweigung (if/else)
├──────────┬──────────┤
│   Ja     │   Nein   │
│ Aktion A │ Aktion B │
└──────────┴──────────┘

┌─────────────────────┐
│ Solange Bedingung   │  ← Kopfgesteuerte Schleife (while)
│ ┌─────────────────┐ │
│ │  Schleifenkörper│ │
│ └─────────────────┘ │
└─────────────────────┘

🎯 Klausuraufgabe 10 Punkte

Kaffeekochen als Struktogramm: 1. Kaffeefilter einlegen → 2. Kaffeepulver einfüllen → 3. Prüfen: Wasser im Tank? (Wenn nein: Tank auffüllen) → 4. Maschine einschalten

7.2 Programmablaufpläne (PAP / Flussdiagramme)

📊 PAP-Symbole (Flussdiagramme)

flowchart TD Start([Start / Ende]) --> Verarbeiten[Verarbeitung] Verarbeiten --> Bedingung{Bedingung?} Bedingung -->|Ja| EinAusgabe[/Ein- / Ausgabe/] Bedingung -->|Nein| Ende([Ende])

8. Java-Programmierung

8.1 Grundlagen: Variablen, Schleifen, Arrays

💻 Wichtige Codebeispiele

// Array deklarieren und initialisieren
int[] zahlen = {64, 34, 25, 12, 22, 11, 90};

// Array durchlaufen mit for-Schleife
for (int i = 0; i < zahlen.length; i++) {
    System.out.println(zahlen[i]);
}

// While-Schleife
int count = 0;
int zahl = 2;
while (count < 1000) {
    if (istPrim(zahl)) { count++; }
    zahl++;
}

8.2 Klassen und Objekte programmieren

💻 Muster einer vollständigen Klasse

public class Rechteck {
    private double breite;      // Attribute (private = Kapselung)
    private double hoehe;

    // Vollparametrisierter Konstruktor
    public Rechteck(double breite, double hoehe) {
        this.breite = breite;
        this.hoehe = hoehe;
    }

    // Getter
    public double getBreite() { return breite; }
    public double getHoehe() { return hoehe; }

    // Setter
    public void setBreite(double breite) { this.breite = breite; }
    public void setHoehe(double hoehe) { this.hoehe = hoehe; }

    // Fachliche Methoden
    public double berechneFlaeche() { return breite * hoehe; }
    public double berechneUmfang() { return 2 * (breite + hoehe); }

    // toString
    @Override
    public String toString() {
        return "Rechteck [" + breite + " x " + hoehe + "]";
    }
}

🎯 Klausuraufgabe 20 Punkte!

  1. Methode show() für Rechteck schreiben
  2. Rechteck-Objekt erzeugen und Ausgabe überprüfen
  3. Methode addiereRechteck() schreiben (zwei Rechtecke → neues Rechteck)

8.3 Vererbung programmieren

💻 Klausurbeispiel: Kuehlwagen erbt von Lastwagen

public class Lastwagen {
    private String kennzeichen;
    private double maxGewicht;

    public Lastwagen(String kennzeichen, double maxGewicht) {
        this.kennzeichen = kennzeichen;
        this.maxGewicht = maxGewicht;
    }
    // Getter und Setter...
}

public class Kuehlwagen extends Lastwagen {
    private int vorlaufzeit;    // Neues Attribut

    // Vollparametrisierter Konstruktor
    public Kuehlwagen(String kennzeichen, double maxGewicht, int vorlaufzeit) {
        super(kennzeichen, maxGewicht);     // Aufruf des Eltern-Konstruktors
        this.vorlaufzeit = vorlaufzeit;
    }

    public int getVorlaufzeit() { return vorlaufzeit; }
    public void setVorlaufzeit(int vorlaufzeit) { this.vorlaufzeit = vorlaufzeit; }

    @Override
    public String toString() {
        return super.toString() + ", Vorlaufzeit: " + vorlaufzeit;
    }
}

🎯 Klausuraufgabe 10 20 Punkte!

Genau dieses Muster wurde abgefragt!

8.4 Comparator-Interface

💻 Beispiel: Angestellte nach Gehalt sortieren

import java.util.*;

public class Angestellter {
    private String name;
    private double gehalt;
    private String arbeitszeit;  // "Vollzeit" oder "Teilzeit"
    // Konstruktor, Getter, Setter...
}

// Comparator für Gehalt (aufsteigend)
class GehaltComparatorAuf implements Comparator<Angestellter> {
    @Override
    public int compare(Angestellter a1, Angestellter a2) {
        return Double.compare(a1.getGehalt(), a2.getGehalt());
    }
}

// Comparator für Gehalt (absteigend)
class GehaltComparatorAb implements Comparator<Angestellter> {
    @Override
    public int compare(Angestellter a1, Angestellter a2) {
        return Double.compare(a2.getGehalt(), a1.getGehalt());
    }
}

// Sortierung anwenden:
List<Angestellter> liste = new ArrayList<>();
Collections.sort(liste, new GehaltComparatorAuf());

8.5 JavaFX: Beans, Binding, Property

📖 JavaFX Begriffe

Bean: Eine Java-Klasse, die Properties statt normaler Variablen verwendet.
Property: Ein "smarter" Wrapper um einen Wert (beobachtbar, bindbar).
Binding: Automatische Verknüpfung von Properties (Änderung wird weitergegeben).

💻 Codebeispiel: Person Bean

import javafx.beans.property.*;

public class Person {
    private final StringProperty name = new SimpleStringProperty();
    private final IntegerProperty age = new SimpleIntegerProperty();

    public String getName() { return name.get(); }
    public void setName(String value) { name.set(value); }
    public StringProperty nameProperty() { return name; }
}

9. Algorithmen & Sortierung

9.1 Definition Algorithmus

📖 Was ist ein Algorithmus?

Ein Algorithmus ist eine eindeutige Handlungsvorschrift zur Lösung eines Problems. Er besteht aus endlich vielen, wohldefinierten Einzelschritten. (= "Kochrezept")

9.2 Sequentielle Suche

💻 Sequentielle Suche

public class SequentielleSuche {
    public static int suche(int[] arr, int suchWert) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == suchWert) {
                return i;       // Gefunden → Index zurückgeben
            }
        }
        return -1;              // Nicht gefunden
    }
}
  • Aufwand: O(n) = linear
  • Im Schnitt: n/2 Vergleiche
  • Verdoppelt sich das Array → doppelt so lange Suche

9.3 Bubble Sort

💻 Bubble Sort

static void bubbleSort(int arr[], int n) {
    int i, j, temp;
    boolean swapped;
    for (i = 0; i < n - 1; i++) {
        swapped = false;
        for (j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];         // Tauschen
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                swapped = true;
            }
        }
        if (swapped == false) break;  // Optimierung: Schon sortiert → Abbruch
    }
}

Wie funktioniert es?

  1. Vergleiche immer zwei benachbarte Elemente
  2. Wenn links > rechts → tauschen
  3. Das größte Element "blubbert" nach rechts (daher der Name)
  4. Wiederhole für alle Elemente

Komplexität: O(n²) – nicht effizient für große Datenmengen


10. Datenbanken & Normalisierung

📖 Normalformen

1NF: Jedes Attribut enthält nur atomare (unteilbare) Werte. → Keine Listen, keine Wiederholungsgruppen in einer Zelle.

2NF: 1NF + Jedes Nicht-Schlüssel-Attribut hängt voll vom gesamten Primärschlüssel ab. → Keine teilweisen Abhängigkeiten bei zusammengesetztem Schlüssel.

3NF: 2NF + Kein Nicht-Schlüssel-Attribut hängt transitiv von einem anderen Nicht-Schlüssel-Attribut ab. → Keine indirekten Abhängigkeiten.


11. Prüfungssimulation & Tipps

11.1 Mündliche Prüfung (Häufige Fragen)

  1. Was versteht man unter dem Begriff Algorithmus?
    → Eindeutige Handlungsvorschrift zur Lösung eines Problems (endlich, wohldefiniert).
  2. Beschreibe die sequentielle Suche – was wird wie umgesetzt?
    → Jedes Element im Array wird nacheinander geprüft, bis das gesuchte Element gefunden wird. Komplexität: O(n).
  3. Wie viel länger dauert die Suche bei doppelter Array-Größe?
    → Doppelt so lange O(n).
  4. Erkläre OOP mit den Begriffen:
    → Klasse, Objekt, Konstruktor, Vererbung, Parameter, Methode, Attribut, Kapselung (Siehe Mustertext oben).
  5. Was bedeutet "Überschreiben" im Kontext der OOP?
    → Eine Methode der Oberklasse wird in der Subklasse mit gleichem Namen und Parametern neu definiert (@Override).

11.2 Komplexaufgabe: OOP + UML + Java

🎯 Übungsbeispiel: Fitnessstudio (ca. 45 Min)

Ein Fitnessstudio verwaltet seine Mitglieder digital. Erstelle:

  1. Ein UML-Klassendiagramm mit den Klassen: Fitnessstudio, Kette, Mitglied, Trainer, Quartal, Training
  2. Implementiere die Klasse Mitglied mit allen Attributen, Konstruktor, Getter/Setter
  3. Erstelle eine Klasse PremiumMitglied extends Mitglied mit Zusatzattribut rabatt
  4. Sortiere eine Liste von Mitgliedern nach Mitgliedsnummer (Comparator)

11.3 🎯 Tipps für den Prüfungstag

  • Zeitmanagement: Punkte pro Aufgabe beachten → 1 Punkt ≈ 1 Minute Arbeitszeit!
  • Zuerst alles lesen: Alle Aufgaben durchlesen und sich eine Übersicht verschaffen.
  • Leichtes zuerst: Mit den Aufgaben anfangen, bei denen du dir sicher bist.
  • UML: Sichtbarkeiten (+, -, #) und Pfeilarten (Rauten, offene/geschlossene Pfeilspitzen) GANZ GENAU zeichnen. Wenn etwas unleserlich ist, gibt es Punktabzug!
  • Java-Code: Syntax beachten (Semikolons, geschweifte Klammern, Großschreibung von Datentypen wie String).
  • Struktogramme/PAP: Saubere Kästen notieren und mit Lineal zeichnen!

12. Schnellreferenz: Häufigste Prüfungsaufgaben

⚡ Die häufigsten Prüfungsaufgaben

AufgabentypPunkteHäufigkeit
Zahlensystem-Umrechnung (Hex↔Dual↔Dez)9 P✅✅✅ Jede Klausur
OOP-Begriffe als zusammenhängender Text17 P✅✅✅ Jede Klausur
Vererbung: Klasse in Java implementieren20 P✅✅✅ Jede Klausur
Boolesche Terme vereinfachen3–5 P✅✅ Häufig
KV-Diagramm → KNF/DNF5 P✅✅ Häufig
Zweierkomplement-Berechnung10 P✅✅ Häufig
Struktogramm erstellen10 P✅✅ Häufig
UML-Klassendiagramm zeichnen10–20 P✅✅ Häufig
Praktische Java-Programmierung (am PC)20 P✅✅ Häufig
Wahrheitstabelle / Gatter3 P✅ Gelegentlich
Comparator implementieren5–10 P✅ Gelegentlich
Normalisierung (1NF→3NF)5–10 P✅ Gelegentlich

13. Selbstcheck-Checkliste

✅ Prüfe dich selbst – Kannst du das alles?

  • Hex→Dual→Dezimal fehlerfrei umrechnen
  • Zweierkomplement-Subtraktion durchführen
  • Wahrheitstabelle für beliebige Schaltungen aufstellen
  • KV-Diagramm erstellen und KNF/DNF ablesen
  • Boolesche Terme vereinfachen
  • Alle OOP-Begriffe in einem Text erklären
  • Java-Klasse mit Konstruktor und Getter/Setter schreiben
  • Vererbung mit extends und super() implementieren
  • Struktogramm erstellen
  • PAP zeichnen
  • UML-Klassendiagramm zeichnen
  • Bubble Sort erklären und Code verstehen
  • Sequentielle Suche erklären
  • Comparator implementieren
  • Normalisierung durchführen (1NF→2NF→3NF)