Taschenrechner programmieren

Status
Für weitere Antworten geschlossen.
Daaron schrieb:
Vielleicht lernst du ohne Ausbildung, wie du Code zusammen stoppelst, aber ohne eine fundierte Anleitung wird es immer an der strukturierten Arbeit hapern, inklusive dem Umgang mit Frameworks, Design Patterns,...

Das sehe ich aber sowas von komplett anders. Ich habe in meiner Ausbildung (Industrietechnologe / Datentechnik) und im Studium (Medieninformatik) gescheite Programmierung / Software-Entwicklung nur sehr sehr rudimentär gelernt. Den weitaus überwiegenden Teil habe ich mir privat, weil es mein Hobby war, weil es mir Spaß machte, erarbeitet.

Ausbildung / Studium sind für gute Softwareentwicklung meines Erachtens vollkommen überflüssig und eigentlich nur für den Titel gut, und weil man sonst schlechte Karten auf dem Jobmarkt hat. Letzten Endes steht und fällt alles mit Eigeninitiative und Talent.
 
antred schrieb:
Das sehe ich aber sowas von komplett anders. Ich habe in meiner Ausbildung (Industrietechnologe / Datentechnik) und im Studium (Medieninformatik) gescheite Programmierung / Software-Entwicklung nur sehr sehr rudimentär gelernt. Den weitaus überwiegenden Teil habe ich mir privat, weil es mein Hobby war, weil es mir Spaß machte, erarbeitet.

Ausbildung / Studium sind für gute Softwareentwicklung meines Erachtens vollkommen überflüssig und eigentlich nur für den Titel gut, und weil man sonst schlechte Karten auf dem Jobmarkt hat. Letzten Endes steht und fällt alles mit Eigeninitiative und Talent.
+1
 
antred schrieb:
Ausbildung / Studium sind für gute Softwareentwicklung meines Erachtens vollkommen überflüssig und eigentlich nur für den Titel gut, und weil man sonst schlechte Karten auf dem Jobmarkt hat. Letzten Endes steht und fällt alles mit Eigeninitiative und Talent.

Wie wahr, wie wahr.

Wobei es definitiv nicht schaden kann mit Professionals zusammen zu arbeiten und sich ein paar Dinge abzuschauen. Vielleicht ist es das, was Daaron meinte. Ab einem gewissen Grad weiß man dann, wie man sich selber weiter entwickeln kann und wonach man suchen muss.
 
Zuletzt bearbeitet:
Hey leute da bin ich wieder und hab gleich neue probleme mit gebracht! o:
https://www.youtube.com/watch?t=2263&v=jVvJc_HFPgw
Hab mir dieses video zu hilfe genommen und alles soweit gemacht wie er. Das problem ist er hört mittendrin auf und ich hab jetzt probleme alleine weiter zu machen...Ab Minute 38:10 ca. erzählt er das der teil vom gleichheitszeichen in eine funktion umgewandelt werden soll. Er zeigt auch kurz wie, nur kann ich damit nichts anfangen und bin wieder überfordert.
Code:
namespace Calculator
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        int x = 0;
        int y = 0;
        enum Operation { Keine, Plus, Minus, Mal, Geteilt}
        Operation op = Operation.Keine;

        public MainWindow()
        {
            InitializeComponent();
        }

        void ziffer (int z)
        {
            x = 10 * x + z;
            txtScreen.Text = x.ToString();
        }

        private void btn0_Click(object sender, RoutedEventArgs e)
        {
            ziffer(0);
        }

        private void btn1_Click(object sender, RoutedEventArgs e)
        {
            ziffer(1);
        }

        private void btn2_Click(object sender, RoutedEventArgs e)
        {
            ziffer(2);
        }

        private void btn3_Click(object sender, RoutedEventArgs e)
        {
            ziffer(3);
        }

        private void btn4_Click(object sender, RoutedEventArgs e)
        {
            ziffer(4);
        }

        private void btn5_Click(object sender, RoutedEventArgs e)
        {
            ziffer(5);
        }

        private void btn6_Click(object sender, RoutedEventArgs e)
        {
            ziffer(6);
        }

        private void btn7_Click(object sender, RoutedEventArgs e)
        {
            ziffer(7);
        }

        private void btn8_Click(object sender, RoutedEventArgs e)
        {
            ziffer(8);
        }

        private void btn9_Click(object sender, RoutedEventArgs e)
        {
            ziffer(9);
        }

        private void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            op = Operation.Plus;
            y = x;
            x = 0;
            txtScreen.Text = x.ToString();
        }

        private void btnSub_Click(object sender, RoutedEventArgs e)
        {

        }

        private void btnMult_Click(object sender, RoutedEventArgs e)
        {

        }

        private void btnDiv_Click(object sender, RoutedEventArgs e)
        {

        }

        private void btnEquals_Click(object sender, RoutedEventArgs e)
        {
            switch (op)
            {
                case Operation.Keine:
                    break;
                case Operation.Plus:
                    x = y + x;
                    break;
                case Operation.Minus:
                    x = y - x;
                    break;
                case Operation.Mal:
                    x = y * x;
                    break;
                case Operation.Geteilt:
                    x = y / x;
                    break;
            }
            txtScreen.Text = x.ToString();
            op = Operation.Keine;
        }

        private void btnClear_Click(object sender, RoutedEventArgs e)
        {

        }
    }
}
Kann mir da wer weiterhelfen?
 
