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

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

Δημοσ.

Ο χρήστης που καλεί το πρόγραμμα από το λειτουργικό θέλει να γνωρίζει για επιτυχία ή αποτυχία. Έστω ότι θέλει να το χρησιμοποιήσει σε κάποιο shell/batch script. Τότε πρέπει να ελέγχει μία επιστρφόμενη τιμή. Αν η επιστρεφόμενη τιμή ακόμη και για αρνητικούς είναι 0, τότε υπάρχει λογικό σφάλμα στο πρόγραμμα.

Δεν ξέρω αν το κατάλαβες αλλά μιλάω για το συγκεκριμένο παράδειγμα και αποκλειστικά για το πρώτο return.

 

Το συγκεκριμένο παράδειγμα τυπώνει το μήνυμα "type again", υπονοώντας ότι θα πρέπει να υπάρχει κάποια επανάληψη αν δοθεί αρνητικός αριθμός. Αν αφήσεις εκεί το return, θα τερματιστεί το πρόγραμμα με αποτέλεσμα να μην μπορέσει ο χρήστης να δώσει άλλον αριθμό άρα είναι λάθος να το βάλεις εκεί το return.

Δημοσ.

Δεν ξέρω αν το κατάλαβες αλλά μιλάω για το συγκεκριμένο παράδειγμα και αποκλειστικά για το πρώτο return.

 

Το συγκεκριμένο παράδειγμα τυπώνει το μήνυμα "type again", υπονοώντας ότι θα πρέπει να υπάρχει κάποια επανάληψη αν δοθεί αρνητικός αριθμός. Αν αφήσεις εκεί το return, θα τερματιστεί το πρόγραμμα με αποτέλεσμα να μην μπορέσει ο χρήστης να δώσει άλλον αριθμό άρα είναι λάθος να το βάλεις εκεί το return.

Κι εγώ για το συγκεκριμένο μιλάω. Το λειτουργικό δε θα μπορέσει να καταλάβει το "type again", αλλά θα καταλάβει το -1.

Δημοσ.

Κι εγώ για το συγκεκριμένο μιλάω. Το λειτουργικό δε θα μπορέσει να καταλάβει το "type again", αλλά θα καταλάβει το -1.

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

Δημοσ.

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

Υπάρχει επανάληψη;

 

Δεν το συνεχίζω. Δεν έχω κάτι παραπάνω να πω.

Δημοσ.

Υπάρχει επανάληψη;

 

Δεν το συνεχίζω. Δεν έχω κάτι παραπάνω να πω.

Όπως είπα, υπονοείται ότι θα υπάρχει επανάληψη από το "type again".

 

Αλλά ναι, δεν υπάρχει κάτι να πεις, το μόνο που λες επανειλημμένα αφορά τα system exit codes το οποίο το γνωρίζω ήδη, δεν ξέρω γιατί συνέχισες να το λες.

Δημοσ.

Όπως είπα, υπονοείται ότι θα υπάρχει επανάληψη από το "type again".

 

Αλλά ναι, δεν υπάρχει κάτι να πεις, το μόνο που λες επανειλημμένα αφορά τα system exit codes το οποίο το γνωρίζω ήδη, δεν ξέρω γιατί συνέχισες να το λες.

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

Δημοσ.

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

Νόμιζα ότι δεν θα συνέχιζες, άλλα λες άλλα κάνεις.

 

Και εσύ έκανες λόγο για συνάρτηση που θα καλούταν επανειλημμένα, ακόμα και για batch/shell scripts ενώ δεν υπάρχει κάτι τέτοιο εδώ. Το να αφήσεις εκεί το return -1 σε ένα τέτοιο απλό πρόγραμμα όπου δεν ελέγχεται πουθενά (ούτε σε batch ούτε τίποτα) η επιστρεφόμενη τιμή δεν έχει πολλή ουσία. Ισχυρίστηκες ότι θα ήταν λογικό σφάλμα αν η επιστρεφόμενη τιμή ήταν 0 σε περίπτωση που ο χρήστης έδινε αρνητικό αριθμό αλλά σε αυτήν την περίπτωση δεν είσαι σωστός, την επιστρεφόμενη τιμή θα την πάρει μόνο το λειτουργικό σύστημα και οι system error codes έχουν σχεδιαστεί για να ενημερώνεται το λειτουργικό σύστημα για τυχόν σφάλματα συστήματος, δηλαδή όταν κάποιος κώδικας δεν έκανε αυτό που έπρεπε να κάνει και υπήρχε σφάλμα. Σε αυτήν την περίπτωση, ο κώδικας θα τρέξει μια χαρά άρα δεν υπάρχει λόγος να ενημερώσεις το λειτουργικό σύστημα ότι υπήρχε σφάλμα επειδή ο χρήστης έδωσε αρνητικό αριθμό, δεν νοιάζεται για αυτό το λειτουργικό σύστημα. Και μην λέμε τα ίδια για scripts, δεν υπάρχει τίποτα εδώ, μόνο στο λειτουργικό σύστημα θα πάει η επιστρεφόμενη τιμή.

