Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            bool keep = true;
            double n1 = double.Parse(Console.ReadLine());

            Console.WriteLine("Enter the symbol indicating the mathematical action you want to do");
            string entry = Console.ReadLine();

            while (keep)
            {
                if (entry != "*" && entry != "-" && entry != "+" && entry != "/" && entry != "%")
                {
                    Console.WriteLine("Please enter a valid symbol");
                    entry = Console.ReadLine();
                }
                else
                {
                    keep = false;
                }
            }

            Console.WriteLine("Enter the second number and press enter to calculate the result");
            double n2 = double.Parse(Console.ReadLine());

            

            if (entry == "*")
            {
                Console.WriteLine("The result is: " + (n1 * n2));
            }
            else if (entry == "/")
            {
                Console.WriteLine("The result is: " + (n1 / n2));
            }
            else if (entry == "+")
            {
                Console.WriteLine("The result is: " + (n1 + n2));
            }
            else if (entry == "-")
            {
                Console.WriteLine("The result is: " + (n1 - n2));
            }
            else if (entry == "%")
            {
                Console.WriteLine("The result is: " + (n1 % n2));
            }
            else
            {
                Console.WriteLine("Please enter a valid value");
            }
        }
    }
}

Το παραπάνω είναι το πρώτο προγραμματάκι που έκανα για μια άσκηση.

Ζητάει από τον χρήστη 2 νούμερα και το σύμβολο για τη μαθηματική πράξη που θέλει να πραγματοποιήσει και του δείχνει το αποτέλεσμα.

Θέλω τις γνώμες σας και τυχόν σχόλια. :)

  • Απαντ. 32
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

Για τα της γλώσσας ας σου απαντήσει κάποιος άλλος που την ξέρει.

 

Για να συνεχίσεις με αυξανόμενη δυσκολία προσπάθησε

  • Να υποστηρίξεις πολλές πράξεις μαζί πχ 5+3*2.
  • Να σου δίνει ο χρήστης ολόκληρη την έκφραση και να βγάζεις αποτέλεσμα.

Σίγουρα θα "πνιγείς" λίγο για τα παραπάνω αλλά με επιμονή και google( :-D ) θα τα καταφέρεις. Δεν υπάρχει καλύτερος τρόπος να μάθεις στον προγραμματισμό πέρα από το να get your hands dirty!

 

Καλή αρχή! :-)

Δημοσ.

Θα  το δοκιμάσω. Προς το παρών επιχείρησα να ζητήσω από τον χρήστη να βάλει όσες τιμές θέλει, αλλά απέτυχα. Θα το προσπαθήσω και αυτό όμως.

Ευχαριστώ πολύ! Χεχε :D

Δημοσ.

Καλή αρχή. Χρησιμοποιώ και εγώ c# σε ερασιτεχνικό επίπεδο. Αν αποφασίσεις να πας για παραπάνω το πιο user friendly είναι να κάνει input ο χρήστης μια και έξω την μαθηματική έκφραση και μετά να την "διαβάζει" το πρόγραμμα σου χαρακτήρα χαρακτήρα από αριστερά προς τα δεξιά. Πχ αμα έχεις την έκφραση 35+2*3 , ο στόχος θα ήταν να φτάσεις σε μια λίστα μήκους 5 string "35","+","2","*","3" και να δουλέψεις με αυτήν λαμβάνοντας υπόψη και την προτεραιότητα των πράξεων (πχ πολλαπλασιασμός προηγείται της πρόσθεσης). Έχει πάντως αρκετή δουλειά όλη αυτή η διαδικασία. Πρέπει να αφαιρείς τα τρία στοιχεία από την λίστα αριθμός, πράξη , αριθμός και να κάνεις προσθήκη στην θέση τους έναν αριθμό μέχρι να αδειάσει όλη η λίστα και να μείνει ένας αριθμός.

 

