
Whiz-zarD
Mitglieder-
Gesamte Inhalte
2083 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
51
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Whiz-zarD
-
Witzigerweise sind x_Koord und y_Koord nicht mal die richtigen Bezeichner, da x und y Ordinaten sind und erst beide zusammen eine Koordinate bilden. 😄 Abstand_Ursprung() soll ja den Abstand vom Mittelpunkt des Koordinatensystems (wenn x und y gleich 0 sind) bis zum Punkt errechnen. Also kann man auch einen Punkt mit x = 0 und y = 0 definieren und dann Abstand_Punkt() aufrufen. Man sieht ja im Urspungscode, dass der Satz des Pythagoras in zwei Methoden verwendet wird. Im refaktorisierten Code wird der Satz des Pythagoras nur noch in einer Methode verwendet, was die Fehleranfälligkeit minimiert. Hier wurde also das sog. DRY-Prinzip angewendet.
-
Ich verstehe nicht, wieso eine Verstärkung Halterung genannt wird und Halterung wiederrum Steckplatz. Man sollte schon beim gleichen Namen bleiben, damit man versteht, was gemeint ist. Was genau willst du mit dem Dictionary erreichen? Ein Dictionary ist ja dafür gedacht, dass man mit Hilfe eines Schlüssels einen Wert ermitteln kann. Ich sehe nicht, wozu du den Schlüssel benötigst. Also kann es auch eine ganz normale Liste sein. Am Besten erklärst du das konkrete Problem und zeigst nicht unbedingt dein Code. Außerdem sehe ich da sehr viele Fehler im Code. z.B. sollte deine Methode Aufwertung() keine Konsolenausgabe machen, sondern eine Exception werfen, weil dies nicht erlaubt ist. Stell dir vor, du willst dein Spiel mal mit einer grafischen Oberfläche erweitern. Da kommst du dann mit Konsolenausgaben nicht mehr weit.
-
Man könnte auch einfach eine Liste von Tuple nehmen und dann mittels ToLookup() oder ein GroupBy() eine Gruppierung daraus machen. using System.Linq; //... List<(Type, int)> list = new (); list.Add((typeof(string), 5)); list.Add((typeof(string), 10)); // ... list.GroupBy(x => x.Item1); Die Elemente vom Tuple kann man auch noch benennen oder man macht gleich daraus ein Record.
-
Kannst du vielleicht das konkrete Problem beschreiben? Ich verstehe nicht, wieso wozu du mehrfach den selben Key in das Dictionary schreiben möchtest. Ein Dictionary ist nun mal ein Schlüssel-Wert-Paar, wobei ein Schlüssel eindeutig sein muss. Wenn du mehrere Integer-Werte pro Typ ablegen möchtest, könntest du den Wert auch immer addieren oder du machst ein Dictionary<Type, List<int>>
-
Discord Server und Gilden (abgetrennt von Fachinformatiker AP Teil 1)
Whiz-zarD antwortete auf daluqi's Thema in Small Talk
-
Nein, UML wird nicht dazu genutzt, wozu es gedacht war. UML wird, wenn überhaupt, als nachträgliche Dokumentation genutzt, weil es einfach zu schwerfällig und unflexibel ist, um damit wirklich eine Software zu modellieren. Ich persönlich kenne auch keine einzige Firma, die wirklich mit UML Software modelliert. Dazu auch? Inzwischen beherrscht jede IDE automatische Codevervollständigung, sodass das Schreiben von Code schneller von statten geht, als die Modellierung mittels UML. Eine Software liegt unter ständigen Wandel. Kramst du dann ständig die Diagramme aus, um erstmal dort Anpassungen am Modell zu machen, bevor du dann den Code anpasst? Man sollte sich nicht zu sehr auf UML versteifen. Ja, beim Brainstorming können Diagramme und andere Grafiken helfen aber macht es so leichtgewichtig, wie es geht und fangt nicht an zu diskutieren welche Pfeilart beim Klassendiagramm nun die richtige sei. Diskutiert über das fachliche und haltet euch nicht mit UML-Firlefanz auf. Man sollte aber überholte Dinge gerne mal hinterfragen. Genauso, wie ich jedes Mal das ER-Modell hinterfrage. Wieso fängt jeder mit einem ER-Modell an? Damit stellt man die Persistenz in den Vordergrund, obwohl die Geschäftslogik im Vordergrund stehen sollte. Also das, womit man sein Geld verdient. Die Persistenz ist nur ein Detail und ob ich da jetzt eine relationale Datenbank oder was völlig anderes nehme sollte egal sein. Zumal relationale Datenbanken und Objektorientierung auch nicht mal wirklich zusammenpassen. Dafür braucht man wieder einen umständlichen O/R-Mapper, den man z.B. bei dokumentenbasierten Datenbanken gar nicht braucht und somit auch das ER-Modell überflüssig macht.
-
Prüfung Verkürzer gleiche Aufgaben wie normale?
Whiz-zarD antwortete auf OsamaIsstMaden's Thema in IHK-Prüfung allgemein
Es gibt keine spezielle Zwischenprüfung für "Verkürzer". Jedes halbe Jahr gibt es eine Zwischen- und eine Abschlussprüfung statt, da es auch Azubis gibt, die im Februar anfangen und nicht im August. Außerdem gibt es noch diejenigen, die bei der Abschlussprüfung durchgefallen sind, die nach 6 Monaten die Prüfung wiederholen können. -
Prüfung Verkürzer gleiche Aufgaben wie normale?
Whiz-zarD antwortete auf OsamaIsstMaden's Thema in IHK-Prüfung allgemein
Ja und? Was genau willst du damit sagen? Das ist die Prüfung von Herbst 2021. Also alt. -
Prüfung Verkürzer gleiche Aufgaben wie normale?
Whiz-zarD antwortete auf OsamaIsstMaden's Thema in IHK-Prüfung allgemein
Hä? Man kann doch nur alte Prüfungen kaufen. -
Auf was bei Programmieraufgaben achten? Bin ratlos.
Whiz-zarD antwortete auf voelligUnbegabt's Thema in Jobsuche, Bewerbung und Zeugnisse
Wenn ich diesen Quatsch lese, muss ich an Postal denken. -
Auf was bei Programmieraufgaben achten? Bin ratlos.
Whiz-zarD antwortete auf voelligUnbegabt's Thema in Jobsuche, Bewerbung und Zeugnisse
Und das sind Aufgaben für eine Einstellung?🤨 Kein Wunder, dass alle über den Fachkräftmangel jammern... -
Fachinformatiker Anwendungsentwicklung baden-württemberg
Whiz-zarD antwortete auf Alper57's Thema in Ausbildung im IT-Bereich
Ach so und du hast gleich erkannt, was richtig und was falsch ist? Richtig oder falsch entwicklen gibt es eigentlich nicht, wenn am Ende des Tages das erwartete Ergebnis rauskommt. Was es aber gibt, ist das einhalten von Richtlinien und Qualitäten. Ich würde auch mal behaupten, dass selbst heute die meisten Entwickler nicht wissen, was Objektorientierung wirklich hervorgebracht hat. (Spoiler: Vererbung von Polymorphie ist es nicht.) -
Fachinformatiker Anwendungsentwicklung baden-württemberg
Whiz-zarD antwortete auf Alper57's Thema in Ausbildung im IT-Bereich
Die Mär vom "falschen Lernen"... Das lese ich so oft und ist auch totaler Quatsch, wenn ich sehe, wie so manche überstudierte Entwickler mit teuren Zertifikaten und 20+ Jahren Berufserfahrung entwickeln. Da bekomme ich oft einen Schreikrampf. Ja, viele Tutorials und Bücher sind nicht das Gelbe vom Ei, besonders nicht diese, die gleich mit einer grafischen Oberfläche anfangen. Von diesen würde ich abraten aber was soll an Autodidakt so schlimm sein? Im Grunde ist jeder Entwickler ein Autodidakt. Jeder, der sich mit einer neuen Technologie auseinandersetzt, lernt es autodidaktisch. Man rennt ja nicht gleich zur nächstbesten Schulung. Um in seinem Job gut zu werden, muss man aber sein Können reklektieren können. Feedback einholen, Feedbach verstehen und auch Feedback berücksichtigen. Das gilt sowohl für angehende Azubis, als auch für Senior-Entwickler. Wer das nicht kann, ist auch kein guter Entwickler. Darum, lasst doch einen angehenden Azubi in einer objektorientierten Sprache prozedural entwickeln, wenn er es halt erstmal nicht besser weiß. In der Ausbildung bekommt er ja das Feedback, um sich zu verbessern. Jeder hat doch mal klein angefangen. Blick doch mal auf euren ersten Code zurück. Der war mit Sicherheit auch nicht clean und wenn alle studierten Entwickler und ausgelernten Fachiformatiker sauber entwickeln würden, gäbe es doch überhaupt keinen Legacy Code. Die Welt ist aber voll davon. Wenn, dann würde ich aber schon mit der Sprache anfangen, die auch im Betrieb verwendet wird, sofern sie schon bekannt ist. Also um gute Tipps geben zu können, müsste man erstmal wissen, ob die Sprache bekannt ist. -
Excel-Formeln mit Bereichsschreibweise (A1:A99999)
Whiz-zarD antwortete auf Stefan_B_25's Frage in Anwendungsentwickler und Programmierer
Wie soll die Formel =(A1:A99999)<>"" funktionieren? A1:A99999 ist ein Vektor und kein einzelner Wert. Die Formel wird immer FALSCH zurückliefern. Darüber hinaus ist das extrem inperformant. Formeln werden bei jeder Zellenänderung neu berechnet und jedes Mal erzeugt er diesen enorm großen Vektor. Je mehr du von diesen Formeln verwendest, desto mehr Zeit braucht er für die Berechnung, was irgendwann dazu führt, dass Excel aus sehr langsam wird. Mir schließt sich auch nicht, was das soll. Benutze doch einfach intelligente Tabellen. https://www.hands-on-excel.com/intelligente-tabellen/ Die haben den Vorteil, dass sie noch eine spezielle Zellenangabe besitzen, die sich dynamisch verändert, sodass man solche Spielereien wie A1:A99999 nicht benötigt. https://support.microsoft.com/de-de/office/verwenden-von-strukturierten-verweisen-für-excel-tabellen-f5ed2452-2337-4f71-bed3-c8ae6d2b276e Verstehe ich nicht. Was soll denn bei =ZEILE(A2:A99999) Auch rauskommen? Lies dir doch mal die Dokumentation durch: "Gibt die Zeilennummer des Bezuges zurück." Was soll er denn bei der Formel zurückgeben, wenn du ihm 99998 Zeilen gibst? Da kannst du auch gleich 2 schreiben. Ich glaube einfach, dass du nicht verstanden hast, was du da eigentlich tust, da du in allen Punkten die Funktionen völlig falsch verwendest. -
GA1 FIAE 2021 Sommer Handlungsschritt 5 d sql
Whiz-zarD antwortete auf netzniesserin's Thema in Prüfungsaufgaben und -lösungen
Ist das die vollständige Lösung? Das ist syntaktisch komplett falsch. Ein INSERT-Statement hat keine WHERE-Klausel. Auch werden hier überhaupt keine Daten selektiert. Meine Lösung würde so aussehen: CREATE TABLE MitgliedArchiv AS SELECT * FROM Mitglied LEFT JOIN Angebot ON Angebot.mitgliedid = Mitglied.idmitglied WHERE Angebot.mitgliedid IS NULL DELETE FROM Mitglied WHERE idmitglied IN (SELECT idmitglied FROM MitgliedArchiv) In der MitgliedArchiv-Tabelle liegen ja nun die inaktiven Mitglieder. Also muss man doch jetzt beim Löschen einfach nur die IDs der inaktiven holen. -
Projaktantrag: Entwurf der Datenbankstruktur inkl. Erstellung eines ER-Modells
Whiz-zarD antwortete auf Aboode2019's Thema in Abschlussprojekte
Eine Tabelle stellt ja kein ER-Modell dar, da das R - also die Beziehungen - fehlen. Also ist dein ER-Modell nichts weiter, als die Darstellung einer einzigen Entität. Google Sheets ist ja auch keine Datenbankmanagementsystem, sondern ein Tabellenkalkulationsprogramm. -
Neue Ausbildungsverordnungen (Novellierung der IT-Berufe 2020)
Whiz-zarD antwortete auf stefan.macke's Thema in Ausbildung im IT-Bereich
Die Ausbildungsordnung sowie der Ausbildungsrahmenplan sind Bundesweit gültig. Das war schon immer so. Lediglich bei der Gestaltung Abschlussprüfungen hat (oder hatte?) BW eine Sonderwurst. Und ja, dies ist der aktuelle Ausbildungsrahmenplan. Sieht man auch in der Fußzeile: Die vorherige Ausbildungsordnung bzw. der vorherige Ausbildungsrahmenplan waren von 1997. Du siehst also, dass sich die Dinge nicht so schnell ändern. -
Rechenaufgabe Bruce Force Attacke
Whiz-zarD antwortete auf SENDMELOCATON's Thema in Prüfungsaufgaben und -lösungen
Weil Anzahl der Möglichkeiten nicht linear steigt, sondern exponentiell. 1 Stelle = 94^1 = 94 Möglichkeiten 2 Stellen = 94^2 = 8.836 Möglichkeiten 3 Stellen = 94^3 = 830.584 Möglichkeiten ... -
Speicherbedarf für Datenbanktabelle
Whiz-zarD antwortete auf JanJan's Thema in Prüfungsaufgaben und -lösungen
Für mich ist das eher ein Hinweis auf ASCII vs. Unicode. ASCII braucht pro Zeichen genau 1 Byte, während ein Zeichen in Unicode variabel groß sein kann. Wenn der Maximalwert ausgeschöpft werden soll, ließe sich das auch besser umschreiben, da die Angabe von 1 Byte überhaupt kein Sinn machen würde. -
VS2022 neue Zeile in Textbox
Whiz-zarD antwortete auf Xovarto's Frage in Anwendungsentwickler und Programmierer
Aber was möchtest du mit den Zahlen erreichen? Das ist doch nur eine Multiplikation. 1 * 15 = 15 2 * 15 = 30 3 * 15 = 45 ... Im Grunde reicht es doch, wenn du in der Waffe-Klasse den Multiplikator bereitstellst und dann den Wert ausrechnest: class Waffe { private const int _multiplikator = 15; public int Level { get; set; } public int Wert => Level * _multiplikator } var waffe = new Waffe(); waffe.Level = 3; Console.WriteLine(waffe.Wert); // Gibt 15 auf dem Bildschirm aus. Du musst schon schreiben, was der Computer machen soll. Von alleine passiert da nichts. Um es vielleicht anders darzustellen: var waffe = new Waffe(); waffe.Name = nameTextBox.Text; waffe.AbLevel = Convert.ToInt32(abLevelTextbox.Text); waffe.VNum = Convert.ToInt32(vNumTextbox.Text); // ... Natürlich ist dies nur eine vereinfachte Darstellung, da Fehler nicht behandelt werden. Auch würde man es professionell anders lösen aber ich möchte nicht zu viel Verwirrung stiften. -
VS2022 neue Zeile in Textbox
Whiz-zarD antwortete auf Xovarto's Frage in Anwendungsentwickler und Programmierer
Ich verstehe noch nicht so ganz, was das jetzt mit 15, 30, 45, ... zu tun hat. Da C# ja eine objektorientierte Sprache ist, würde man für die Werte eine Datenklasse schreiben und die Werte in eine Instanz dieser Klasse speichern. Die Instanz kann man dann ja der nächsten Form übergeben und die kann damit machen, was sie will. Wenn ich das richtig verstehe, dass soll im Bild 1 eine Waffe konfiguriert werden. Also hätte man eine Klasse namens "Waffe" und all ihre Eigenschaften würde man als Property implementieren: class Waffe { public string Name { get; set; } public int AbLevel {get; set; } public int VNum {get; set; } // ... } Um dann eine Instanz zu erzeugen schreibt man dann: var waffe = new Waffe(); waffe.Name = "Ultimative Waffe"; waffe.AbLevel = 100; waffe.VNum = 50; // ... Und das übergibst du dann später der nächsten Form. Wenn ich dich richtig verstanden haben sollte. -
C# Methode aus delegat entfernen
Whiz-zarD antwortete auf MaceFan's Frage in Anwendungsentwickler und Programmierer
Die Delegates sind ja keine Zauberei. Die sind lediglich nur eine Liste von Funktionszeigern. Eine Methode ist im Grunde ja auch nichts weiter als eine Referenz auf einen Speicherbereich. Ich verstehe aber immer noch nicht so ganz, wieso du dies löschen möchtest. Ich habe da nur ein Verdacht, wieso du das tun möchtest aber wenn ich richtig liege, dann muss ich dir sagen, dass die Delegates dafür nicht gedacht sind. Ich vermute mal, dass du die aufzurufenden Methoden per Multithreading abarbeiten möchtest und daher mehrere Instanzen von der Caller-Klasse erzeugst, die alle die gleichen Methodenaufrufe bekommen und du dann die herauslöschen möchtest, du dann schon aufgerufen wurden. Liege ich da richtig? Dafür sind Delegates aber nicht gedacht. Delegates werden einfach in einem Thread sequentiell abgearbeitet. Wenn du nebenläufige Aufgaben erledigen möchtest, gibt es die Klasse Task<T>, die solche darstellen und ausgeführt werden. Mit den Methoden Task.WhenAll() bzw. Task.WhenAny() kann man dann auf die Ergebnisse der Tasks warten: class Program { public static async Task Main(string[] args) { var tasks = new Task<(string, bool)>[] { new Task<(string, bool)>(() => { Console.WriteLine("Start Task 1"); Thread.Sleep(1000); Console.WriteLine("End Task 1"); return ("Task 1", true); }), new Task<(string, bool)>(() => { Console.WriteLine("Start Task 2"); Thread.Sleep(100); Console.WriteLine("End Task 2"); return ("Task 2", false); }) }; foreach (var task in tasks) task.Start(); foreach (var result in await Task.WhenAll(tasks)) Console.WriteLine($"{result.Item1} => {result.Item2}"); } } Das Threadhandling übernimmt dann die CLR bzw. das .NET Framework für uns. Dein Beispiel mit dem Bescheidsager und Ausführer lässt sich auch eleganter lösen, denn im Grunde ist dies das Decorator Pattern. Du schreibst ein Interface, was sowohl dein Bescheidsager, als auch dein Ausführer implementiert. Im Konstruktor vom Bescheidsager gibst du dann eine Instanz vom Ausführer mit, die dann nicht null sein darf. Dann sparst du dir auch dieses lästige if-then-else bei der Ausführung. interface IAusfuehrer { bool Ausfuehren(); } class Bescheidsager : IAusfuehrer { private readonly IAusfuehrer _ausfuehrer; public Bescheidsager(IAusfuehrer ausfuehrer) { _ausfuehrer = ausfuehrer ?? throw new ArgumentNullException(nameof(ausfuehrer)); } public bool Ausfuehren() { Console.WriteLine("Starte Methode"); return _ausfuehrer.Ausfuehren(); } } class Ausfuehrer : IAusfuehrer { public bool Ausfuehren() { Console.WriteLine("Ausfuehrer wird ausgeführt"); return true; } } class Program { public static void Main(string[] args) { var ausfuehrer = new Ausfuehrer(); var bescheidsager = new Bescheidsager(ausfuehrer); Console.WriteLine(bescheidsager.Ausfuehren()); } } -
C# Methode aus delegat entfernen
Whiz-zarD antwortete auf MaceFan's Frage in Anwendungsentwickler und Programmierer
Und woher weiß du, welches du entfernen möchtest? An irgendwas muss man ja das Objekt erkennen können. Sei es auch nur der Klassentyp. Dann muss man halt selber die Methode in der Invocationlist finden. Aber das ist doch recht verquirlt. Die sollen ja auch aus irgendeinen Grund entfernt werden. Wäre es dann nicht sinnvoller, bei der Registrierung zu prüfen, ob die Methode aufgerufen werden soll? Dann spart man sich das Entfernen und kann jede Methode einzeln steuern. Also sowas wie: if(...) c.DoAction + = ... if(...) c.DoAction + = ... if(...) c.DoAction + = ... -
Naja, man muss ja nicht unbedingt gleich ne Applikation bauen. Man kann auch unabhängig davon seine Programmiererskills erweitern, indem man sich z.B. Programmierprinzipien oder -Methoden anschaut. z.B. SOLID oder auch TDD lässt sich auch mit einfachen Aufgaben üben. Auf exercism.org gibt es auch einen PHP-Track. Das interessante an der Plattform ist halt, dass man auch Tipps von Mentoren holen kann.
-
C# Rundenzähler in Methode
Whiz-zarD antwortete auf Zwonkoh's Frage in Anwendungsentwickler und Programmierer
Puh, wo soll man da anfangen? Im Grunde ist da so ziemlich alles nicht richtig. Ich würde dir mal raten, mit dem Debugger zu arbeiten und dir mal Schritt für Schritt anschauen, was du falsch machst. Du rufst z.B. die Versuche()-Methode ja immer wieder neu auf und da deine Variable i eine lokale Variable ist, wird sie nach jedem Verlassen und Versuche() aus dem Speicher gelöst und beim Eintreten neu gesetzt. Außerdem hast du auch eine Rekursion gebaut, da Login() sich selbst aufruft. Wenn man etliche Male das Passwort falsch eingibt führt dies unweigerlich zu einer StackOverflow Exception. Zusätzlich wird in der Versuche()-Methode deine Eingabe doch überhaupt nicht überprüft. Du gibst dort ein Input vor und dieser entspricht dem Passwort. Der Code wird also nie die Variable i runterzählen.