diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..432eaa8
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1676024252628
+
+
+ 1676024252628
+
+
+
+
+
+
+
+ 1676041825247
+
+
+
+ 1676041825247
+
+
+ 1676042030326
+
+
+
+ 1676042030326
+
+
+ 1676042189363
+
+
+
+ 1676042189363
+
+
+ 1676042246877
+
+
+
+ 1676042246877
+
+
+ 1676044239470
+
+
+
+ 1676044239470
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/digital/technik/DigitalTechnik.java b/src/digital/technik/DigitalTechnik.java
new file mode 100644
index 0000000..3a73653
--- /dev/null
+++ b/src/digital/technik/DigitalTechnik.java
@@ -0,0 +1,570 @@
+package src.digital.technik;
+
+import java.util.Scanner;
+
+public class DigitalTechnik {
+
+ public DigitalTechnik() {
+ }
+
+ void digitalTechnik1() {
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Willkommen");
+ System.out.println("Bitte wählen Sie ein Thema (Zahl):");
+ System.out.println("1. Information");
+ System.out.println("2. Bit");
+ System.out.println("3. Codes");
+ System.out.println("4. Huffmann-Codierung");
+
+ int choice = sc.nextInt();
+ sc.nextLine();
+
+ if (choice == 1) {
+ System.out.println("""
+ Information: Kommunizierte oder empfangene Daten, die
+ Ungewissheit über ein bestimmtes Fakt oder einen Sachverhalt\s
+ auflöst.""");
+
+ } else if (choice == 2) {
+ System.out.println("""
+ Bit ist die Kurzform für binary digit.\s
+ Lateinisch bina bedeutet doppelt oder zwei.
+ Ein Bit kann zwei Werte annehmen: 0 und 1.
+ Das Bit ist die kleinste Informationseinheit.
+ Beipsiele:
+ Spannung vorhanden, z.B. 5V (1) oder nicht (0)
+ Schalter geschlossen (1) oder offen (0)
+ Material magnetisiert (1) oder nicht (0)
+ """);
+
+ } else if (choice == 3) {
+ System.out.println("""
+ Ein Code ist eine Abbildungsvorschrift für eindeutige\s
+ Zuordnung (Codierung) von
+ Symbolen einer Urmenge zu
+ Symbolen einer Bildmenge.
+ Die Zuordnung muss nicht (eindeutig) umkehrbar sein!
+ """);
+
+ } else if (choice == 4) {
+ System.out.println("""
+ Die Huffmann Codierung ist ein Codierungsverfahren, das\s
+ zu einem optimalen Code mit möglichst kleiner mittlerer Codelänge führt!
+ """);
+
+ } else {
+ System.out.println("Ungültige Eingabe!");
+ }
+ }
+
+ void digitalTechnik2() {
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Willkommen");
+ System.out.println("Bitte wählen Sie ein Thema (Zahl):");
+ System.out.println("1. Hexadezimale Zahlen");
+ System.out.println("2. Umrechnung dezimal in binär");
+ System.out.println("3. Umrechnung dezimal in hexadezimal");
+ System.out.println("4. Einerkomplement");
+ System.out.println("5. Zweierkomplement");
+
+ int choice = sc.nextInt();
+ sc.nextLine();
+
+ if (choice == 1) {
+ System.out.println("""
+ Hexadezimale Zahlen (R = 16) werden häufig zur kompakten
+ Darstellung von Binärzahlen verwendet.
+ Es werden die Ziffern {0, 1, 2, . . . , 9,A,B,C, D,E, F} verwendet
+ (A bis F repräsentieren die Wertigkeit 10 bis 15)
+ Jedes Hexadezimale Digit kann mit genau 4 Bit dargestellt
+ werden""");
+
+ } else if (choice == 2) {
+ System.out.println("""
+ Um eine dezimale Zahl in eine binäre Zahl umzuwandeln, kann man den folgenden Prozess verwenden:
+
+ Die dezimale Zahl durch 2 teilen und den Quotienten notieren.
+
+ Den Rest des Teilens notieren und ihn als die letzte Ziffer der binären Zahl betrachten.
+
+ Wiederholen Schritt 1 und 2 mit dem Quotienten, bis der Quotient 0 ist.
+
+ Die Restschritte in umgekehrter Reihenfolge zusammensetzen, um die binäre Zahl zu erhalten.""");
+
+ } else if (choice == 3) {
+ System.out.println("""
+ Um eine dezimale Zahl in eine hexadezimale Zahl umzuwandeln, kann man den folgenden Prozess verwenden:
+
+ Die dezimale Zahl durch 16 teilen und den Quotienten notieren.
+
+ Den Rest des Teilens notieren und ihn als die letzte Ziffer der hexadezimalen Zahl betrachten.
+
+ Wiederholen Schritt 1 und 2 mit dem Quotienten, bis der Quotient 0 ist.
+
+ Die Restschritte in umgekehrter Reihenfolge zusammensetzen, um die hexadezimale Zahl zu erhalten.""");
+
+ } else if (choice == 4) {
+ System.out.println("""
+ Ein Einerkomplement ist ein Zahlensystem, das verwendet wird, um negative Werte in einem Computer darzustellen.\s
+ Es basiert auf der Idee, dass jede Zahl in einem binären System (bestehend aus 1en und 0en) ihre negativ vorzeichenbehaftete Entsprechung hat.
+ Eine negative Zahl wird durch das Invertieren aller Bits (Änderung von 1 zu 0 und von 0 zu 1) einer positiven Zahl und das Hinzufügen 1 zum Ergebnis dargestellt.""");
+
+ } else if (choice == 5) {
+ System.out.println("""
+ Das Zweierkomplement ist eine Methode zur Darstellung von negativen Werten in einem Computer. Es ermöglicht es, negative und positive Werte mit der gleichen Anzahl von Bits zu repräsentieren.
+
+ In einem Zweierkomplement-System, wird die höchstwertige Bit (die sogenannte "Vorzeichenbit") verwendet, um das Vorzeichen einer Zahl anzugeben. Eine 0 bedeutet eine positive Zahl, während eine 1 eine negative Zahl darstellt.
+ Die übrigen Bits repräsentieren den Wert der Zahl. Um eine negative Zahl zu berechnen, werden die Bits der positiven Entsprechung invertiert und 1 hinzugefügt.""");
+
+ } else {
+ System.out.println("Ungültige Eingabe!");
+ }
+ }
+
+ void digitalTechnik3() {
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Willkommen");
+ System.out.println("Bitte wählen Sie ein Thema (Zahl):");
+ System.out.println("1. Boolsche Algebra");
+ System.out.println("2. Minterme");
+ System.out.println("3. Maxterme");
+ System.out.println("4. KDNF");
+ System.out.println("5. KKNF");
+ System.out.println("6. DNF");
+ System.out.println("7. KNF");
+
+
+ int choice = sc.nextInt();
+ sc.nextLine();
+
+ if (choice == 1) {
+ System.out.println("""
+ In der Digitaltechnik ist die boolsche Algebra eine spezielle Form der Algebra, \n
+ die sich mit logischen Ausdrücken und Operationen beschäftigt. Sie wird hauptsächlich in der Schaltungstechnik und der Informatik verwendet. \n
+ Die Grundelemente der boolschen Algebra sind die logischen Variablen "wahr" (1) und "falsch" (0) sowie die logischen Operatoren "und" (∧), "oder" (∨), "nicht" (¬) und "gleich" (⇔). \n
+ Mit diesen Operatoren können komplexe logische Ausdrücke erstellt und ausgewertet werden, die in digitalen Schaltungen verwendet werden,
+
+ wie z.B. in Computern, Mobiltelefonen und anderen elektronischen Geräten.
+ """);
+
+ } else if (choice == 2) {
+ System.out.println("""
+ In der Digitaltechnik werden Minterme verwendet, um eine bestimmte Funktion zu implementieren.\s
+ Minterme beziehen sich auf die kleinsten logischen Funktionen, die in einem digitalen System verwendet werden können.\s
+ Sie bestehen aus einer oder mehreren Eingängen und einem Ausgang und können durch eine Wahrheitstabelle oder eine Boolean-Funktion beschrieben werden.""");
+
+ } else if (choice == 3) {
+ System.out.println("In der Digitaltechnik sind Maxterme die negierten Minterme. Ein Maxterm ist eine logische Funktion, die durch die Negation eines Minterms beschrieben wird. \n" +
+ "Maxterme haben die gleiche Anzahl an Eingängen wie Minterme, aber der Ausgang eines Maxterms ist das Gegenteil des Ausgangs eines entsprechenden Minterms.");
+
+ } else if (choice == 4) {
+ System.out.println("Die kanonische disjunktive Normalform (KDNF) ist eine Darstellung einer boolschen Funktion als Summe der Produkte der Minterme.");
+
+ } else if (choice == 5) {
+ System.out.println("Die kanonische konjunktive Normalform (KKNF) ist eine Darstellung einer boolschen Funktion als Produkt der Summen der Maxterme.");
+
+ } else if (choice == 6) {
+ System.out.println("""
+ Treten nicht alle Variablen in den Mintermen auf,
+ spricht man von der Disjunktiven
+ Normalform DNF.
+ """);
+
+ } else if (choice == 7) {
+ System.out.println("""
+ Treten nicht alle Variablen in den Maxtermen auf,
+ spricht man von der nicht-kanonischen Konjunktiven
+ Normalform KNF.
+ """);
+
+ } else {
+ System.out.println("Ungültige Eingabe!");
+ }
+ }
+
+ void digitalTechnik4() {
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Willkommen");
+ System.out.println("Bitte wählen Sie ein Thema (Zahl):");
+ System.out.println("1. NOR");
+ System.out.println("2. NAND");
+ System.out.println("3. Aquivalenz");
+ System.out.println("4. Implikation");
+ System.out.println("5. Multiplexer");
+
+ int choice = sc.nextInt();
+ sc.nextLine();
+
+ if (choice == 1) {
+ System.out.println("""
+ Der NOR-Operator ist ein logisches Schaltwerk in der Digitaltechnik, das die Funktion des "Nicht-Oder" ausführt.
+ Es hat zwei oder mehrere Eingänge und einen Ausgang. Der Ausgang ist "wahr" (1), wenn alle Eingänge "falsch" (0) sind. \n
+ Ansonsten ist der Ausgang "falsch" (0). Es ist das logische Gegenteil des OR-Operators.""");
+
+ } else if (choice == 2) {
+ System.out.println("""
+ Der NAND-Operator ist ein logisches Schaltwerk in der Digitaltechnik, das die Funktion des "Nicht-Und" ausführt.\s
+ Es hat zwei oder mehrere Eingänge und einen Ausgang.\s
+ Der Ausgang ist "falsch" (0), wenn alle Eingänge "wahr" (1) sind. Ansonsten ist der Ausgang "wahr" (1). \n
+ Es ist das logische Gegenteil des AND-Operators.""");
+
+ } else if (choice == 3) {
+ System.out.println("""
+ Der Äquivalenzoperator ist ein logisches Schaltwerk in der Digitaltechnik, das die Funktion des "Entweder-Oder" ausführt.\s
+ Es hat zwei Eingänge und einen Ausgang. Der Ausgang ist "wahr" (1), wenn die beiden Eingänge gleich sind (beide 1 oder beide 0) und "falsch" (0),\s
+ wenn die Eingänge unterschiedlich sind (einer ist 1 und der andere ist 0). Es ist das logische Gegenteil des XOR Operators.""");
+
+ } else if (choice == 4) {
+ System.out.println("Funktionsweise: Das Ergebnis der Implikation zweier Variablen a\n" +
+ "und b ist genau dann 1 wenn aus Aussage ≫a folgt b≪ wahr ist.");
+
+ } else if (choice == 5) {
+ System.out.println("Ein Multiplexer ist ein elektronisches Schaltwerk, das es ermöglicht, mehrere Eingangssignale auf einen einzigen Ausgang zu schalten.");
+
+ } else {
+ System.out.println("Ungültige Eingabe!");
+ }
+ }
+
+ void digitalTechnik5() {
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Willkommen");
+ System.out.println("Bitte wählen Sie ein Thema (Zahl):");
+ System.out.println("1. KV-Diagram");
+ System.out.println("2. Primimplikant");
+ System.out.println("3. KPI, API, REPI");
+
+
+ int choice = sc.nextInt();
+ sc.nextLine();
+
+ if (choice == 1) {
+ System.out.println("Ein KV-Diagramm ist ein Diagramm, in dem die Beziehung zwischen zwei oder mehr Variablen dargestellt wird.");
+
+ } else if (choice == 2) {
+ System.out.println("""
+ Primimplikant (Primterm): Term, der sich nicht weiter
+ vereinfachen (zusammenfassen) lässt. (Ein Term mit maximaler
+ Ordnung.) – Größtmögliche Zusammenfassung von 1, 2, 4, 8, etc.
+ 1en (0en) im KV-Diagramm.""");
+
+ } else if (choice == 3) {
+ System.out.println("""
+ Kernprimimplikant KPI (essentieller Primterm): Primimplikant,
+ der zur Realisierung einer Funktion unbedingt erforderlich ist. Die
+ Minterme aus denen er entstand, können nicht anders überdeckt
+ werden. Diese werden zur Minimierung zwingend benötigt!
+
+ Absolut eliminierbarer Primimplikant API: Primimplikant,
+ dessen Minterme (Maxterme) alle von Kernprimimplikanten
+ uberdeckt werden. Diese können zur Minimierung weggelassen
+ werden.
+
+ Alle weiteren Primimplikanten sind relativ eliminierbare
+ Primimplikanten (REPI). Hier muss zur Minimierung eine
+ Auszahl erfolgen!
+ """);
+
+ } else {
+ System.out.println("Ungültige Eingabe!");
+ }
+ }
+
+ void digitalTechnik6() {
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Willkommen");
+ System.out.println("Bitte wählen Sie ein Thema (Zahl):");
+ System.out.println("1. Dont Cares");
+ System.out.println("2. Dekoder");
+ System.out.println("3. Ripple-Cary-Addierer");
+
+ int choice = sc.nextInt();
+ sc.nextLine();
+
+ if (choice == 1) {
+ System.out.println("""
+ In der Digitaltechnik sind Dont-Cares (engl. für "nicht interessiert") bestimmte Zustände oder Eingangskombinationen,\s
+ die für das Verhalten einer Schaltung nicht relevant sind. Sie können in der Schaltalgebra verwendet werden,\s
+ um die Anzahl der benötigten Gates in einer Schaltung zu reduzieren und somit die Leistung und Effizienz der Schaltung zu verbessern.""");
+
+ } else if (choice == 2) {
+ System.out.println("In der Digitaltechnik sind Dekoder Schaltungen, die mehrere Eingangssignale in eine bestimmte Anzahl von Ausgangssignalen umwandeln. \n" +
+ "Sie werden verwendet, um digitale Codes zu interpretieren und bestimmte Aktionen auszuführen.");
+
+ } else if (choice == 3) {
+ System.out.println("""
+ Der Carry-Ripple-Addierer, auch Ripple-Carry-Addierer oder ripple-through carry, ist ein Addiernetz,\s
+ dient also der Addition mehrstelliger Binärzahlen. Ein n-Bit-Carry-Ripple-Addierer kann zwei n-stellige Binärzahlen addieren,\s
+ das Ergebnis hat n+1 Stellen. Das Schaltnetz hat damit 2n+1 Eingänge und n+1 Ausgänge.""");
+
+ } else {
+ System.out.println("Invalid choice. Please try again.");
+ }
+ }
+
+ void digitalTechnik7() {
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Willkommen");
+ System.out.println("Bitte wählen Sie ein Thema (Zahl):");
+ System.out.println("1. ALU");
+ System.out.println("2. Moore und Mealy Automaten");
+ System.out.println("3. Schaltwerke (asynchrone Automaten)");
+
+
+ int choice = sc.nextInt();
+ sc.nextLine();
+
+ if (choice == 1) {
+ System.out.println("In der Digitaltechnik ist eine ALU (Arithmetisch-Logische Einheit) ein Baustein in einem Prozessor, der die grundlegenden arithmetischen und logischen Operationen ausführt. \n" +
+ "Dazu gehören Operationen wie Addition, Subtraktion, Multiplikation, Division, Vergleich, Schaltungen und Bitverschiebungen.");
+
+ } else if (choice == 2) {
+ System.out.println("""
+ Ein Moore-Automat ist ein FA, bei dem jeder Zustand durch einen Ausgabewert (auch als "Zustandsvariable" bezeichnet) repräsentiert wird. Die Ausgabe des Automaten hängt also nur vom aktuellen Zustand ab und nicht von den Eingabezeichen.
+
+ Ein Mealy-Automat ist ein FA, bei dem die Ausgabe von sowohl dem aktuellen Zustand als auch den Eingabezeichen abhängt.""");
+
+ } else if (choice == 3) {
+ System.out.println("Asynchrone Schaltwerke (auch asynchrone Automaten genannt) sind Schaltungen, die unabhängig von einem gemeinsamen Takt funktionieren und sich nicht synchron im gleichen Takt ändern. \n" +
+ "Diese Schaltungen werden oft in digitalen Systemen verwendet, die Daten in Echtzeit verarbeiten müssen, da sie schnelle Reaktionen auf Ereignisse ermöglichen und eine hohe Flexibilität in der Datenverarbeitung bieten.");
+
+
+ } else {
+ System.out.println("Ungültige Eingabe!");
+ }
+ }
+
+ void digitalTechnik8() {
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Willkommen");
+ System.out.println("Bitte wählen Sie ein Thema (Zahl):");
+ System.out.println("1. JK-FlipFlop");
+ System.out.println("2. T-Flipflop");
+ System.out.println("3. Taktpegelgesteuertes D-Latch");
+ System.out.println("4. Taktflankengesteuertes D-Flipflop");
+
+
+ int choice = sc.nextInt();
+ sc.nextLine();
+
+ if (choice == 1) {
+ System.out.println("""
+ Ein JK-Flipflop ist eine Art von Flipflop, das auf eine Kombination von Eingangssignalen J und K reagiert. Es hat zwei Eingänge (J und K) und einen Ausgang (Q).\s
+ Der Ausgang wird auf den Wert von J gesetzt, wenn K auf logisch 0 steht und auf den Wert von K gesetzt, wenn J auf logisch 0 steht.\s
+ Wenn beide J und K auf logisch 1 stehen, wird der Ausgang invertiert.""");
+
+
+ } else if (choice == 2) {
+ System.out.println("""
+ Ein T-Flipflop ist eine Art von Flipflop, das auf ein Eingangssignal T reagiert. Es hat nur einen Eingang (T) und einen Ausgang (Q). \n
+ Der Ausgang wird invertiert, wenn das Eingangssignal T auf logisch 1 steht.
+
+ Es ist ein Schaltkreis, der den Zustand des Ausgangs auf die negierte Form des Eingangs setzt.
+
+ """);
+
+ } else if (choice == 3) {
+ System.out.println("""
+ Das Taktpegelgesteuerte D-Latch ist eine digitale Schaltung, die zur Speicherung von binären Informationen verwendet wird. Es besteht aus zwei Eingängen (D und CLK), einem Taktpegel, und einem Ausgang (Q).\s
+ Der Wert des Eingangs "D" wird bei einem negativen Flankenwechsel des Takteingangs "CLK" gespeichert und bleibt bis zum nächsten negativen Flankenwechsel bestehen.""");
+
+ } else if (choice == 4) {
+ System.out.println("""
+ Das Taktflankengesteuerte D-Flipflop ist eine digitale Schaltung, die zur Speicherung von binären Informationen verwendet wird. Es besteht aus zwei Eingängen (D und CLK), einem Takt, und einem Ausgang (Q).\s
+ Der Wert des Eingangs "D" wird bei einer positiven Taktflanke des Takteingangs "CLK" gespeichert und bleibt bis zur nächsten positiven Taktflanke bestehen.\s
+ Dieses Flipflop ist ein sehr wichtiger Baustein in der digitalen Technik und wird oft in der Registerspeicherung, bei der Übertragung von Daten und in sequentiellen Schaltungen eingesetzt.""");
+
+
+ } else {
+ System.out.println("Ungültige Eingabe!");
+ }
+ }
+
+ void digitalTechnik9() {
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Willkommen");
+ System.out.println("Bitte wählen Sie ein Thema (Zahl):");
+ System.out.println("1. Mod-4 Zähler mit enable");
+ System.out.println("2. Unterschied Moore/Mealy Automaten");
+
+ int choice = sc.nextInt();
+ sc.nextLine();
+
+ if (choice == 1) {
+ System.out.println("""
+ Der Mod-4-Zähler mit Enable ist ein Zähler, der dazu verwendet wird, eine bestimmte Anzahl von Schritten oder Zustände durchzugehen, bevor er wieder zum Anfang zurückkehrt.\s
+ Der Mod-4-Zähler hat 4 Zustände: 0, 1, 2 und 3, und er wechselt zum nächsten Zustand, wenn ein Taktsignal empfangen wird.\s
+ Wenn der Zähler in den Zustand 3 gelangt, kehrt er zurück zum Zustand 0, und der Prozess beginnt erneut.""");
+
+ } else if (choice == 2) {
+ System.out.println("""
+ Der Unterschied zwischen den beiden besteht darin, wie sie Zustände und Übergänge definieren und wie sie Ausgänge berechnen:
+
+ Moore-Automaten: In Moore-Automaten werden Ausgänge ausschließlich durch den aktuellen Zustand berechnet. Jeder Zustand hat einen festen Ausgangswert, der unabhängig von den Eingängen ist.
+
+ Mealy-Automaten: In Mealy-Automaten werden Ausgänge auf der Basis sowohl des aktuellen Zustands als auch der Eingänge berechnet. Jeder Übergang hat einen festen Ausgangswert, der von beiden bestimmt wird.""");
+
+ } else {
+ System.out.println("Ungültige Eingabe!");
+ }
+ }
+
+ void digitalTechnik10() {
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Willkommen");
+ System.out.println("Bitte wählen Sie ein Thema (Zahl):");
+ System.out.println("1. Register");
+ System.out.println("2. Register mit Enable");
+
+ int choice = sc.nextInt();
+ sc.nextLine();
+
+ if (choice == 1) {
+ System.out.println("""
+ Ein Register aus D-Flipflops ist eine Anordnung von D-Flipflops, die verwendet wird, um digitale Daten zu speichern und zu übertragen. Jeder D-Flipflop im Register hat einen D-Eingang, einen Clock-Eingang und einen Q-Ausgang.
+
+ Der D-Eingang jedes Flipflops empfängt ein Datensignal, das gespeichert werden soll, der Clock-Eingang steuert den Zeitpunkt, zu dem die Daten in den Flipflop geladen werden sollen, und der Q-Ausgang gibt die aktuelle Speicherung des Flipflops aus.""");
+
+ } else if (choice == 2) {
+ System.out.println("""
+ Ein Register mit Enable ist ein Register, das über einen zusätzlichen Eingang verfügt, der als "Enable"-Eingang bezeichnet wird. Dieser Eingang ermöglicht es, das Register zu aktivieren oder zu deaktivieren.
+
+ Wenn der Enable-Eingang auf logisch 1 steht, arbeitet das Register normal und speichert die Daten, die über die D-Eingänge empfangen werden, wenn das Clock-Signal empfangen wird. Wenn der Enable-Eingang auf logisch 0 steht, arbeitet das Register nicht und die Daten werden nicht gespeichert.""");
+
+ } else {
+ System.out.println("Ungültige Eingabe!");
+ }
+ }
+
+ void digitalTechnik11() {
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Willkommen");
+ System.out.println("Bitte wählen Sie ein Thema (Zahl):");
+ System.out.println("1. 4x4-Bit-Registerfile");
+ System.out.println("2. Minimal Prozessor");
+
+ int choice = sc.nextInt();
+ sc.nextLine();
+
+ if (choice == 1) {
+ System.out.println("""
+ 4x4-Bit-Registerfile ist ein digitaler Speicherblock,
+ der aus vier 4-Bit-Registern besteht und verwendet wird, um mehrere Daten gleichzeitig zu speichern und zu übertragen.\s
+ Jedes Register im Registerfile hat einen Satz von Eingängen und Ausgängen.""");
+
+ } else if (choice == 2) {
+ System.out.println("Ein Minimalprozessor, auch als \"Reduced Instruction Set Computer\" (RISC) bezeichnet, ist ein Prozessor, \n" +
+ "der nur eine begrenzte Anzahl von Befehlen (Instruktionen) unterstützt, die jedoch sehr schnell ausgeführt werden können. ");
+
+ } else {
+ System.out.println("Ungültige Eingabe!");
+
+ }
+ }
+
+ void digitalTechnik12() {
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Willkommen");
+ System.out.println("Bitte wählen Sie ein Thema (Zahl):");
+ System.out.println("1. Minimal-Computer");
+ System.out.println("2. Erweiterungen am Minimal-Computer");
+ System.out.println("3. Aufbau Minimalcomputer");
+ System.out.println("4. Peripherie");
+ System.out.println("5. Mips Prozessor");
+
+ int choice = sc.nextInt();
+ sc.nextLine();
+
+ if (choice == 1) {
+ System.out.println ("Ein Minimal-Computer ist ein Computer, der auf das Minimum an Komponenten und Funktionalitäten reduziert wurde, \n um nur die grundlegendsten Aufgaben ausführen zu können.");
+
+ } else if (choice == 2) {
+ System.out.println("In der Digitaltechnik gibt es verschiedene Erweiterungen, die man an einem Minimal-Computer vornehmen kann, um seine Funktionalität zu erhöhen. Hier sind einige Beispiele:\n" +
+ "\n" +
+ "Peripheriegeräte: Zusätzliche Geräte wie Tastaturen, Mäuse, Displays oder Speichermedien (z.B. Festplatten oder USB-Sticks) können an einen Minimal-Computer ");
+
+ } else if (choice == 3) {
+ System.out.println("Der Aufbau eines Minimal-Computers hängt von seiner spezifischen Konfiguration und den gewünschten Funktionalitäten ab, aber im Allgemeinen besteht er aus folgenden Komponenten:\n" +
+ "\n" +
+ "Mikroprozessor oder Mikrocontroller: Dies ist das Herzstück des Minimal-Computers, das die Berechnungen ausführt und das System steuert.");
+
+ } else if (choice == 4) {
+ System.out.println("In der Digitaltechnik bezeichnet der Begriff \"Peripherie\" (engl. \"peripheral\") Geräte oder Komponenten, die an einen Computer oder ein anderes digitales Gerät angeschlossen werden können, um seine Funktionalität zu erhöhen.");
+
+ } else if (choice == 5) {
+ System.out.println("MIPS (acronym for \"Microprocessor without Interlocked Pipeline Stages\") ist ein Architektur-Design für Mikroprozessoren, das ursprünglich von MIPS Technologies entwickelt wurde.");
+
+ } else {
+ System.out.println("Ungültige Eingabe!");
+
+ }
+ }
+
+ void digitalTechnik13() {
+
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Willkommen");
+ System.out.println("Bitte wählen Sie ein Thema (Zahl):");
+ System.out.println("1. MIPS Register");
+ System.out.println("2. MIPS32");
+ System.out.println("3. MIPS Befehlssatzarchitektur");
+
+ int choice = sc.nextInt();
+ sc.nextLine();
+
+ if (choice == 1) {
+ System.out.println ("In der MIPS-Architektur sind Register ein wesentlicher Bestandteil des Prozessor-Designs. Jeder MIPS-Prozessor verfügt über eine begrenzte Anzahl an Register, die als schnelle Speicher für Daten und Anweisungen dienen.");
+
+ } else if (choice == 2) {
+ System.out.println("MIPS32 ist eine bestimmte Implementierung der MIPS-Architektur für Mikroprozessoren. Es ist eine spezifische Version des MIPS-Designs, die speziell für 32-Bit-Systeme entwickelt wurde.");
+
+ } else if (choice == 3) {
+ System.out.println("Die MIPS Befehlssatzarchitektur (Instruction Set Architecture, ISA) ist eine RISC (Reduced Instruction Set Computing) Architektur, die für Mikroprozessoren entwickelt wurde. Der MIPS Befehlssatz besteht aus einer begrenzten Anzahl an einfachen und leicht zu verarbeitenden Befehlen, die von einem Prozessor ausgeführt werden können.");
+
+ } else {
+ System.out.println("Ungültige Eingabe!");
+
+ }
+ }
+
+ void digitalTechnik14() {
+ Scanner sc = new Scanner(System.in);
+
+ System.out.println("Willkommen");
+ System.out.println("Bitte wählen Sie ein Thema (Zahl):");
+ System.out.println("1. MIPS32 Befehlssatz & Assembler");
+ System.out.println("2. Mooresches Gesetz");
+ System.out.println("3. Transistoren");
+
+ int choice = sc.nextInt();
+ sc.nextLine();
+
+ if (choice == 1) {
+ System.out.println("MIPS32 ist eine spezielle Befehlssatzarchitektur innerhalb der MIPS-Familie, die für 32-Bit-Systeme optimiert ist. Es verwendet einen RISC (Reduced Instruction Set Computing) Ansatz und bietet einen begrenzten, aber leicht zu verarbeitenden Befehlssatz.\n" +
+ "\n" +
+ "Der Assembler ist ein Programm, das den Quellcode, der in einer Assembler-Sprache geschrieben ist, in maschinenlesbaren Code (z.B. Binär- oder Hexadezimalcode) übersetzt. ");
+
+ } else if (choice == 2) {
+ System.out.println("Moore's Law ist ein besonderes Beobachtung, die von dem Intel-Gründer Gordon Moore 1965 formuliert wurde. Es besagt, dass sich die Anzahl der Transistoren auf einem integrierten Schaltkreis (IC) etwa alle 18-24 Monate verdoppeln wird, während die Kosten pro Transistor gleichzeitig sinken.");
+
+ } else if (choice == 3) {
+ System.out.println ("Transistoren sind elektronische Bauteile, die als Schalter oder Verstärker verwendet werden. Sie können Strom fließen lassen oder blockieren und sind damit ein wesentlicher Bestandteil vieler elektronischer Geräte, einschließlich Computern, Mobiltelefonen, Radios und anderer elektronischer Geräte.");
+
+ } else {
+ System.out.println("Ungültige Eingabe!");
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/digital/technik/DigitalTechnikTest.java b/src/digital/technik/DigitalTechnikTest.java
new file mode 100644
index 0000000..220233a
--- /dev/null
+++ b/src/digital/technik/DigitalTechnikTest.java
@@ -0,0 +1,29 @@
+package src.digital.technik;
+
+import org.junit.jupiter.api.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+
+class DigitalTechnikTest {
+
+
+ @Test
+ public void testDigitalTechnik1() {
+ String input = "3\n";
+ ByteArrayInputStream in = new ByteArrayInputStream(input.getBytes());
+ System.setIn(in);
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ System.setOut(new PrintStream(out));
+
+ DigitalTechnik digitalTechnik = new DigitalTechnik();
+ digitalTechnik.digitalTechnik1();
+
+ assertTrue(out.toString().contains("Die Zuordnung muss nicht (eindeutig) umkehrbar sein!"));
+ }
+}
\ No newline at end of file