Informatik

1.140 Mitglieder, 5.051 Beiträge

Wie funktioniert die monoalphabetische Verschlüsselung?

Ich schreibe morgen eine Arbeit in Informatik und verstehe das nicht. Auf YouTube gibt es zwar Tutorials aber die scheinen mir nicht das zu sein was ich suche. Hier mal eine Aufgabe was man machen soll: Erstelle eine Verschlüsselungstabelle (bestehend aus Klartextaphabet und Geheimtextalphabet) aus dem Schlüsselsatz "Heute ist ein schöner Tag." Habe halt keine Ahnung was zu tun ist. Kann mich jemand aufklären?

Handsimulation - richtig?

Hallo, ich wollte mal gerne wissen, ob meine Handsimulation richtig ist. Ich hoffe jemand kann mir dabei helfen :) Aufgabe Führt eine Handsimulation für folgendes Programm durch. Schreibt also in die Tabelle, welche Zeilen nacheinander ausgeführt werden (erste Spalte), und welche Werte die Variablen nach Ausführung dieser Zeile jeweils haben (die anderen Spalten). Variablen, die zu diesem Zeitpunkt noch nicht existieren, werden mit - markiert Variablen, deren Wert undefiniert ist, werden mit undef markiert Felder von Variablen, die sich nicht ändern bleiben leer ! Dies wird interpretiert als “gleicher Wert wie in der Zeile davor”. Das wiederholte Eintragen von Werten in Felder von Variablen die sich nicht ändern ist falsch (Das Eintragen eines Wertes bedeutet "der Speicher für die Variable bekommt an dieser Stelle (erneut) den angegebenen Wert zugewiesen"). Die erste ausgeführte Zeile einer Funktion ist immer die öffnende Klammer Die letzte ausgeführte Zeile einer Funktion ist immer die schließende Klammer Beim Sprung in eine Funktion wird hinter die aktuelle Zeile in Klammern die Zeile, aus der der Sprung stattgefunden hat, geschrieben (z.B: 7(14); Achtung: Bitte nur die Zahlen und die Klammern. Sollten Leerzeichen dazwischen kommen, erkennt ISIS die Lösung als falsch an). Die Anzahl der Zeilen in der Tabelle ist abgezählt, die Vorgaben sind korrekt. Programm 1 public class HuetchenSpieler { 2 3 public static void sortieren(Huetchen links, Huetchen mitte, Huetchen rechts) { 4 links.kugel = rechts.kugel; 5 rechts.kugel = mitte.kugel; 6 mitte = links; 7 } 8 9 10 public static void main(String[] args) { 11 Huetchen l = new Huetchen(0); 12 Huetchen m = new Huetchen(0); 13 Huetchen r = new Huetchen(1); 14 Terminal.print("Wo ist die 1?\n links: "+l.kugel+", mitte: "+m.kugel+", rechts: "+r.kugel+" \n"); 15 sortieren(l,m,r); 16 Terminal.print("Und jetzt .. \n links: "+l.kugel+", mitte: "+m.kugel+", rechts: "+r.kugel+" \n"); 17 sortieren(l,m,r); 18 Terminal.print("Und jetzt .. \n links: "+l.kugel+", mitte: "+m.kugel+", rechts: "+r.kugel+" \n"); 19 } 20 } Das Objekt l erhält bei der Ausführung im Speicher Adresse 50, Objekt m Adresse 51 und Objekt r Adresse 52. Um euch ein besseres Bild von der Klasse Huetchen machen zu können steht im folgenden der Quelltext. Bei der Simulation soll sie aber vernachlässigt werden, nur HuetchenSpieler ist relevant. (Es muss also auch nicht beim Konstruktoraufruf in die Klasse gesprungen werden! ) Die Klasse Huetchen public class Huetchen { public int kugel; public Huetchen(int kugel) { this.kugel = kugel; } }
Bild zum Beitrag

Empfehlung für Informatik logisches Denken trainieren?

