Informatik – die neusten Beiträge

Wofür stehen die Parameter in __init__(self, ...) und super().__init__(...) in Python?

Hallo, ich lese mir in einem Buch gerade das Kapitel zu Klassen und Vererbung durch. Was ich bislang verstanden habe: Basisklassen kann man durch Tochterklassen im Stil Tochterklasse(Basisklasse) kopieren und anschliessend weiterentwickeln (Vererbung).

Dabei gibt man der Tochterklasse mit __init__(self, ...) ihren eigenen Konstruktor und damit der Codeverlauf konsistent bleibt, fügt man in der anschliessenden Zeile super().__init__( ...) hinzu. Anschliessend kann man Methoden der Basisklasse überschreiben. Bei einfachen Beispielen fand ich das nachvollziehbar.

Nun habe ich ein komplizierteres Beispiel vor, bei dem in den jeweiligen Klammern noch weitere Parameter stehen (sowohl bei dem neuen als auch alten Konstruktor), das sieht wie folgt aus:

#Tochterklasse der Basisklasse VerwalteterGeldbetrag

class AllgemeinesKonto(VerwalteterGeldbetrag):

  def __init__(self, kundendaten, kontostand):

    super().__init__(kontostand)

self.Kundendaten = kundendaten

Frage: Wofür genau stehen Werte wie diese in den Klammern, was machen sie? Gemeint sind die ab def. Da der Gesamtcode über 80 Zeilen oder so lang ist, habe ich nur diese beiden Inhalte eingefügt, um die Frage abstrakt zu halten. Was objektorientierte Programmierung ist, habe ich grob verstanden, nur sind da so viele Schritte, auf die ich als kompletter Anfänger nicht so schnell kommen würde.

Computer, programmieren, Informatik, Python, Objektorientierte Programmierung

Wie programmiere ich ein STM32 Microcontroller?

Guten Abend miteinander,