Από την άλλη πάλι, αν προτιμήσεις να ακολουθήσεις την ίδια λογική με αυτή που έχει τώρα το πρόγραμμα σου και να ζητάς μια μια τις τιμές και τις πράξεις από τον χρήστη, νομίζω είναι πιο εύκολο να βάλεις κομμάτια του κώδικα μέσα σε συναρτήσεις πχ string MathematicalAction() που θα σου επιστρέφει την πράξη που εισήγαγε ο χρήστης για να είναι πιο οργανωμένος ο κώδικας και να μην χαθεί η μπάλα. οποτε το while θα έχει μέσα ένα MathematicalAction() και ένα GetNumber() που θα κάνει πράξεις με την προηγούμενη απάντηση μέχρι να αποφασίσεις ότι δεν θες άλλο αριθμό. Αυτό θα είναι πολύ εύκολη υλοποίηση σε σχέση με το προηγούμενο.

Δημοσ.

Έχεις εμπειρία σε κάποια άλλη γλώσσα; Πιθανόν όχι αλλά παίζει ρόλο.

 

Νομίζω σε αυτό το στάδιο θα μπορούσες να σκεφτείς πως θα γίνει πιο συμπαγές εκείνο το τμήμα που διαβάζει τον τελεστή. Πρακτικά δεν έχει καθόλου σημασία, αλλά νομίζω είναι καλή εξάσκηση γιατί στη προσπάθεια θα βλέπεις μπροστά σου άλλες μορφές που είναι (ή δεν είναι καθώς θα πειραματίζεσαι) αλγοριθμικά ισοδύναμες με αυτό που έχεις. Όλα αυτά είναι πολύ απλές μεν αλλά θεμέλιες εικόνες κώδικα.

Δημοσ.

Δεν έχω εμπειρία σε άλλη γλώσσα όχι. Εκτός από τα βασικά της python (να μπορώ να εκτυπώνω κάτι ή να μετατρέπω string σε ints).

 

Το φανταζόμουν ότι ο κώδικας από το προγραμματάκι θα είναι μεγάλος, γιατί το έφτιαξα με τα βασικά που έμαθα απο 10 βιντεάκια στα online courses.

Με λίγα λόγια χρησιμοποιήσα όλες τις γνώσεις που απέκτησα από τα courses, για να το φτιάξω, δηλαδή δε ξέρω καν τι είναι η λίστα και οι συναρτήσεις της μορφής: string MathimaticalAction() και GetNumber(), ώστε να καταφέρω να ελαχιστοποιήσω τις γραμμές κώδικα. Οπότε μάλλον θα συνεχίσω τα courses πριν προσπαθήσω να φτιάξω ένα πιο user friendly "calculator".

Παρόλα αυτά είναι μια πολύ καλή άσκηση, οπότε σας ευχαριστώ πολύ για τις προτάσεις και τα σχόλια σας! :-D :-)

Δημοσ.

Ναι μην σε μπερδεύω θα τα δεις στην πορεία, εννοώ να βάζεις αυτοτελή κομμάτια του κώδικα σε μια συνάρτηση που θα την καλείς

 

http://csharp.net-tutorials.com/basics/functions/

 

Από tutorials έχει πολλά, και εγώ από βιντεάκια του Bob Tabor έμαθα κάποια βασικά στο σάιτ της Microsoft Virtual Academy. 

 

 
Δημοσ.

Άσχετο: πλήρωσα το πρώτο 25αρι στο treehouse, αξιζει λες να συνεχίσω εκεί ή καλύτερα να στραφώ στα δωρεάν της Microsoft;;

Δημοσ.

Δεν μπορώ να πω γνώμη γιατί δεν το έχω χρησιμοποιήσει. Προσωπικά με κάλυψε για να μάθω τα βασικά που ήθελα για να φτάχνω κάποια απλά projects το δωρεάν. 

Δημοσ.

Εδώ

if (entry != "*" && entry != "-" && entry != "+" && entry != "/" && entry != "%")

θέλει νομίζω or

 

 και αυτό με τα πολλά ifs είναι νομίζω κλασική περίπτωση switch

  • Like 1
Δημοσ.