Δημοσ.

Σκέψου ότι στη θέση του λειτουργικού είναι η main και ότι στη θέση της main η συνάρτηση checked_input(). Ποιος κώδικας θα δούλευε ορθά (λογικά); Ποια η λογική των exit codes; Μόνο το λειτουργικό ενδιαφέρεται;

 

Αυτό που έλεγα εγώ είναι κάτι τέτοιο και είναι ένας τρόπος για να καταλάβεις πως αυτό που πρότεινες περιέχει λογικό σφάλμα. Όχι ότι ντε και καλά θέλουμε να το τρέξουμε σε script.

 

 

Ω ναι!!! Συνεχίζεται η κατάρα με τα απλά post για C.

 

Δημοσ.

Σκέψου ότι στη θέση του λειτουργικού είναι η main και ότι στη θέση της main η συνάρτηση checked_input(). Ποιος κώδικας θα δούλευε ορθά (λογικά); Ποια η λογική των exit codes; Μόνο το λειτουργικό ενδιαφέρεται;

 

Αυτό που έλεγα εγώ είναι κάτι τέτοιο και είναι ένας τρόπος για να καταλάβεις πως αυτό που πρότεινες περιέχει λογικό σφάλμα. Όχι ότι ντε και καλά θέλουμε να το τρέξουμε σε script.

 

 

Ω ναι!!! Συνεχίζεται η κατάρα με τα απλά post για C.

 

Μην πηγαίνεις σε άλλα παραδείγματα, εγώ μιλάω μόνο για το συγκεκριμένο, ποτέ δεν είπα ότι ενδιαφέρεται μόνο το λειτουργικό για τα exit codes αλλά σε ΑΥΤΟ το παράδειγμα, μόνο το λειτουργικό θα το πάρει. Αδυνατείς να καταλάβεις ότι μίλησα μόνο για το συγκεκριμένο παράδειγμα.

Δημοσ.

Και βέβαια καταλαβαίνω τι λες. Ο OP όμως είναι ακόμη νέος στον προγραμματισμό και προφανώς ακόμη δεν έχει δουλέψει με συναρτήσεις. Γιατί να μην έχει μία ιδέα από τώρα; Καλό είναι να μαθαίνει κάποιες συμβάσεις από τώρα.

 

Επίσης, το πρόγραμμα που έδωσε κάνει μόνο μία δουλειά, μία ρουτίνα. Είτε το κυρίως πρόγραμμα είναι είτε μία συνάρτηση, πρέπει να ενημερώνει με κάποιον τρόπο τον caller.

Δημοσ.

Και βέβαια καταλαβαίνω τι λες. Ο OP όμως είναι ακόμη νέος στον προγραμματισμό και προφανώς ακόμη δεν έχει δουλέψει με συναρτήσεις. Γιατί να μην έχει μία ιδέα από τώρα; Καλό είναι να μαθαίνει κάποιες συμβάσεις από τώρα.

 

Επίσης, το πρόγραμμα που έδωσε κάνει μόνο μία δουλειά, μία ρουτίνα. Είτε το κυρίως πρόγραμμα είναι είτε μία συνάρτηση, πρέπει να ενημερώνει με κάποιον τρόπο τον caller.

Απλά σε αυτό το παράδειγμα δεν υπήρχε κάτι για να ελέγξει την επιστρεφόμενη τιμή αλλά σε κάποιο άλλο παράδειγμα σίγουρα θα του χρησιμέψει να ελέγχει την επιστρεφόμενη τιμή.

 

Τέλος πάντων, πιστεύω αρκετά είπαμε σε αυτό το topic φίλε. Γεια χαρά.

Δημοσ.

Τέλος πάντων, πιστεύω αρκετά είπαμε σε αυτό το topic φίλε. Γεια χαρά.

:P είναι συχνό φαινόμενο για τέτοια απλά posts. Καλησπέρα!

  • Like 1

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα
  • Δημιουργία νέου...