Ich bin leider kompletter Anfänger auf in dem Bereich embedded System, sollte aber im dualen Studium (gerade begonnen, Praxisphase) einen STM32F4-Discovery (dieses Modell: http://blog.tkjelectronics.dk/wp-content/uploads/2012/04/STM32F4-DISCOVERY_Board.jpg ) mit einem Arm Cortex M4 Prozessor einrichten und etwas darauf rumprogrammieren. Jedoch scheitert es dabei leider schon etwas beim "zum laufen bekommen".

Ich bin kein absoluter Anfänger im Bereich der Informatik, aber in diesem Gebiet schon. Momentan sieht es im Betrieb im Bezug auch fachliche Ansprechpersonen etwas schlecht aus, da coronabedingt wenige da sind und etwas Stress herrscht. Grundsätzlich aktuell nicht tragisch, da ich mir selbst viel beibringen kann, aber bei der Aufgabe habe ich gerade etwas Probleme.

Ich weiß schon nicht welche IDE das unterstützt und halbwegs gut ist, zudem kann ich nicht einfach rumprobieren, da ich jedesmal Lizenzquatsch klären und dann in eine andere Abteilung zu einem Adminstator laufen muss um etwas zu installieren. Visual Studio Code mit PlatformIO scheint es zu supporten, aber, obwohl ich den STLink Treiber installiert habe, wird das Gerät von PlatformIO nicht erkannt (vom PC schon).

Kann mir jemand Ratschläge geben, wie ich das einrichte? Also welche IDE muss ich nehmen und was sind die wichtigen Schritte im Prozess?

Computer, Technik, programmieren, Mikrocontroller, Embedded, Embedded Systems, Informatik, Technologie

Buchempfehlung C programmieren lernen für fortgeschrittenen Anfänger?

Guten Abend,

die Kernpunkte meiner Frage stehen eigentlich im Titel. Ich bin gerade in ein duales Studium im Bereich Embedded Systems gerutscht und möchte mich nun auch praktisch darauf vorbereiten. Nun würde ich mir gerne etwas Literatur dafür anschaffen.

So wie ich es einschätze und wie es auch in den Quellen meiner Recherche dargestellt wird, ist C wohl die sinnvollste Programmiersprache in diesem Feld. An dieser Stelle eine kleine Nebenfrage: Würdet ihr dem zustimmen oder wäre eine andere Wahl kleverer? Bis vor kurzem (aktuell mit kleiner Pause) habe ich C# gelernt, sollte ich die dort erlernten Grundprinzipien (sofern übertragbar) als Grundlage nutzen und einfach mit der für meine Zwecke passenderen Sprache C weitermachen oder sollte ich C# fortsetzen und mit dem C lernen warten?

Nun weiter mit der eigentlichen Frage :') Angenommen ich entscheide mich fürs C lernen, welches Buch könnt ihr empfehlen? Bei der Suche beschleicht mich irgendwie das Gefühl, dass es (überspitzt formuliert) zwei Arten an Büchern gibt. Einerseits die Nachschlagewerke, welche eigentlich nur hilfreich für jemanden sind, der die Sprache grundsätzlich schon beherrscht, andererseits komplette Anfängerbücher, welche Ewigkeiten grundlegende Themen wie Variablen behandeln und deren Inhalt nur sehr seicht sind.

Habt ihr eine Empfehlung für ein Buch dazwischen? Also eins, welches für das Selbststudium taugt, für jemand der mit der Materie nicht komplett unvertraut ist und das auch eine gewisse Tiefe hat, sodass nicht gleich nach einem Thema wie Rekursion Schluss ist?

Über Antworten würde ich mich sehr freuen!

PC, Computer, Schule, IT, programmieren, Fachbuch, Informatik, Programmiersprache, Ausbildung und Studium

Wie bestimmt man genau den zweiten (Lösungs-)Winkel in einer (einfachen) Gleichung mit Sinus, Kosinus, usw. (Trigonometrie)?

Ich befinde mich zurzeit beim Thema: Sinus, Kosinus und Tangens. Ich habe verstanden, was diese bedeuten, wie sie anzuwenden sind, was die Sinussätze bzw. Kosinussätze sind. Allerdings tue ich mich momentan etwas schwer mit dem Einheitskreis. Nicht wegen des Ablesens an sich, sondern wie man z.B. zu einem gegebenen sin(234°) = -0.809 (gerundet) den zweiten Winkel findet, für den ebenfalls sin(a) = -0.809 (gerundet) ergibt.

Zu dem Beispiel an dem ich momentan feststecke war folgendes:

Der Taschenrechner liefert für sin(300) folgenden Sinuswert: Gesucht ist nach der Aufgabenstellung ein zweiter Winkel, der ebenfalls die gleiche Lösung wie für sin(300°) liefert. Alle meine Versuche auf diesen Wert zu kommen schlugen fehl (obwohl ich weiß, dass es wohl 240° sein müssen, aber ich würde es gerne rechnerisch ermitteln), und ich komme wirklich nicht mehr weiter bzw. bin etwas frustriert.

Ich habe hier dabei folgenden Ansatz versucht:

Ich weiß, dass sin(300°) auf dem Einheitskreis im vierten Quadranten liegt. Folglich muss ich doch irgendwie rechnerisch zu dem Winkel gelangen können, für den ebenfalls -1/2*Wurzel3 rauskommt. Ich habe dabei gedacht, dass  die Lösung sein könnte. Allerdings macht das ja keinen Sinn, da ich einen Winkel von 480° erhalte. Das ist zwar auch eine mögliche Lösung, allerdings soll der zweite Winkel im Intervall von 0° bis 360° liegen. Ich verstehe nicht, wie ich hier rechnerisch auf 240° kommen soll.

Vermutlich ist das evtl. wieder sehr trivial und ich habe mich vielleicht hineingesteigert in die Frustration, sodass ich was offensichtliches nicht bemerken könnte. Aber mir fällt nichts mehr ein, wie ich hier jetzt auf diesen zweiten Winkel kommen soll.

Ich hoffe, mir können hier einige Experten helfen.

Übungen, Studium, Schule, Mathematik, Hilfestellung, Kreis, Geometrie, Gleichungen, Informatik, nachdenken, Sinus, Trigonometrie, Universität, uebungsaufgaben, Cosinus, Einheitskreis, Informatikstudium, kosinusfunktion, Sinusfunktion, Tangens, Winkel, Winkelfunktionen

C# kann Variable in der selben Klasse nicht benutzen?

Moin,

Bin grad dran einen Launcher zu erstellen und hab eine Funktion gemacht womit man eine Exe Datei wählen kann die als String Variable namens filePath gespeichert wird, wenn ich diese rufen will damit der Launch Button weiß was er starten soll bekomme ich den Error "Der Name "filePath" ist im aktuellen Kontext nicht vorhanden."

Wie kann ich hin bekommen das die Variable von der gesamten Klasse verwendet werden kann?

Code in Frage:

        private void button8_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                openFileDialog.InitialDirectory = "c:\\";
                openFileDialog.Filter = "Exe Files (.exe)|*.exe"; ;
                openFileDialog.FilterIndex = 2;
                openFileDialog.RestoreDirectory = true;


                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    String filePath = openFileDialog.FileName;
                    textBox1.Text = filePath;
                }
            }
        }


        private void button7_Click(object sender, EventArgs e)
        {
            string WindowsUser = Environment.UserName;
            string GameName = "Game";
            System.Diagnostics.Process.Start($@"C:\Users\{WindowsUser}\AppData\Local\{GameName}\Saved\SaveGames.");
        }


        private void button1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start($"{filePath}");
        }
    }
}
Computer, Technik, programmieren, C Sharp, Code, Informatik, Visual Studio