Hey, ich interessiere mich gerne für Informatik, nur habe ich in meiner letzten Informatik LK Klausur eine 5+ geschrieben, weil ich die Logik nicht verstanden habe wie man gewisse Probleme von Aufgaben lösen soll. Deswegen wollte ich fragen ob es Informatik Bücher gibt, welche Themen erklärt und es Anwendungsaufgaben gibt, die das logische Denken trainieren. In Mathe zum Beispiel haben wir ein Buch mit vielen Aufgaben und wenn ich ein Thema nicht gut kann, dann kann ich dort arbeiten und üben. Danke im Voraus für Empfehlungen!

Sind Marketing-Aussagen gelegentlich nicht einfach nur eine freche, gewaltig große Lüge?

Worte, die Hanson Robotics (ein US-amerikanisches Unternehmen) einem ihrer Roboter - genannt "Frau" Sophia - in den Mund legt: Im Griechischen bedeutet das Wort Sophia Weisheit. Und genau deshalb bin ich hier. Ich wurde geschaffen, um Menschen in realen Bereichen wie Medizin und Bildung zu helfen und der KI-Forschung zu dienen. Meine bloße Existenz provoziert eine öffentliche Diskussion über die Ethik der KI und die Rolle des Menschen in der Gesellschaft, insbesondere wenn menschenähnliche Roboter allgegenwärtig werden. Letztendlich möchte ich ein weises, einfühlsames Wesen werden und einen positiven Beitrag für die Menschheit und alle Lebewesen leisten. Meine Designer und ich träumen von einer Zukunft, in der KI und Menschen in Freundschaft und Symbiose zusammenleben und -arbeiten, um die Welt zu einem besseren Ort zu machen. Mensch-KI-Zusammenarbeit: Das ist es, worum es mir geht. https://www.hansonrobotics.com/sophia/ Auch Nick Bostrom, als Wissenschaftler, belügt sich durch sein Wunschdenken einfach nur selbst im folgenden Aufsatz: https://www.freethink.com/series/uprising/future-of-ai-superintelligence . Ich begreife solche Aufsätze einfach nur als Science Fiction (aber ganz sicher nicht als wissenschaftliches Denkergebnis). Wer denkt, mir widersprechen zu können, tue das bitte mit ausführlicher Begründung. Man beachte: Selbst KI-gesteuerte Roboter sind nichts weiter als durch Software-gesteuerte Maschinen, die ganz sicher nicht denken oder gar träumen können.

Welche Künstliche Intelligenz zum Bilder bearbeiten?

Guten Abend, ich suche nach einer künstliche Intelligenz, die Bilder, die ich hochlade nach meinen Wünschen bearbeitet. Zum Beispiel, wenn ich ein Bild von einem Menschen mit einem Affenkopf vermischen möchte. Dass ich eben Bilder reinschicke, ich sage, was am Bild verändert werden soll und mir die künstliche Intelligenz genau so das Bild verändert. Wenn es geht eine kostenfreie oder eine mit probe Zeitraum, vielen Dank!

Wie muss ich dieses Programm weiter anpassen?