Θα το δοκιμάσω. Προς το παρών επιχείρησα να ζητήσω από τον χρήστη να βάλει όσες τιμές θέλει, αλλά απέτυχα. Θα το προσπαθήσω και αυτό όμως.

Ευχαριστώ πολύ! Χεχε :D

Ο καλύτερος τρόπος για αυτό είναι τα δυαδικά αριθμητικά δένδρα.

Δημοσ.

Ο καλύτερος τρόπος για αυτό είναι τα δυαδικά αριθμητικά δένδρα.

Πολλά μπορούν να γίνουν όπως πχ αυτό που είπες, είτε μετατροπή σε postfix, είτε parsing με αναδρομή κα. Το θέμα όμως είναι οτι ο TS μόλις ξεκίνησε να μαθαίνει control flow κτλ και δεν ξέρει καλά καλά συναρτήσεις οπότε το να συζητάμε τέτοια δεν νομίζω ότι θα τον βοηθήσουν.

 

Όταν χρειαστεί εδώ θα είμαστε :)

Δημοσ.

Αυτό που θα έκανα εγώ διαφορετικά, είναι να αντικαταστήσω τα if/elseif με switch όπως είπε ο k33theod, και να το βάλω σε μια μέθοδο όπως είπε ο Tui112.

 

Αυτές οι αλλαγές ίσως να σου φανούν περιττές τώρα γιατί δεν προσθέτουν κάτι στη λειτουργικότητα του προγράμματος, αλλά θα είναι καλές συνήθειες που θα αποδειχθούν χρήσιμες αργότερα, όταν θα φτιάχνεις μεγαλύτερα προγράμματα.

 

Γιατί με το switch συμπυκνώνεται ο κώδικας σε λιγότερο χώρο στην οθόνη, κάνοντας το διάβασμά του πιο γρήγορο. Κάτι που θα είναι πολύ σημαντικό όταν θα έχεις πολλές γραμμές κώδικα στο πρόγραμμα σου.

Σχετικά με το λογικό χωρισμό του κομματιού αυτού σε μέθοδο, θα σου φανεί χρήσιμο να έχεις τη κάθε ξεχωριστή λειτουργία σε μια μέθοδο για οργάνωση (αν κάποια στιγμή εμφανιστεί ένα bug, να μπορείς πιο εύκολα να βρεις σε πιο σημείο υπάρχει ο προβληματικός κώδικας), και θα υπάρχει και η δυνατότητα να καλέσεις το συγκεκριμένο κομμάτι από αλλού, αν χρειαστεί.

 

Καλή συνέχεια.

Δημοσ.

Εδώ

if (entry != "*" && entry != "-" && entry != "+" && entry != "/" && entry != "%")

θέλει νομίζω or

 

 και αυτό με τα πολλά ifs είναι νομίζω κλασική περίπτωση switch

δεν είχα ξανασυναντήσει multiple conditions εντός της παρένθεσης στα courses που έχω παρακολουθήσει έως τώρα, για αυτό και ήταν το πρώτο που βρήκα στο google. Θα το δοκιμάσω με or, ευχαριστώ πολυ΄.

 

Όλοι λίγο πολύ μου μιλήσατε με μια ορολογία άγνωστη, οπότε θα επιστρέψω όταν τη μάθω! Σας ευχαριστώ πολύ όλους σας για τις απαντήσεις!

Δημοσ.

δεν είχα ξανασυναντήσει multiple conditions εντός της παρένθεσης στα courses που έχω παρακολουθήσει έως τώρα, για αυτό και ήταν το πρώτο που βρήκα στο google. Θα το δοκιμάσω με or, ευχαριστώ πολυ΄.

 

Να μη δοκιμάσεις με or γιατί σωστά το έχεις. Σκέψου το λογικά.

 

Από την άλλη αυτό είναι κλασικό λάθος που όλοι έχουμε κάνει κατά καιρούς οπότε κάντο και συ να "εμβολιαστείς" και να μη το ξανακάνεις τα επόμενα 4-5 χρόνια.  :-D

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...