Schlüsselaustausch bei OTP - Wird die Sicherheit damit erhöht?

Guten Tag zusammen,

ich bin durch eine Frage hier, die heute morgen gestellt wurde, auf die OTP-Verschlüsselung gekommen und habe ein bisschen darüber nachgedacht und hätte deshalb jetzt eine Frage an die Mathemathiker oder Kryptologen unter euch (Vielleicht auch generell an alle die auf Logik stehen)

Mal außer acht gelassen, dass das Verfahren alleine durch die größe der Schlüssel und die sichere Übertragung der Schlüssel einige größere Hürden mit sich bringt, finde ich das Prinzip vorallem wegen seiner Einfachheit und der, bei richtiger Verwendung, erreichten Sichherheit einfach klasse.

Allerdings habe ich jetzt eine Frage. Und zwar habe ich ein wenig darüber nachdegacht wie das so im Alltag verwendbar wäre und die Hauptschwastelle wäre wohl die sichere Übertragung des Schlüssels (Benötigter Speicherplatz und Generierung von echten Zufallszahlen mal außer Acht gelassen).

Jetzt habe ich überlegt ob es nicht noch sicherer werden würde, wenn es folgender Maßen Abläuft:

  1. Max verschlüsselt eine Nachricht mit einem wirklich zufälligen Key
  2. Der Schlüssel wird ausgestauscht und die verschlüsselte Nachricht über einen anderen Kommunikationsweg übertragen
  3. Peter entschlüsselt die Nachricht und antwortet.
  4. Dazu wird wieder ein zufälliger key generiert, allerdings wird die Antwort nicht direkt mit dem neuen Key verschlüsselt.
  5. Der neue Key wird mit allen bisher ausgetauschten Keys nacheinander verschlüsselt und der verschlüsselte key wird dann zum verschlüsseln der Antwort benutzt.
  6. Der neue zufällig gefundene Key (Nicht der verschlüsselte) wird mit Max ausgetauscht.
  7. Max muss den neuen Key wieder mit allen alten Keys verschlüsseln und kann diesen dann für das entschlüsseln der Nachricht benutzen.

... usw.

Wenn man zusätzlich jeden neuen schlüssel auch über einen neuen Kommunikationsweg austauscht sollte es für den Angreifer ja eigentlich unmöglich sein die Verschlüsselte Nachricht zu entschlüsseln. Selbst wenn er einen austausch des Schlüssels mitbekommen hat?

Bin ich jetzt richtig mit meinen Überlegungen oder verschlechtere ich die eigentliche Verschlüsselung damit eher, da man ja sogesehen alte Schlüssel wiederverwendet...

was sagt ihr? Ist das sicherer oder unsicherer? (Prämisse: Der Angreifer hat keinen Zugriff auf die db der alten schlüssel)

Computer, Mathematik, Sicherheit, Informatik, Kryptographie, Verschlüsselung

Meistgelesene Beiträge zum Thema Informatik