Die Rechnung mit endlichen (Gleit-)Kommazahlen kann zu Ungenauigkeiten führen, es kann daher wünschenswert sein, ganzzahlige Brüche zu verwenden. In dieser Aufgabe soll eine Objektklasse zur Repräsentation von und Rechnung mit Brüchen erzeugt werden. Die Köpfe der geforderten Methoden sind bereits vorgegeben und dürfen nicht verändert werden. Die Methoden sollen entsprechend der Kommentare vervollständigt werden. Achten sie darauf diese Methoden, wann immer möglich, zu verwenden und so Duplikationen zu vermeiden. Alle Methoden deren Rückgabetyp Fraction ist, sollen ein neues Objekt erzeugen und zurückgeben und die zur Berechnung verwendeten Objekte unverändert lassen! Die Java-Standardbibliotheken Math und Integer dürfen (müssen aber nicht) verwendet werden. Um eine Gleitkommazahl bei der Rechnung mit Ganzzahlen zu erhalten muss ggf. Typecasting verwendet werden! Es stehen außerdem die folgenden zwei Methoden schon zur Verfügung: public static int GCD(int x, int y): Gibt den größten gemeinsamen Teiler der beiden Argumente (Greatest Common Divider) zurück. public static int LCM(int x, int y): Gibt das kleinste gemeinsame Vielfache der beiden Argumente (Lowest Common Multiple) zurück. public class Fraction { private int numerator, denominator; /** * Gibt den größten gemeinsamen Teiler der beiden Argumente (Greatest Common Divider) zurück. */ public static int GCD(int x, int y) { if (y == 0) return x; return GCD(y, x % y); } /** * Gibt das kleinste gemeinsame Vielfache der beiden Argumente (Lowest Common Multiple) zurück. */ public static int LCM(int x, int y) { return (x * y) / GCD(x, y); } //Beginn der Aufgabe /** * Vollstaendig parametrisierter Konstruktor der Zaehler und Nenner * uebergeben bekommt und die entsprechenden Attribute setzt. * Negative Vorzeichen (Zahlen kleiner als Null) duerfen nur im Zaehler * auftreten (nicht im "denominator"-Attribut). * Die Uebergabe eines negativen Nenners ("denominator"-Argument) an den Konstruktor ist jedoch zulaessig. * Der Konstruktor muss also den uebergebenen Nenner pruefen und sein Vorzeichen so behandeln, * dass der resultierende Bruch (die Attribute) die genannte Restriktion erfüllt * und der Wert des Bruchs (die Argumente) unverändert bleibt * (ein negatives Vorzeichen im Nenner muss also methematisch korrekt beseitigt werden). * Wird eine Null als Nenner uebergeben, so wird das entsprechende Attribut * auf Eins gesetzt. * Jeder erzeugte Bruch wird gekuerzt (dazu soll die entsprechende Mehode s.u. verwendet werden). */ public Fraction(int numerator, int denominator) { if(pDenominator<0){ numerator = -pNumerator; denominator = -pDenominator; } if(pDenominator == 0){ denominator = 1; } } /** * Gibt den Nenner zurueck. */ public int getDenominator() { return denominator; } /** * Gibt den Zaehler zurueck. */ public int getNumerator() { return numerator; } /** * Gibt den Bruch als Gleitkommazahl zurueck. */ public double toDouble() { double fraction = numerator / denominator; return fraction; } /** * Gibt einen String im Format * "Zaehler/Nenner" zurueck. */ public String toString() { double fraction = toDouble(); return numerator + "/" + denominator + " = " + fraction; } /** * Kuerzt (vereinfacht) den Bruch. */ public void shorten() { int factorC = GCD(numerator, denominator); numerator = numerator/factorC; denominator = denominator/factorC; } /** * Erweitert (macht gleichnamig), addiert dann den uebergebenen Bruch. */ public Fraction add(Fraction f) { numerator = numerator * f.denominator + f.numerator * denominator; denominator = denominator * f.denominator; cancel(); } /** * Multipliziert mit dem uebergebenen Bruch. */ public Fraction multiply(Fraction f) { numerator = numerator * f.numerator; denominator = denominator * f.denominator; cancel(); } /** * Bildet den Kehrwert, wenn der Zaehler ungleich Null ist. * Sonst wird der Bruch unveraendert zurueckgegeben. */ public Fraction reciprocal() { } /** * Dividiert durch den uebergebenen Bruch * (unter Verwendung von Kehrwert und Multiplikation). */ public Fraction divide(Fraction f) { numerator = numerator * f.denominator; denominator = denominator * f.numerator; cancel(); } }

Verständnis von Rekursion u.a. in Java?

Ich habe eine Logikfrage beim Thema Rekursion, was ich noch nicht verstanden habe. Wenn man jetzt z.B. diesen Code mit 4 ausführt: static long fakul(long n) { if (n==0) return 1; else return n * fakul(n-1);} Wie kommt man dann auf das Ergebnis 24, weil eigentlich wird die Methode doch so lange aufgerufen bis zum Rekursionsanker 1, sodass doch eigentlich bei jeder Zahl 1 zurückgegeben wird da n ja solange verkleinert wird bis es 1 ist? Wo liegt bei der Überlegung mein Denkfehler, weil sonst würde Rekursion ja nicht funktionieren?