Versuch mal Dein konkretes Problem zu erklären. Der Tutor gibt doch genaue Anweisungen, was zu tun ist. Wie bist Du vorgegangen? Hast Du irgendetwas probiert oder ist Dein Stand genau der im Video?
 
Ja mein stand ist genau der im video. Also er sagt ja das dieser teil
Code:
        private void btnEquals_Click(object sender, RoutedEventArgs e)
        {
            switch (op)
            {
                case Operation.Keine:
                    break;
                case Operation.Plus:
                    x = y + x;
                    break;
                case Operation.Minus:
                    x = y - x;
                    break;
                case Operation.Mal:
                    x = y * x;
                    break;
                case Operation.Geteilt:
                    x = y / x;
                    break;
            }
an 5 stellen passieren soll(plus, minus, mal, geteil und gleichheitszeichen) Wenn ich jetzt den teil makiere und auf methode extrahieren klicke, soll ich nen neuen namen für die methode eingeben. So dann nehme ich z.b. Minus und bekomme dann das hier
Code:
        private void btnEquals_Click(object sender, RoutedEventArgs e)
        {
            Minus();
            txtScreen.Text = x.ToString();
            op = Operation.Keine;
        }

        private void Minus()
        {
            switch (op)
            {
                case Operation.Keine:
                    break;
                case Operation.Plus:
                    x = y + x;
                    break;
                case Operation.Minus:
                    x = y - x;
                    break;
                case Operation.Mal:
                    x = y * x;
                    break;
                case Operation.Geteilt:
                    x = y / x;
                    break;
            }
Nur hab ich keine ahung was ich damit machen soll o:
 
Shabolda schrieb:
an 5 stellen passieren soll(plus, minus, mal, geteil und gleichheitszeichen)

Ok, das merken wir uns.

Shabolda schrieb:
Wenn ich jetzt den teil makiere und auf methode extrahieren klicke, soll ich nen neuen namen für die methode eingeben. So dann nehme ich z.b. Minus und bekomme dann das hier

Das ist soweit ok. Du hast jetzt also Code der an einer Stelle stand, aber an fünf Stellen ausgeführt werden soll, in einer Methode ausgelagert, damit man ihn nicht nur an einer Stelle ausführen kann, sondern an mehreren Stellen.

Schau Dir das vorher nachher nochmal genau an. Was ändert sich in der Methode buttonGleich_click() nach dem Extrahieren und was kannst Du daraus gemäß dem Handlungsauftrag schließen?


Noch ein wichtiger Tipp: Methoden sollte man möglichst selbsterklärend gestalten und Namen so wählen, dass man möglichst sofort weiß, was die Methode macht. Schau Dir die Methode mal an. Was machst diese und welche Namen wären deswegen besser geeignet als Minus?
 
Ich stehe wohl komplett auf dem schlauch.Ich weiß einfach nicht was genau, wo genau hin muss..
soares schrieb:
Noch ein wichtiger Tipp: Methoden sollte man möglichst selbsterklärend gestalten und Namen so wählen, dass man möglichst sofort weiß, was die Methode macht. Schau Dir die Methode mal an. Was machst diese und welche Namen wären deswegen besser geeignet als Minus?
Also die methode ist jetzt für die operation "Keine"? Also wäre der name "Keine" besser gewesen? Und warum wird aus dem ganzen plötzlich nur die operation"keine"?
 
Zuletzt bearbeitet:
Shabolda schrieb:
Ich stehe wohl komplett auf dem schlauch.Ich weiß einfach nicht was genau, wo genau hin muss..

Ich meine mich erinnern zu können, dass Du die Stellen schon genannt hast. Vielleicht machst Du erst einmal was anderes, schläfst eine Nacht und setzt Dich morgen noch mal dran. Hilft bei mir verblüffend oft.


Shabolda schrieb:
Also die methode ist jetzt für die operation "Keine"?

Äh, nein. Kannst Du erklären, was die Methode macht? Erläutere zuerst jede einzelne Operation und versuche das Ganze dann zusammen zu fassen.


Shabolda schrieb:
Also wäre der name "Keine" besser gewesen?

Nein, der wäre genau so gut bzw. schlecht wie "Minus".
 
Okay lassen wir das mit dem namen erstmal xD Und vllt weiß ich wo das ganze hin soll, aber bei dem "Was" bin ich immer noch planlos...Das was beim extrahieren rausgekommen ist, überall einfach rein zu kopieren klappt schonmal nicht. Den code an den anderen stellen kopieren und dann jeweils dort zu extrahieren hat auch nicht geklappt.
 
Du scheinst wild irgendetwas zu probieren, ohne ein Verständnis für den Code zu haben. Der Tutor hat es klar beschrieben (und sogar gezeigt):

Die alte Operation ausführen... dies hier muss an fünf Stellen passieren... in Funktion auslagern... an fünf Stellen aufrufen

Weißt Du, was davon Du bisher schon abgearbeitet hast?
 
soares schrieb:
Du scheinst wild irgendetwas zu probieren, ohne ein Verständnis für den Code zu haben. Der Tutor hat es klar beschrieben (und sogar gezeigt):



Weißt Du, was davon Du bisher schon abgearbeitet hast?
Wie gesagt hab ich 0 programmierkenntnisse und versuche alles irgendwie hinzubekommen, was gerade wohl nicht so gut klappt. Also nein, ich weiß nicht wirklich was ich da fabriziert habe.
 
Wenn Du noch nicht einmal sagen kannst, welche von den o.g. Schritten abgearbeitet wurden, hat es keinen Sinn hier weiter zu machen.

Kauf Dir ein Buch für Einsteiger (hier kann Dir sicher jemand eines für C# empfehlen, nicht meine Domäne) und arbeite das durch. Danach solltest Du das Taschenrechner-Beispiel hoffentlich nachvollziehen können oder notfalls mit konkreten Fragen nochmals hier aufschlagen.
 
Also ich habe die Fachinformatiker-Ausbildung vor über 10 Jahren abgeschlossen und soviel ich mich erinneren kann werden alle Grundlagen dort gut durchgenommen - aber der Fokus in der Ausbildung liegt nicht auf das Programmieren selbst, sondern das drum herum - also WL, BWL, Projektmanagement, Softwareplanung, Problemanalysen, Computertechnik etc.

Es gab in meiner Klasse einige die nahezu null ahnung von programmieren hatten, daher lass dich nicht unterkriegen und probiere es dich zu bewerben! Eine Ausbildung ist ja schließlich dazu da, um einen entsprechenden Beruf zu erlernen und es dann auch beruflich weiterzuführen... Zeig denen einfach das du interesse hast und fuchs dich rein - gibt genug C# Tutorials im Netz!
 
Shabolda schrieb:
Stimmt aber alle sind für winform. Ich finde so gut wie ncihts für Wpf o:

Weil WPF einfach nur nen zusätzliches Framework für .NET ist und wohl nur wenige einsetzen oder die Dokumentation seitens MS vollkommen ausreichend ist - who knows.

Daher erstmal C# und .NET lernen, damit du überhaupt in der lage bist mit Frameworks zu arbeiten.
Mach ein paar Win32-Konsolenanwendungen als Übungsaufgaben:

- Was für Datentypen gibt es in C# (Unterschiede int / double / char / string)
- Variablen erzeugen, ausgeben, kopieren, verändern
- Tastatureingabe von User abfangen und in Variable speichern und ausgeben
- String-Operationen kennenlernen (verkettungen, startsWith(), length(), substring(), remove(), charAt()) etc.
- Type casting (string nach int, int nach string, string nach double, double nach string)
- Rechenoperationen nutzen (variablen addieren, subtrahieren, multiplizieren etc.)

Dann kannst du langsam anfangen, dir zu überlegen was brauchst du überhaupt für nen Taschenrechner und dann das langsam umsetzen.
Erstmal ohne Eingabe, einfach mit festen Zahlen und fixem "Plus"-Operator und dann die festen Zahlen durch Benutzer eingabe ersetzen. Dann gibste das einfach aus mit Console.WriteLine() und dann hast du im grunde die Basis. Danach musst nur noch den Benutzer zusätzlich den Operator + - * / angeben lassen und dann haste alles was du brauchst um weiter zu machen.

Wenn du dich dann sicher genug fühlst, kannst du das ganze dann mal in einem Objektorientieren Konzept durchführen. Klasse Calculator erzeugen und alles was du gemacht hast, versuchen in eine Form zu bringen die Mehrfach verwendet werden kann. Am ende sollte das ganze dann so funktionieren:

Code:
Calculator instance = new Calculator();
instance.setInputA(5);
instance.setInputB(10);
instance.setOperator('*');
instance.calculate(); // Kann direkt in get getResult() aufgerufen werden
double result = instance.getResult();
Console.WriteLine("Ergebnis von " + instance.getInputA() + " " + instance.getOperator() + " " + instance.getInputB() + " ist " + result);

Erst dann kannst du das umstellen, das man nur noch eine Eingabe hat und die Klasse selbst das Ergebnis dann vorberechnet, halt so wie ein Taschenrechner das macht.
 
Zuletzt bearbeitet:
Um das alles von grund auf zu lernen fehlt im moment einfach die zeit. Ich muss leider schon demnächst abgeben.Werde wohl weiter versuche das zu retten was ich schon hab
 
Da ich nicht mehr wirklich weiter komme, versuche ich mit dem was ich hab mein glück und gebe ab. Nun heißt es in der mail:"Zippen Sie das Ergebnis (ihre Quellen und die Kompilierte Anwendung) und schicken Sie diese an uns zurück."
Was genau ist mit Quellen und Kompilierte Anwendung gemeint?
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben