Ειμαι προσεχως δευτεροοετης φοιτητής στο ημτυ και εχω φουλ δυσκολια να γραψω c (με python κατι κανω). Δυσκολευομαι κυριως στη συνταξη, μου λενε οτι δεν διαβαζεται ο κώδικας μου, αλλα και στο να να τα σκεφτομαι τις συναρτήσεις με τη σωστη σειρα. Επισης πιανω τον εαυτο μου να εκνευριζομαι πολυ οταν γραφω κωδικα. Με ενδιαφερει γενικα η επιστημη των υπολογιστων και για ενα μεταπτυχιακο που θελω. Φτιαχνεται η κατασταση ή μηπως δεν ειναι για μενα και να κανω 10%?
@γιαννης_00
Προτού ξεκινήσεις να γράφεις το οτιδήποτε, οφείλεις να σκεφτείς το πρόβλημα που θες να λύσεις και να το εκφράσεις με ψευδογλώσσα. Επίσης να έχεις στο μυαλό σου αυτούς τους κανόνες :
1. Εκφράζεις με απλό τρόπο το πρόβλημα και κατανοείς τα δεδομένα εισόδου και εξόδου.
2. Αναγνωρίζεις τις βασικές μεταβλητές που θα χρειαστείς βάσει του βήματος 1.
3. Εαν μια διαδικασία επαναλαμβάνεται πάνω απο μια φορές, ορίζεις συναρτήσεις. Σε απλά προγράμματα ίσως να μην έχει νόημα, αλλά είναι μια καλή συνήθεια. Σε μεγάλα προγράμματα δεν σε συμφέρει να πρέπει να τρέχεις απο εδώ και απο εκεί και να βρίσκεις τι πρέπει να αλλάξει επειδή πείραξες μια μεταβλητή ή επειδή χρειάστηκε να τροποποιήσεις μια λειτουργία.
4. Αναγνωρίζεις μέρη του προβλήματος τα οποία επαναλαμβάνονται πολλές φορές -> Δομές επανάληψης.
Αποφασίζεις ποια θα χρησιμοποιήσεις βάσει του εαν ξέρεις πόσες φορές θα γίνει μια επανάληψη ή εαν κάτι πρέπει να γίνεται ως ότου παύσει να ισχύει μια συνθήκη.
5. Αντίστοιχα αναγνωρίζεις μέρη του προβλήματος που απαιτούν έλεγχο μιας συνθήκης -> Δομές ελέγχου.
Εδώ πρέπει να είσαι πάρα πολύ προσεκτικός και να σκεφτείς όλες τις περιπτώσεις και το πως θα αντιδράσει το πρόγραμμα σου. Καλό είναι να ορίζεις προσεκτικά τι πρέπει να γίνεται όταν ισχύει μια συνθήκη αλλά να σκέφτεσαι και τι πρέπει να συμβεί όταν δεν ισχύει κάποια ιδιαίτερη συνθήκη. Εαν έχεις πολλές περιπτώσεις χρησιμοποιείς εντολές όπως switch.
6. Προσπαθείς να ακολουθείς σωστές πρακτικές, δηλαδή μικρά ονόματα μεταβλητών τα οποία είναι όσο πιο περιγραφικά γίνεται. Επίσης προσθέτεις σχόλια όπου χρειάζεται τα οποία εξηγούν τι συμβαίνει σε ένα block κώδικα.
7. Χρησιμοποιείς εργαλεία για debugging, είτε κάνοντας σχόλιο τμήμα του κώδικα, είτε τρέχοντας τον εως μια συγκεκριμένη γραμμή, είτε τυπώνοντας στην οθόνη κατάλληλα μηνύματα για να βεβαιωθείς πως το περιεχόμενο διάφορων μεταβλητών είναι το αναμενόμενο.
8. Ελέγχεις πως ο κώδικας σου λειτουργεί για απλές περιπτώσεις.
9. Όταν κάνεις μια αλλαγή, πρέπει να ελέγχεις πως ο κώδικας σου εξακολουθεί να είναι λειτουργικός, αλλιώς εαν κάνεις πολλές αλλαγές, θα φας ώρα χωρίς λόγο στο να κάνεις troubleshoot.
10. Στο τέλος ρίξε και μια ματιά για καμιά μια βελτιστοποίηση εαν μπορεί να γίνει. Βλέπεις ποια κομμάτια θα μπορούσαν να συγχωνευτούν, ποια θα επωφελούνταν κάνοντας τα συνάρτηση κτλπ. Επαναξιολογείς επίσης τους τύπους δεδομένων που έχεις χρησιμοποιήσει. Αν ας πούμε ξέρεις πως χρειάζεσαι λίγα δεκαδικά ψηφία, δεν θα χρησιμοποιήσεις διπλής ακρίβειας κινητής υποδιαστολής μεταβλητές. Γενικά απέκτησε καλές συνήθειες απο τώρα. Κάποιες κακές συνήθειες δεν είναι τόσο τραγικές όταν δουλεύεις σε απλά προγράμματα αλλά γίνονται τεράστια προβλήματα όταν κάνει scale αυτό που κάνεις.
11. Προσοχή στην αρχικοποίηση των μεταβλητών.
12. Προσοχή στις οριακές συνθήκες. Σκέψου τι θα γίνει όταν μια μεταβλητή πάρει την πιο μικρή ή αντίστοιχα την πιο μεγάλη τιμή της.
13. Προσοχή όταν δουλεύεις με πολλαπλούς τύπους δεδομένων και ιδίως όταν θες να κάνεις υπολογισμούς ή λειτουργίες αξιοποιώντας δεδομένα απο διαφορετικούς τύπους.
Γενικά μην απογοητεύεσαι, δώστου το χρόνο του και όπως σου είπαν συνέχισε να εξασκείσαι. Σταδιακά θα γίνεσαι καλύτερος, αρκεί να μην το αφήσεις.