Φαντάσου έναν μαθητή/φοιτητή που δεν ξέρει προγραμματισμό και η C είναι η πρώτη του γλώσσα, αλλά ακόμα και να μην ήταν. Τι θα κάνεις στα πρώτα μαθήματα? δεν θα κάνεις την έννοια της μεταβλητής, και σιγά σιγά θα πας δομή επιλογής κλπ? φυσικά για δείκτες δεν το συζητάμε , θα πας αρκετά μετά.
Για να ξεκινήσεις από το I/O χαρακτήρα/χαρακτήρα από το πρώτο μάθημα πρέπει ο μαθητής να ξέρει : δομή επιλογής / δομή επανάληψης / casting μεταξύ τύπων και άλλα πολλά. Θα τα κάνεις αυτά σε 1 μάθημα ?
Αν πάλι ξεκινήσεις από scanf/printf δεν θα πρέπει να εξηγήσεις τι είναι το & στην scanf? Πως? αφού ακόμα δεν ξέρουν pointers?
Άρα όταν ξεκινάς από C ξεκινάς από τα απλά και αυτός ακριβώς είναι ο λόγος που δεν ξεκινάς από αυτό που είπες αλλά από ένα απλό προγραμματάκι με μεταβλητές, πραξούλες, και εντολές εισόδου/εξόδου. Και εκεί είναι το πρόβλημα. Ποιες εντολές I/O θα χρησιμοποιήσεις χωρίς να σου φύγουν οι μισοί μαθητές /φοιτητές? Σίγουρα όχι αυτές που ανέφερα προηγουμένως.
Ενώ τα cin,cout είναι ότι πρέπει και μπορείς να τους τα εξηγήσεις και μια χαρά π.χ. η εντολή
cin >> number μεταφέρει έναν αριθμό από το πληκτρολόγιο (cin) προς τη (>>) μεταβλητή number. Και τέλειωσες, ούτε να ελέγχει τι τύπο έχει ούτε τίποτα.
Επίσης αυτό που είπα για να το χρησιμοποιήσει ο μαθητής πρέπει να ξέρει OO??? Απλά το χρησιμοποιεί, δεν χρειάζεται να ξέρει τι κρύβεται από πίσω, άσε που δεν είναι ακριβώς καθαρός OO, αφού το operator overlaoding είναι πατέντα της C++.
Το πρόβλημα αυτό που λέω με τις εντολές εισόδου/εξόδου όταν κάποιος ξεκινάει με C έχει απασχολήσει πολλούς επιστήμονες που ασχολούνται με τη διδασκαλία της C, οι οποίοι αναγκάζονταν να φτιάχνουν βιβλιοθήκες i/o για αυτόν τον σκοπό (τα ίδια και στην java). Τώρα όμως με τα cin/cout η μετάβαση ενός μαθητή στη C γίνεται πολύ πιο ομαλά.
Πολλές φορές όταν διδάσκουμε ένα δύσκολο αντικείμενο που δεν καταλαβαίνουν τα παιδιά είμαστε αναγκασμένοι να δημιουργήσουμε έναν ενδιάμεσο δρόμο, ο οποίος είναι πολλές φορές και ο πιο γρήγορoς