Διάλεξη 3 / Διάλεξη 3 / σύντομη περιγραφή - Καρατζάς Κωνσταντίνος (ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ, 2015)
σύντομη περιγραφή: Σήμερα, 10 του μηνός Μαρτίου, σας καλωσορίζω και πάλι στο μάθημα της πληροφορικής. Είναι η συνέχεια όλων όσων έχουμε δει και μέρος της όμορφης πορείας, που θα ακολουθήσουμε, πιστεύω, μέχρι το τέλος του εξαμήνου. Είναι η συνέχεια όλων όσων έχουμε δει και μέρος της όμορφης πορείας που θα ακολουθήσουμε, πιστεύω, μέχρι το τέλος του εξαμήνου. Σήμερα θα ασχοληθούμε με επίλυση προβλημάτων και μπορεί ο λόγος να είναι προφανής. Παρ' όλα αυτά θα ήθελα να μου επιτρέψετε να πω πως, ναι, είμαστε στο μάθημα αυτό για να μπορέσουμε να διαχειριστούμε προβλήματα και να τα επιλύσουμε. Και για να το κάνουμε αυτό θα πρέπει να διαμορφώσουμε μία διαδικασία επίλυσης. Πολλά δε από τα πράγματα που θεωρούμε αυτονόητα και που μέχρι τώρα στα προηγούμενα στάδια των σπουδών μας τα εκπονούσαμε χωρίς κανένα πρόβλημα δεν είναι καθόλου αυτονόητα για μία μηχανή. Εμείς όμως επιδιώκουμε να αναθέσουμε σε μία μηχανή επίλυση προβλημάτων. Άρα θα πρέπει να καταστήσουμε κάθε βήμα επίλυσης απολύτως σαφές και κάθε τμήμα της διαδικασίας αυτής ελεύθερο οποιαδήποτε εκκρεμοτήτων ως προς παραδοχές, έλλειμμα στοιχείων ή οτιδήποτε άλλο τυχόν χρειάζεται να λάβουμε υπόψη μας για να επιλύσουμε ένα πρόβλημα. Άρα λοιπόν θα δούμε το πώς πηγαίνουμε από το πρόβλημα στον αλγόριθμο και για να το κάνουμε αυτό θα μιλήσουμε για την ανάγκη κατανόησης προφανώς του προβλήματος, της αναζητούμενης λύσης του καθορισμού του αποτελέσματος υπό την έννοια του να πούμε τι θέλουμε να μάθουμε ποιο είναι το ζητούμενο αποτέλεσμα, να αναπτύξουμε ένα μαθηματικό μοντέλο το οποίο θα περιγράφει το πρόβλημα και εάν αυτό είναι εφικτό να σχεδιάσουμε πραγματικά να σκιτσάρουμε το μοντέλο αυτό ονοματίζοντας παραμέτρους εισόδου-εξόδου να συλλέξουμε τα δεδομένα που απαιτούνται να κάνουμε τυχόν απλοποιήσεις που απαιτούνται επίσης για να επιτύχουμε λύση και να δηλώσουμε έτσι τις παραδοχές μας ενώ βέβαια απαιτείται το να προσδιορίσουμε βασικές αρχές ποια να το πω πολύ απλά μαθηματικά ποιους νόμους κανότητες της χημείας, της μηχανικής, της μηχανολογίας την οποία σιγά σιγά αρχίζεται να εντάσεστε και εσείς και την οποία αρχίζεται σιγά σιγά να μαθαίνετε θα χρησιμοποιήσουμε να αναζητήσουμε μεθόδους επίλυσης πρώτα απ' όλα αναρωτόμενης-αναρωτόμενη τι γνωρίζουμε από το παρελθόν, έχουμε ξανασυνεντήσει κάτι όμοιο πώς το χειριστήκαμε να ονοματίσουμε το καθεδήμα γιατί διότι απευθυνόμαστε σε μία μηχανή στην οποία είπαμε ότι θέλουμε να αναθέσουμε τη διαδικασία επίλυσης να ελέγξουμε την όποια λύση προκύπτει για απλή μορφή του προβλήματος με τη βοήθεια ενδιάμεσων αποτελεσμάτων να επιβεβαιώσουμε τη λύση είναι λογική και τι σημαίνει αυτό εάν για παράδειγμα σε μία άσκηση θερμοδυναμικής σας προκύψει ξαφνικά θερμοκρασία καύσης ενός αερίου ίση με 6.000 βαθμούς προφανώς θα πρέπει άμεσα να αναρωτηθείτε πού γίνεται αυτή η καύση και ποιο αέριο καίγεται ή ποια άλλη ουσία καίγεται είναι δυνατόν να έχω σε συνθήκες θερμοκρασίας, υγρασίας και υπό τις γνωστές ουσίες στη Γη θερμοκρασία καύσης 6.000 βαθμών άρα λοιπόν δεν ατενίζω απλά το αποτέλεσμα και αυτό ατενίζει εμένα χωρίς όμως να αντιλαμβανόμαστε το τι συμβαίνει μπαίνουμε σε μια κριτική διαδικασία η οποία προσπαθεί να επιβεβαιώσει τη λύση και βέβαια να δούμε αν η ακρίβεια είναι αποδεκτή και αν προκύπτει κάτι από το μαθηματικό σκέλος πάντοτε μαζί μας πολύτιμος και μοναδικός αρωγός σε κάθε διαδικασία επίλυσης δεν μπορούμε χωρίς αυτό έστω λοιπόν ότι θέλουμε να μιλήσουμε για μπάσκετ και έστω ότι θέλουμε να προσωμιώσουμε ένα σουτ στο μπάσκετ το οποίο θα γίνει από τη γραμμή των ελεύθερων βολών από ύψος έξι ποδιών με στόχο απευθείας στο καλάθι η γωνία και η αρχική ταχύτητα δύναται να μεταβάλλονται στο πρόβλημά μας το πρόγραμμα που θα κατασκευάσουμε στο τέλος ως υλοποιητή της διαδικασίας επίλυσης θα πρέπει να μπορεί να προσδιορίσει πολύ απλά ένα και μόνο πράγμα είναι το σουτ πετυχημένο ή όχι φαίνεται πάρα πολύ απλό για να δούμε τι πρέπει να κάνουμε για να το αναθέσουμε σε μία μηχανή πρώτα απ' όλα να αναρωτηθούμε ως προς τα στοιχεία εισόδου που θα λαμβάνει το πρόγραμμα και το αποτέλεσμα που πρέπει να παράγει προφανώς λοιπόν θέλουμε να προσωμιώσουμε το σουτ και ουσιαστικά το ερώτημα σε τι μεταφράζεται με συγκεκριμένα δεδομένα δηλαδή ύψος από το οποίο λαμβάνει χώρα το σουτ ή βολή γωνία, απόσταση και αρχική ταχύτητα μεταξύ μπάλας και καλάθιού μπαίνει μπάλα στο καλάθιού αυτό δεν είναι το ερώτημά μας σε αυτό το ερώτημα δεν πρέπει να απαντήσουμε για να δούμε τώρα τι άλλο πρέπει να κάνουμε το βασικό ερώτημα είναι το εξής εδώ τι σημαίνει για τον υπολογιστή μπαίνει μπάλα στο καλάθι πως θα μεταφράσουμε αυτό το άμεσα κατανοητό ερώτημα για τον άνθρωπο σε ένα άμεσα απόλυτα και χωρίς ασάφιες κατανοητό και άρα αποφάνσιμο ερώτημα για τον υπολογιστή για τον αλγόριθμό μας ποιο είναι λοιπόν το κριτήριο επίλυσης του προβλήματος δεν το γνωρίζουμε αυτή τη στιγμή ας κάνουμε ένα γράφημα να δούμε πού περίπου βρισκόμαστε η ανάπτυξη του μοντέλου όπως είπαμε έτσι είναι το βήμα αυτό άρα σχεδιάζω χονδρικά το που βρίσκομαι στο χώρο βοηθά έχω μια διαδικασία όπου ναι θέλω να κάνω μια βολή η οποία θα λάβει χώρα από το σημείο των ελεύθερων βολών όλες οι διαστάσεις δίνονται σε άλλο σύστημα όχι στο διεθνές σύστημα και υπάρχει λόγος για αυτό συλλέγουμε τα δεδομένα μας λοιπόν πρώτον απόσταση βολής σύμφωνα με τους κανόνες που διέπουν το συγκεκριμένο άκλημα αυτή ορίζεται στα 13 πόδια και 9 ίντσες το καλάθι σύμφωνα με τους ίδιους κανόνες έχει ύψος 10 ποδιών και διάμετρο 18 ίντσων η μπάλα είναι πορτοκαλή ζυγίζει 8 λίβρες και έχει διάμετρο 9,5 ίντσες για τους άντρες το ύψος γίνεται από τα 6 πόδια σύμφωνα με τα δεδομένα του προβλήματος και θεωρούμε επειδή μας το έχει πει η εκφώνηση του προβλήματος Ρητά ότι αυτό δεν μεταβάλλεται άρα τα μόνα δύο πράγματα που μεταβάλλονται καθόλου την υπόλοιπη διάρκεια επίλυσης είναι υπενθυμίζω η ταχύτητα και η γωνία γιατί λοιπόν αυτές οι μονάδες, για να δούμε στη συνέχεια μια απάντηση γι' αυτό όμως να συνεχίσουμε εμείς να κάνουμε τις απαραίτητες απλοποιήσεις για επίθευξη της επίλυσης πρώτα απ' όλα η αντίσταση του αέρα βεβαίως υπάρχει βεβαίως επηρεάζει την κίνηση ουδίποτες σώματος εντός αυτού όπως θα μάθετε στα μαθήματα της μηχανικής ρευστών και αργότερα της αεροδυναμικής υπάρχουν πάντοτε δυνάμεις οι οποίες ασκούνται όταν κινείται σώμα εντός ρευστού οι οποίες εξαρτώνται από ποικίλες παραμέτρους και παράγοντες και προφανώς δεν έχουμε αυτή τη στιγμή τις γνώσεις για να τις συζητήσουμε αλλά πολύ πιο σημαντικό είναι το εξής ότι σύμφωνα με τη μέχρι τώρα εμπειρία μας η αντίσταση του αέρα δεν παίζει κανέναν από το σημαντικό ρόλο στο σουτ στο μπάσκετ δεν είναι γκολφ όπου η αντίσταση του αέρα είναι πάρα πολύ σημαντική, δεν είναι σκοποβολή όπου επίσης είναι σημαντικός παράγοντας άρα θεωρεί τα μελιτέα πρώτη παραδοχή το κέντρο μάζας της μπάλας είναι το κέντρο το γεωμετρικό άρα αυτό τι συνεπάγεται αυτόματα κάτι που το θεωρούμε αυτονόητο αλλά δεν είναι καθόλου ότι η μπάλα είναι ομοιογενής και ομοτροπή όπως μάθατε ήδη στην επιστήμη των υλικών υπάρχουν λοιπόν παραδοχές που προέρχονται από εκεί ομοιογενείς και ομοτροπή αυτονόητο όχι για τη μηχανή όχι δηλαδή για τη διαδικασία επίλυσης η βαρύτητα είναι η μόνη επιδρούσα δύναμη κάτι που δεν είναι αληθές για οποιοδήποτε κινείται στην γη διότι υπάρχουν και άλλες δυνάμεις πέραν των δυνάμεων που ασκούνται από την ατμόσφαιρα έχουμε για παράδειγμα την δύναμη κοριόληση και όλοι γνωρίζουμε ότι η δύναμη κοριόληση επηρεάζει οποιαδήποτε κίνηση ιδιαίτερα οριζόντια κίνηση σε σχέση με το επίπεδο του εδάφους παρ' όλα αυτά η παραδοχή που πρέπει να κάνουμε είναι ότι εδώ μόνο η βαρύτητα παίζει ρόλο το ταμπλό δεν συμμετέχει γιατί μας το ανέφερε η εκφώνηση δεν υπάρχει το ταμπλό, υπάρχει μόνο η μπάλα και το καλάθι η μπάλα λοιπόν τώρα για να πάμε να διαμορφώσουμε τον κανόνα βάση του οποίου θα κρίνουμε αν το σούτ μας είναι πετυχημένο μπαίνει στο καλάθι και μόνο εάν το κέντρο της περάσει μέσα από τη στεφάνη με την περίμετρο της μπάλας τουλάχιστον να εφάπτεται στη στεφάνη οποιαδήποτε άλλη γεωμετρία του προβλήματος θεωρείται ότι δεν οδηγεί σε 100% απόλυτα βέβαια πετυχημένο σούτ άρα λοιπόν αυτό σημαίνει πρακτικά ότι αν έχω εγώ την στεφάνη μου εδώ τότε η μπάλα για ένα κέντρο προφανώς η μπάλα θα πρέπει να βρεθεί τουλάχιστον σε μια τέτοια θέση για να μπει σε σχέση με το κέντρο της στεφάνης απαραίτητη παραδοχή ώστε να μην χρειαστεί να επιλύσουμε οποιοδήποτε πρόβλημα που θα έχει σχέση με την επαφή της μπάλας με την στεφάνη άρα επαφή δύο σωμάτων που παραπέμπει σε προβλήματα κρούσης κλπ το ζήτημα εδώ είναι πλέον το πώς θα μεταφράσουμε αυτόν τον κανόν αυτή τη συνθήκη σε μια συνθήκη ελέγξιμη από τον υπολογιστή το κρατάμε όμως ως ερώτημα για να πάμε στους βασικούς νόμους και κανόνες Ποιοι είναι αυτοί? Πάρα πολύ γνωστοί εδώ και αρκετά χρόνια σε εμάς η μπάλα ακολουθεί την εξίσωση κίνησης ως προς οριζόντια και κατακόρυφη έννοια και προφανώς η οριζόντια απόσταση και η κατακόρυφη απόσταση αυτή είναι η οριζόντια απόσταση αυτή είναι η κατακόρυφη απόσταση είναι συναρτήσεις του χρόνου από εκεί και πέρα καλό είναι διότι πλέον εμείς είμαστε εκολαπτόμενοι σε εκολαπτόμενη μηχανική να κάνουμε πάντοτε στις σχέσεις μας έναν έλεγχο που έχει να κάνει με τις μονάδες διότι αυτός ο έλεγχος μπορεί πολύ εύκολα να μας δείξει αν έχουμε ξεχάσει κάποιον από τους όρους μίας εξίσωσης προφανώς άρα προφανώς εδώ τα πράγματα πηγαίνουν καλά ως προς τον έλεγχο αυτό ενώ αυτή είναι και η ευκαιρία που μου δίνεται να σχολιάσω για μία ακόμη φορά τραγικά λάθη που έχουν γίνει από ανθρώπους που ήταν καλύτεροι από εμάς και που παρόλα αυτά συνέχισαν να είναι άνθρωποι όπως είμαστε και εμείς άρα θα κάνουμε και εμείς προσπαθούμε να αποφύγουμε την τραγικότητα των λαθών αυτό είναι ένα λάθος που έγινε στην ιαστημική αποστολή Orbiter στον Άρη όπου πάλι, ό ναι, απλά και μόνο το γεγονός πως δύο κώδικες που μιλούσαν διαφορετική γλώσσα σε σχέση με το μετρικό σύστημα δεν συνεργάστηκαν σωστά και χάσαμε αυτή την αποστολή δεν ξέρουμε που βρίσκεται από εκεί και πέρα μεταφράζουμε εμείς ως μηχανικοί σε μονάδες που αντιλαμβανόμαστε η απόσταση βολής λοιπόν μεταφράζεται πλέον σε 4,19 μέτρα το καλάθι έχει ύψος 3,05 μέτρα η διάμετρος του είναι 46 εκατοστά ενώ αντίστοιχα η διάμετρος της μπάλας είναι 24 εκατοστά και το ύψος του σούτ είναι το 1,83 μέτρα δεδομένα που θα μας χρειαστούν για να τα τροφοδοτήσουμε στην διαδικασία επίλυσης από εκεί και πέρα τι άλλο θέλουμε θέλουμε να δούμε είπαμε τις τυχόναπλοποιήσεις εμφανίζονται οι ίδια πράγματα που είδαμε πιο πριν τα ξέρουμε πλέον όλα αυτά για ποιον λόγο τα εμφανίζω για να προσπαθήσω να μεταφράσω την συνθήκη του πετυχημένου σούτ σε κάτι που να είναι μαθηματικά και άρα και αλγοριθμικά ελέγξιμο τι σημαίνει το να περάσει το κέντρο της μπάλας μάλλον τι σημαίνει το να περάσει η μπάλα μέσα από τη στεφάνη έτσι ώστε να εφάπτεται το πολύ στο εσωτερικό αυτό σημαίνει ότι η απόσταση μεταξύ κέντρου πάλας και κέντρου στεφάνης θα πρέπει να έχει ένα μέγιστο θα πρέπει να είναι το πολύ 11 εκατοστά εάν δηλαδή και πώς μεταφράζεται τώρα αυτό έτσι σε ένα διδιάστατο πρόβλημα δεν έχουμε καθόλου τον χώρο άρα όλα κινούνται το σούτ κινείται στο επίπεδο του πίνακα εάν λοιπόν το κέντρο το γεωμετρικό κέντρο της μπάλας περάσει σε οριζόντια απόσταση κατά το πολύ ίση με 11 εκατοστά από το κέντρο της στεφάνης τότε η μπάλα έχει περάσει μέσα από τη στεφάνη και αυτό είναι απολύτως βέβαιο υπάρχει μόνο ένα θέμα εδώ υπάρχουν δύο τρόπους για την μπάλα μέσα από τη στεφάνη υπάρχει αυτή την έννοια ο ένας τρόπος είναι αυτό που αναμένουμε κι ο άλλος τρόπος είναι κάτι που δεν αναμένουμε να διαπεράσει τη στεφάνη κατά την άνοδότης παράδοξο αλλά όχι απίθανο άρα πρέπει να λυφθεί η υπόψη πάμε παρακάτω αυτό λοιπόν το στοιχείο πάλι θα πρέπει εμείς την κατάλληλη στιγμή να το μεταφράσουμε σε συνθήκη ελέγξημη από τον υπολογιστή μας το σχήμα είναι αυτό που βλέπουμε έτσι λοιπόν αναζητώντας μεθόδους επίλυσης πρώτα απ' όλα κάνουμε κάποιες παρατηρήσεις οι οποίες έχουν να κάνουμε ότι το βάρος και το χρώμα της μπάλας προφανώς δεν επισέρχονται στους υπολογισμούς αυτό που θέλουμε να κάνουμε είναι το εξής ακριβώς επειδή έχουμε δύο εξισώσεις κίνησης ως προς το χρόνο μία που αφορά την κατακόρυφη απόσταση που διανύει η μπάλα και μία που αφορά την οριζόντια απόσταση που διανύει η μπάλα θέλουμε με δεδομένη την βε μη δεν την αρχική ταχύτητα και την γωνία εννοείται με την οποία γίνεται το σούτ αν βρούμε το χρόνο που χρειάζεται το κέντρο της μπάλας για να φτάσει στο ύψος των δέκα ποδών ξεκινά από τα έξι πόδια, σωστά? πρέπει να φτάσει στα δέκα πόδια διαφορετικά δεν υπάρχει περίπτωση να έχει περάσει μέσα από τη στεφάνη και εφόσον υπάρξουν σε αυτή την εξήσωση που θυμίζω ότι είναι δευτεροβάθμια δύο πραγματικές λύσεις προφανώς να επιλέξουμε την δεύτερη την μεγαλύτερη λύση ως προς το χρόνο γιατί διότι διαφορετικά αν επιλέξουμε την πρώτη θα επιλέξουμε τη στιγμή που η μπάλα διαπερνά την στεφάνη κατά την άνοδό της υπάρχει ένας χρόνος όπου αυτό συμβαίνει άρα εμείς τι κάνουμε θα επιλύσσουμε πρώτα την εξήσωση της κατακόρυφης κίνησης έτσι δεν είναι είναι το επίπεδο στο οποίο θέλουμε να φτάσει η μπάλα ενώ το σούτ λαμβάνει χώρα από ένα σημείο κάτω από αυτό το επίπεδο εάν λοιπόν η μπάλα κατά την ανήψωση της φτάσει στο επίπεδο αυτό εάν θέσουμε το σταθερό όρο της εξήσωσης όπως θα δούμε ίσο με το ύψος και υπάρξει χρόνος άρα υπάρξει πραγματική λύση στην δευτεροβάθμια εξήσωση τότε έχουμε δύο δυνατότητες σε μια δευτεροβάθμια προφανώς είτε να έχουμε μια διπλή λύση είτε να έχουμε δύο διαφορετικές μεταξύ τους λύσεις μια μεγαλύτερη και μια μικρότερη στη δεύτερη περίπτωση θα επιλέξουμε την μεγαλύτερη λύση για αυτό διότι διαφορετικά η μπάλα θα διαπεράσει τη στεφάνη κατά την άνοδο πρώτος χρόνος και θα ξαναπεράσει από το επίπεδο της στεφάνης κατά την πτώση δεύτερος χρόνος άρα λοιπόν θα πρέπει να αποφασίσουμε εμείς ποιον χρόνο θέλουμε εμείς θέλουμε σε κάθε περίπτωση τον δεύτερο χρόνο διότι αν η μπάλα διαπεράσει τη στεφάνη στον πρώτο χρόνο τότε το shoot δεν θεωρείται πετυχημένο σύμφωνα με τους κανόνες του παιχνιδιού δεν θεωρείται πετυχημένο το shoot το οποίο συναπάγεται ότι η μπάλα διαπερνά τη στεφάνη από κάτω προς το πάνω έχει αποδειχθεί από όσους έχουν παρακολουθήσει το άθλημα Τώρα, να δούμε τις εξισώσεις μας άρα θα επιλύσουμε την εξίσωση της κατακόρυφης μετακίνησης απλά πράγματα, με δεδομένο V0 το οποίο προφανώς είπαμε ότι μεταβάλλεται άρα είναι ένα στοιχείο που θα δώσει ο χρήστης H0 είναι το αρχικό ύψος από το οποίο λαμβάνει χώρα το shoot τα 6 πόδια, τα 1,83 μέτρα η γωνία θ είναι η γωνία βολής τα υπόλοιπα στοιχεία είναι γνωστά και μετά θα δούμε εάν στον χρόνο αυτό που χρειάστηκε η μπάλα για να φτάσει στο ύψος της στεφάνης έφτασε και διένυσε και την απόσταση D από το σημείο των ελεύθερων βολών μέχρι τη στεφάνη Αυτό θα το δούμε από τη δεύτερη σχέση ενώ έχω σχολιάσει ήδη το γεγονός του και έχω εξηγήσει το γιατί επιλέγουμε την μεγαλύτερη από τις δύο λύσεις Εναλλακτικά έχουμε τρόπους βεβαίως και μια ολόκληρη γνωστική περιοχή έχει δομηθεί πάνω στην εναλλακτική αυτή μέθοδο που έχει να κάνει με το να προσωμοιώσουμε το πρόβλημα με πολύ μικρά χρονικά βήματα Αυτή η διαδικασία ένα μεταβαλόμενο σύστημα με το χρόνο άρα ένα δυναμικό σύστημα τροπροσωμοιώνουμε κόβοντας το χρόνο σε μικρά τμήματα σε ΔΤ και προσπαθώντας να βρούμε μια μαθηματική σχέση η οποία εκφράζει τη μεταβολή θέσεις οποιασδήποτε άλλη ιδιότητας στοιχείων του συστήματος σε σχέση με το ΔΤ σε αρκετά αντικείμενα και βασίζεται αυτή η διαδικασία σε έννοιες και τεχνικές που θα μάθετε στο μάθημα της αριθμητικής ανάλυσης Εδώ όμως μιλούμε για αναλυτικό, δετερμινιστικό προσδιορισμό Δηματικά λοιπόν ορίζω τις σταθερές μου, ο βεβαίως διότι η επιτάχυση της βαρύτητας αντιπροσωπεύει ένα σούτ στον πλανήτη Γη όλα αυτά θα μπορούσαν να λάβουν χώρας της Ελλήνης που μπορεί να παίξει μπάσκετ υπό συνθήκες Λήψη γωνίας και αρχικής ταχύτητας από το χρήστη το χρειάζομαι αυτό, θα το λάβω υπόψη μου όταν θα πάω να υλοποιήσω τον αλγόριθμό μου Μετατρέπω τις αρχικές μονάδες στο διεθνές σύστημα διότι δεν είναι τέτοιος σε αυτό Υπολογίζω τον χρόνο που απαιτείται για να περάσει το κέντρο μάζας της μπάλας από το ύψος της στεφάνης επιλύω τη δευτεροβάθμη εξίσωση ως προς τον χρόνο λοιπόν και είναι αυτή η εξίσωση που λύνω Άρα θέτω ως τελικό ύψος τα 3,05 μέτρα και από εκεί και πέρα επιλύω για να δω εάν υπάρχει χρόνος ο οποίος είναι να μου λύσει Τι σημαίνει αυτό? Προσέξτε! Εάν η ταχύτητα και η γωνία είναι τέτοια που η τροχιά της μπάλας να είναι αυτή δεν μπορώ να διαμορφώσω την εξίσωση Βεβαίως, η εξίσωση θα έχει πραγματική λύση Θα υπάρχει τάφ ανήκων εις το σύνολον των πραγματικών αριθμών το οποίο να αντιπροσωπεύει τον χρόνο που χρειάστηκε η μπάλα για να φτάσει στο ύψος της στεφάνης Όχι, διότι δεν έφτασε ποτέ η μπάλα στο ύψος της στεφάνης μα τότε η εξίσωσή μου δεν θα έχει λύση Βεβαίως, τι θα είναι ο χρόνος? Φανταστικός! Να λοιπόν πως κάτι που το γνωρίζουμε εδώ και πολλά χρόνια θα θυμίσω ότι γνωρίζουμε επίλυση δευτεροβάθιου ανεξισώσεων από την πρώτη ηλικίου ξαφνικά, ή μάλλον θα έλεγα όχι τόσο ξαφνικά αποκτά φυσική υπόσταση και σημασία Αυτό σημαίνει εδώ το να μην έχει πραγματική λύση η εξίσωση Προφανώς και υπάρχει λύση η οποία δεν αντιπροσωπεύει κατάσταση προβλήματος που μας ενδιαφέρει Αντιπροσωπεύει χρόνο, φανταστικό! Άρα δεν φτάνει ποτέ η μπάλα στο ύψος αυτό Ποια θα είναι η διπλή λύση? Τώρα αρχίζουμε και σκεφτόμαστε ότι προφανώς για να υπάρξει μία διπλή λύση σημαίνει αυτό ότι φτάνει η μπάλα μόνο μία φορά στο επίπεδο της τεφάνης Εφάρτεται και πέφτει Δεν μας ενδιαφέρει ούτε αυτό Δεν αποτελεί πετυχημένο σούτ κάτι τέτοιο, έτσι δεν είναι? Εάν είναι αυτόν τον τρόπο φτάσει η μπάλα στο ύψος της τεφάνης δεν μπορεί να θεωρηθεί πετυχημένο το σούτ Άρα θέλω οποιοδήποτε άλλο χρόνο Προφανώς λοιπόν θα απομονώσω μόνο τις περιπτώσεις όπου έχω διπλή πραγματική λύση και όχι φανταστική λύση και γι' αυτόν τον λόγο θα λάβω την μεγαλύτερη από τις δύο λύσεις διότι διαφορετικά θα λάβω υπόψη μου τον χρόνο κατά τον οποίο ξαναλέω η μπάλα θα φτάσει στο ύψος της τεφάνης κατά την άνοδο και όχι κατά την πτώση Αυτό λοιπόν θα κάνω εδώ Έχω εξηγήσει τη γεωμετρία, σχήματα διάφορα εδώ εξηγώ τα των διαστάσεων που προκύπτουν εύκολα απλή προσταφαίρεση των στοιχείων της τεφάνης και της μπάλας Οπότε λοιπόν από εδώ και πέρα Εννοείται ο Ιησουκάλης Γιατί δώσαμε άλλες μονάδες ίντσες και πόδια, δεν το είπα Για να επιδείξουμε το γεγονός πως σε πολλά προβλήματα μηχανικού συνεργαζόμαστε και ευχαριστώ για την ερώτηση Η ερώτηση ήταν λοιπόν για ποιο λόγο δώσαμε ίντσες και πόδια Πάχουν δύο λόγοι εδώ Το μπάσκετ είναι ένα άθλημα το οποίο εφευρέθηκε σε χώρα που δεν χρησιμοποιεί το διεθνές σύστημα και όλοι οι κανονισμοί περιγράφουν διαστάσεις γηπέδου και στοιχεία τεχνικά του παιχνιδιού σε πόδια και ίντσες. Δεύτερο, για να επιδείξουμε το γεγονός πως πάρα πολλές φορές συνεργαζόμαστε με συναδέλφους μας οι οποίοι χρησιμοποιούν διαφορετικό σύστημα μονάδων ή ενδεχομένως χρησιμοποιούν διαφορετικές παραδοχές Συνολικά λοιπόν έχουν άλλο επιστημονικό υπόβαθρο ως προς βασικά γνωσιακά στοιχεία του πεδίου επί του οποίου δουλεύουμε και οι δύο πρέπει λοιπόν να θεωρούμε τίποτα αυτονόητο και ουσιαστικά αυτή είναι μια ευκαιρία για να πούμε κάτι που ο μηχανικός πρέπει να το έχει πάντοτε στο μυαλό του Δεν παίρνουμε ποτέ τίποτα ως δεδομένο. Δεν υπάρχει κάτι δεδομένο. Δεν υπάρχει το νόμισα ότι πίστεψα πως, θεώρησα πως. Γιατί? Πάντοτε ελέγχουμε κάθε παραδοχή. Οπότε λοιπόν, γι' αυτό τον λόγο το έφερα στη συζήτηση και από εκεί και πέρα λέμε το εξής. Θυμίζω τα βήματα έτσι, οι αριθμοί μας εδώ είναι τα βήματα που είχα αναφέρει στην αρχή. Επηλείω και ελέγχω μετά για απλή μορφή του προβλήματος. Τι σημαίνει απλή μορφή του προβλήματος? Κάτι που να μπορώ για παράδειγμα να το επιβεβαιώσω με το χέρι. Θα κάνω την υλοποίηση του αλγορίθμου. Μπορεί να μου προσωμειώσει μια κατακόρυφη βολή, να μου βρει το μέγεθο του ύψους το οποίο θα φτάσει η μπάλα ας πούμε με μια αρχική ταχύτητα 40 πόδια το δευτερόλεπτο από ύψος βολής 6 ποδιών. Αυτή λοιπόν είναι η διαδικασία. Και βέβαια από εκεί και πέρα επιβεβαιώνω τη λύση, αυτό που χρειάζεται πάντοτε να το κάνουμε, για διάφορες, επιτρέψτε μου να πω, χαρακτηριστικές στιγμές, χαρακτηριστικά στιγμιότυπα όπως τα ονομάζει η αλγοριθμική του προβλήματος. Ένα χαρακτηριστικό στιγμιότυπο λοιπόν είναι το να έχω κίνηση εφαπτομενική, το πρόγραμμά μου εφόσον το υλοποιήσω μπορεί όντως να βρει και να εντοπίσει τέτοιους καταστάσεις. Μια άλλο στιγμιότυπο έχει να κάνει με χρόνο ο οποίος αφορά ταχύτητα, η βολή η οποία δεν φτάνει ποτέ στο ύψος της στεφάνης. Και τρίτα στιγμιότυπο μπορεί να είναι το να περάσει από κάτω, από πάνω κτλ. Κάνω λοιπόν διάφορες δοκιμές. Και αυτό γιατί, διότι παρά το ότι θεωρώ πως στο τέλος αυτής της διαδικασίας θα έχω καταλήξει σε έναν αλγόριθμο στιβαρό, σταθερό κτλ, το ανθρώπινο λάθος, ανθρώπινος παράγοντας πάντοτε μπορεί να είναι εκεί. Οι δοκιμές μπορούν να μου δώσουν τη δυνατότητα να εντοπίσω λάθη και να τα διορθώσω. Και βέβαια αναρωτιέμαι για τη λογική της λύσης. Αυτό θυμίζει πάρα πολύ τη διαδικασία στην οποία όλοι μας έχουμε μπει, έχουμε λύσει ασκήσεις ας πούμε με χρόνους και έστω ότι βρίσκω ένα χρόνο που απαιτείται για να υλοποιηθεί αυτή η βολή, 38 χρόνια. Προφανώς έχω κάνει κάποιο μαθηματικό λάθος. Δεν υπάρχει περίπτωση εντός του βαρυτικού πεδίου της γης και υπό τις συνθήκες αυτές να χρειαστούν 38 χρόνια. Σε άλλο πεδίο βαρύτητας, υπό άλλες συνθήκες, ναι. Εκεί έρχεται ο έλεγχος των παραδοχών. Ναι, θα μπορούσε να χρειαστεί κάποιος 38 χρόνια για να διανύσει η μπάλα αυτή την απόσταση. Εκεί και πέρα, όταν λοιπόν έχω τέτοιους χρόνους, καλό είναι να κρίνω, και πολλές φορές το κάνουμε αυτό, δεν είναι ο καταλληλότερος τρόπος, αλλά πολλές φορές το κάνουμε, κρίνουμε στη βάση της δικής μας εμπειρίας. Δηλαδή λέμε ότι ναι, θέλω τόσο χρόνο περίπου για να είναι ύψος τεσσάρων ποδιών, θέλω ένα δέκατο του δευτερολέπτου, άρα είναι λογική η λύση μου. Ένα άλλο θέμα το οποίο δεν είδαμε καθόλου. Ποια είναι η ακρίβεια της λύσης που θέλουμε? Εδώ τώρα το ερώτημα έχει να κάνει με το τι είδους απάντηση θέλουμε να δώσουμε. Στα συμβατικά πλαίσια περιγραφής του παιχνιδιού, ή και απόλαυσης του παιχνιδιού στο επίπεδο του θεατή, το δευτερόλεπτο είναι ο χρόνος που απαιτείται, έτσι. Αν θέλουμε να είμαστε ακριβέστεροι αυτού, άντε να πάμε ένα ή δύο δεκαδικά, όχι πιο πίσω. Από εκεί και πέρα, διότι δεν υπάρχει κάποιος κρίσιμος παράγοντας, δεν πρόκειται για το χρόνο κίνησης βολής ή προσωμίωσης κίνησης ενός διαστημικού οχήματος, το οποίο επιτελεί κάτι σαν βολή για να βγει από την ελεύθερη ατμόσφαιρα που κάθε κλάσμα του δευτερολέπτου παίζει ρόλο. Άρα λοιπόν, δύο δεκαδικά τουλάχιστον εδώ. Τι μας λέει το μαθηματικό σκέλος, το έχουμε εξηγήσει, δεν θέλω να γίνουμε κουραστικός πάνω σε αυτό. Θυμόμαστε πάντοτε τη σημασία των δύο λύσεων. Εκεί και πέρα, προφανώς το κριτήριο που θα χρησιμοποιήσω για να δω εάν η μπάλα φτάνει στο ύψος των δέκα ποδιών είναι τελικά ποιο, δευτεροβάθμι έχουμε, η διακρίνουσα. Αν είναι αρνητική η διακρίνουσα, τότε δεν φτάνει ποτέ. Αυτό λοιπόν το στοιχείο θα χρησιμοποιήσω για να διατυπώσω συνολικά τον αλγόριθμο, να προσδιορίσω τα δεδομένα εισόδου, τα αποτελέσματα και να εργαστώ βήμα προς βήμα. Αμέσως μετά να τρέξω το πρόγραμμά μου, να επιβεβαιώσω τα αποτελέσματα με το χέρι αν αυτό είναι εφικτό, να ελέγξω τα αποτελέσματα και αν το πρόγραμμα χρησιμοποιηθεί σε άλλα γενικά προβλήματα, να ελέγχω στη βάση ενός μεγάλου εύρους δεδομένων. Τι σημαίνει αυτό? Το πρόγραμμα που θα κάνω θα μπορούσε υπό συνθήκες να χρησιμοποιηθεί όχι μόνο για να κρίνω την ακρίβεια βολή στο μπάσκετ, αλλά για να κρίνω και την τελική θέση στο αγόρισμα της σφαίρας ή της σφύρας. Έτσι δεν είναι. Άρα ξαφνικά θα πρέπει να μπορεί να διαχειριστεί αποστάσεις μεγαλύτερες από αυτές της απόστασης μεταξύ βολής, μπάσκετ και στεφάνις. Στη σφαίρα έχουμε αποστάσεις στα 20 μέτρα, στη σφύρα μπορούμε να φτάσουμε τα 60, 70, 80. Καλό είναι λοιπόν, εφόσον θελήσουμε το πρόγραμμά μας να χρησιμοποιηθεί και εκεί, να ελέγξουμε τη συμπεριφορά του και για τέτοιου είδους χρόνους. Αυτή είναι η πραγματικότητα. Για να δούμε λοιπόν τώρα πώς μπορούμε να χειριστούμε αυτή τη διαδικασία στην πράξη. Πρώτα απ' όλα είπαμε ότι θέλουμε να ονοματίσουμε τις παραμέτρους μας, έτσι δεν είναι. Άρα λοιπόν, εδώ προφανώς, και μπορώ να το σημειώσω αριστερά της οθόνης, προφανώς θα χρειαστώ τις σταθερές που θα χρησιμοποιήσω. Θέλω την επιτάχυση της βαθύτητας G. Τι άλλο είναι σταθερό εδώ, σύμφωνα με τα δεδομένα του προβλήματός μου, το αρχικό ύψος βολής, το H0, που είναι ίσο με 6 πόδια, δηλαδή ίσα με 1,83 μέτρα. Τι άλλο είναι σταθερό, οι διαστάσεις και τα λοιπά της μπάλας έχουν ληφθεί υπόψη στην διαδικασία επίλυσης. Άρα αρχικά στοιχεία σταθερά θα είναι αυτά τα δύο. Από εκεί και πέρα, αυτό λοιπόν θα το κάνω στο πρώτο σκέλος του προγραμματός μου. Θα εισαγάγω τις σταθερές που θα χρησιμοποιεί το πρόγραμμά μου. Αμέσως μετά, να θυμίσω τι χρειάστηκε να κάνουμε, να μεταφράσουμε από το μη διεθνές σύστημα σε διεθνές σύστημα, όλες τις μονάδες. Άρα προφανώς, και το γράφω αυτό συμβολικά, θα πρέπει να μπορώ να μεταφράσω την ταχύτητα W0, την οποία θα διαβάζει το πρόγραμμά μου από τον χρήστη, από πόδια ανά δευτερόλεπτο σε μέτρα ανά δευτερόλεπτο. Έτσι δεν είναι. Τι άλλο θυμάμαι ότι υπάρχει στη σχέση και θα το δούμε αργότερα αυτό, υπάρχει μια γωνία θ. Να θυμίσω ότι όπως έχουμε πει και σε προηγούμενο μάθημά μας, οι γωνίες εξωρισμού υπολογίζονται σε ακτίνια. Άρα θέλω μια μετατροπή από μοίρες σε ακτίνια εδώ, έτσι. Rad deg, έτσι, για να μπορέσω να κάνω τον υπολογισμό, διότι όλες οι εγγενείς συναρτήσεις σε MATLAB και όχι μόνο δουλεύουν με τις γωνίες σε ακτίνια, ενώ εγώ θα δίνω γωνία σε μοίρες. Άρα ποιο από τα δύο θέλω να υλοποιείται από μοίρες να πηγαίνω στα ακτίνια. Αυτό θα πρέπει να το κάνω στο δεύτερο σκέλος του προγραμματός μου. Από εκεί και πέρα τώρα, σχεδιάζω δηλαδή όπως βλέπετε, κάνω κάτι το οποίο θα κληθείτε να κάνετε και εσείς όταν θα λύνετε τα προβλήματά σας. Σχεδιάζω τον αργόριθμό μου. Από εκεί και πέρα τι άλλο θα χρειαστεί να κάνω. Στο επόμενο βήμα θα χρειαστεί να διαμορφώσω πλέον το κριτήριο επίλυσης πότε περνάει η μπάλα. Πρέπει δύο πράγματα να συμβούν. Η διακρίνουσα να είναι μεγαλύτερη από το μηδέν. Διαφορετικά συζητούμε για λύση σε αυτό το πρόβλημα. Και όχι μόνο αυτό, εάν και μόνο εάν η διακρίνουσα είναι μηδέν, τότε θα πρέπει και η απόσταση μεταξύ του κέντρου της μπάλας και του κέντρου της τεφάνης να βρίσκεται μεταξύ δύο πολύ συγκεκριμένων ορίων. Τα οποία θα βρω είναι το κάτω όριο και το άνω όριο. Άρα μία απόσταση δε θα πρέπει να είναι μεταξύ δύο. Το γράφω εδώ κάτω και εδώ είναι το άνω όριο της απόστασης. Θα τα προσδιορίσω αυτά. Ήδη όμως έχω μιλήσει για έναν έλεγχο εδώ. Άρα τι θα χρειαστεί να χρησιμοποιήσω μία δομή τίδους ελέγχου. Θα πρέπει να ελέγξω πρώτα εάν η διακρίνουσά μου είναι θετική και στην περίπτωση και μόνο που είναι θετική να προχωρήσω παρακάτω σε έναν δεύτερο έλεγχο, ο οποίος θα κρίνει εάν το κέντρο της μπάλας διέρχεται επαρκώς κοντά από το κέντρο της τεφάνης ώστε να θεωρηθεί το σούκ πετυχημένο. Δύο ελέγχους λοιπόν. Από εκεί και πέρα θα πρέπει να υπολογίσω τα υπόλοιπα στοιχεία που είναι ποιο είναι το ζητούμενο, είναι πετυχημένο το σούτ ή όχι, τι είδους μεταβλητή μοιάζει να είναι αυτή, κάτι που συμβαίνει ή όχι. Είναι μια λογική μεταβλητή. Άρα λοιπόν στο τέλος αυτής της διαδικασίας καλό είναι να υπολογίσω εγώ την τιμή μιας λογικής μεταβλητής η οποία θα είναι true εφόσον το σούτ είναι πετυχημένο και false εφόσον δεν είναι. Είναι υποχρεωτικό να το κάνω έτσι ή όχι. Θα μπορούσα πολύ απλά να το χειριστώ με όποιον άλλο τρόπο θέλω. Αυτό όμως βολεύει γιατί συνάδει με την ανθρώπινη λογική. Και αυτό που θέλουμε πάντοτε είναι να διαμορφώνουμε αλγορύθμους οι οποίοι ειδικά κατά την υλοποίησή τους να είναι όσο εγκύτερα δύνανται στην ανθρώπινη λογική διότι αυτό ξυπηρετεί και στη χρήση αυτών των αλγορίθμων και στο να τους κρίνουμε ως προς το αν είναι λογική ή όχι. Συνοψίζω λοιπόν το τι είδαμε σε αυτή την πρώτη ώρα. Ξεκινώντας από ένα απρό πρόβλημα. Το πρόβλημα του να δούμε εάν ένα σούτ στο μπάσκετ είναι πετυχημένο ή όχι. Αναφερθήκαμε στη γεωμετρία και στη μοντελοποίηση της κινηματικής. Αναφερθήκαμε στο πολύ σημαντικό, στο κέριο εζήτημα του πότε το σούτ θεωρείται πετυχημένο και πώς αυτό το κριτήριο δύναται να μεταφραστεί σε κάτι κατανοητό από μια τυφλή διαδικασία επίλυσης από τον αλγόριθμο, άρα από τη μηχανή. Αμέσως μετά κάναμε τις απαραίτητες παραδοχές. Συζητήσαμε τις παραμέτρους που πρέπει να λάβουμε υπόψη μας. Συζητήσαμε το πρόβλημα της μετατροπής μονάδων, το οποίο επίτηδες παρίσφρυσε εδώ για να μπορέσουμε να σχολιάσουμε όλα τα θέματα στα οποία αναφερθήκαμε πιο πριν. Και τον τρόπο με τον οποίο θα χειριστούμε κάτι που ήδη έχουμε δει, τις δομές, για να μπορέσουμε να υλοποιήσουμε τον αλγόριθμο. Μπορούμε να υλοποιήσουμε αυτό τον αλγόριθμο χωρίς την χρήση δομών επιλογής. Το ερώτημα μεταφράζεται στο θα μπορούσα να βρω οποιονδήποτε άλλον τρόπο να κρίνω. Αν το σούτ έχει πιθανότητες επιτυχίας χωρίς να ελέγξω το πρόσημο της διακρίνουσας, οι απάντες είναι προφανώς όχι. Άρα είναι μονόδρομος η χρήση των δομών. Και εφόσον αυτή λοιπόν είναι η ικανή συνθήκη, πρώτος έλαφος, ή η αναγκαία. Η αναγκαία είναι βρε εσείς. Αναγκαία σημαίνει ότι είναι ανάγκη να συμβεί αυτό, αλλά από μόνο του δεν είναι ικανό να επιφέρει επιτυχία. Άρα αυτή είναι η αναγκαία συνθήκη. Αναγκαία και ικανή καθίστεται η συνθήκη του διπλού ελέγχου. Και η διακρίνουσα να είναι θετική και η απόσταση να είναι μικρότερη. Γιατί, διότι αν η διακρίνουσα δεν είναι θετική αλλά είναι μηδενική και το σούτ έχει αυτή την τύχη, τότε το δεύτερο κριτήριο πληρούνται. Όχι το πρώτο. Εδώ η απόσταση μεταξύ κέντρου μάζας μπάλας και κέντρου στεφάνης είναι μικρότερη. Εφαπτομενικά, περνά. Θα μου πείτε, η γεωμετρία δεν το επιτρέπει. Εμείς, ο άνθρωπος, γνωρίζουμε ότι η μπάλα έχει διαστάσεις. Έτσι δεν είναι. Δεν υπάρχει περίπτωση η μπάλα να περάσει τόσο κοντά από τη στεφάνη ώστε το κέντρο της να περάσει χαπτομενικά. Έχουμε εισαγάγει αυτό το κριτήριο οπουδήποτε στον αλγόριθμό μας. Όχι. Άρα το κριτήριο αυτό αυτονόητο για εμάς είναι γνωστό στον αλγόριθμο επίλυσης. Όχι. Άρα μπορεί όντως να θεωρήσει μια τέτοια βολή πετυχημένη. Γι' αυτό λοιπόν θέλουμε και τους δύο ελέγχους. Για να δούμε πώς μπορούμε να προχωρήσουμε στο βήμα ή μάλλον στα βήματα της υλοποίησης. Αυτό που είδαμε μέχρι τώρα είναι το πώς πηγαίνουμε από το πρόβλημα στον αλγόριθμο και από τον αλγόριθμο στην υλοποίηση. Μόνο που το δεύτερο σκέλος δεν το έχουμε προχωρήσει επαρκώς και βέβαια δεν έχουμε πρόγραμμα στα χέρια μας για να μπορέσουμε να το τρέξουμε και να πειραματιστούμε γι' αυτό. Για να προσπαθήσουμε λοιπόν να προχωρήσουμε στην κατεύθυνση του να υλοποιήσουμε το πρόγραμμά μας. Θα θυμάστε ότι ακριβώς πριν το διάλειμμα τόνισα τα στοιχεία που πρέπει να περιλαμβάνονται στην διαδικασία επίλυσης των αλγόριθμών μας. Πρώτα απ' όλα πρέπει να λάβουμε υπόψη μας τις σταθερές. Πλέον γραμμένες σε μορφή Matlab Octave. Έχω την επιτάχνηση της βαρύτητας και το αρχικό ύψος από το οποίο λαμβάνει χώρα η βολή. Αμέσως μετά τι είπαμε ότι χρειαζόμαστε. Χρειαζόμαστε την είσοδο από τον χρήστη. Ο χρήστης θα πρέπει να δώσει δύο πράγματα. Την αρχική ταχύτητα και την γωνία της βολής. Ο τρόπος με τον οποίο μπορούμε να επιδράσουμε με τον χρήστη όταν γράφουμε ένα κώδικα σε Matlab ένας μάλλον από τους τρόπους είναι η χρήση της input. Η input λοιπόν είναι μια εντολή που δίνει τη δυνατότητα στο χρήστη να εισάγει τιμές οι οποίες ανατίθενται στις μεταβλητές που καλούν χρησιμοποιούν την input. Εδώ λοιπόν έχουμε το γεγονός πως ονοματίζουμε μια V0 θα είναι η μεταβλητή που θα λάβει ως είσοδο την ταχύτητα που επιθυμεί ο χρήστης η οποία όμως μεταβλητή V0 δεν έχει τιμή, δεν έχει περιεχόμενο θα αποκτήσει το περιεχόμενο στη βάση του input. Η εντολή input λοιπόν ουσιαστικά λέει στον υπολογιστή ότι η τιμή που θα πληκτρολογηθεί από τον χρήστη θα ανατεθεί ως περιεχόμενο στην V0. Από εκεί και πέρα input δύναται να συνταχθεί με ορίσματα όπως λέμε δηλαδή μέσα σε παρένθεση και σε εισαγωγικά να γράψουμε μια φράση που θέλουμε να εμφανίζεται στην οθόνη όταν εκτελείται το πρόγραμμα με στόχο να ενημερώνουμε το χρήστη για το στοιχείο που θέλουμε να εισαχθεί. Εδώ λοιπόν θέλουμε να εισαγάγουμε την αρχική ταχύτητα και γι' αυτό στα αγγλικά έχουμε γράψει το Please enter initial velocity in feet per second. Αυτό το παράξενο σύμβολο στο τέλος, ανάποδη διαίρεση ν, ουσιαστικά είναι ένα σύμβολο κυνικής χρήσης, θα το συναντήσουμε πολλές φορές και σε επίπεδο MATLAB σημαίνει άλλαξε γραμμή, πολύ απλά, new line. Άρα λοιπόν, όταν θα τρέξουμε το πρόγραμμά μας θα πρέπει, εφόσον λειτουργήσει σωστά και θα δείτε ότι έτσι είναι, ο κέρσορας να μεταβεί κάτω από το μήνυμα που θα εμφανιστεί στον χρήστη και θα περιμένει είσοδο από εμάς. Το ίδιο θα συμβεί και με την αγγλ σε τι, σε μοίρες. Για αυτό το λόγο και σημείωσα εκεί, λίγο πριν το διάλειμμα, ότι θα πρέπει να φροντίσουμε, να προνοήσουμε αμέσως μετά και την μετάτροπή αυτών των δύο, από πόδια ανά δευτερόλεπτο σε μέτρα, ανά δευτερόλεπτο έως προς την αρχική ταχύτητα και από μοίρες σε ακτίνια ως προς τη γωνία, διότι όλες οι εγγενείς συναρτήσεις, οι τριγωνομετρικές, δουλεύουν με ακτίνια. Αυτή λοιπόν η μετατροπή λαμβάνει χώρα εδώ. Μετατρέπω το ύψος και την ταχύτητα αντιστοίχως και βέβαια μετατρέπω τη γωνία σε ακτίνια, πολλαπλασιάζοντας την επίπι και διαιρώντας την με το 180. Ερώτημα. Το σύμβολο του ποσοστού είναι ακριβώς, και ευχαριστώ για το ερώτημα, για σχολιασμό. Άρα, οτιδήποτε υπάρχει μετά από το σύμβολο επί της 100, βρείτε σε MATLAB σχόλιο και δεν λαμβάνετε υπόψη. Και έτσι λοιπόν, εκεί, θυμάστε ότι το είχαμε δει αυτό, ήδη στην αρχή λίγο, τώρα φαίνεται ακόμη περισσότερο και θα το δούμε και στο υπόλοιπο αυτής της ώρας και στην τρίτη ώρα ακόμη περισσότερο, μπορούμε να εντάξουμε σημειώσεις για εμάς, για τον χρήστη του προγράμματος, το help σε μια συνάρτηση ή οτιδήποτε άλλο. Άλλο ερώτημα. Η εντολή input λοιπόν, αναθέτει το περιεχόμενο που ο χρήστης θα πληκτρολογήσει στην μεταβλητή που την χρησιμοποιεί. Άρα, εδώ η μεταβλητή που χρησιμοποιεί την input είναι η V0 και η angle, οπότε λοιπόν, όταν θα τρέξει αυτό και θα πρέπει να το δούμε, να πειραματιστούμε με αυτό για να αντιληφθούμε εδώ πώς θα λειτουργήσει, θα περιμένει μια είσοδο από το χρήστη για τη V0 και μια δεύτερη είσοδο για την γωνία. Αυτά τα στοιχεία θα ληφθούν υπόψη για τη μετατροπή από πόδια σε μέτρα και από μοίρες σε ακτίνια, αντίστοιχα. Τώρα, να θυμίσω λίγο πώς είναι, ποια μορφή μάλλον έχει, η δευτεροβάθμια εξίσωση που θα πρέπει να επιλύσουμε ως προς την κατακόρυφη μετακίνηση. Εάν την γράψω, λοιπόν, σε μορφή δευτεροβάθμια, σε εκείνη την εξίσωση που εμπλέκει τα ύψη, τότε παίρνει αυτή την μορφή, μίον 1 δεύτερο g τετράγωνο συν V0 ζ του θ, επί χρόνο, συν αρχικό ύψος μίον 3,05, το ύψος της Στεφάνης σε μέτρα, μίσο με το 0. Υπό αυτήν την έννοια, λοιπόν, έχω αμέσως εντοπίσει, σε αυτή τη δευτεροβάθμιά μου, τους όρους A, B και C, ώστε να μπορώ να τους υπολογίσω αμέσως μετά. Γιατί τα θέλω αυτά, διότι έπετε τι, θυμόμαστε, υπολογισμός της διακρίνουσας, βάσει του οποίου υπολογισμού θα δούμε εάν θα πάμε παρακάτω ή όχι. Η διακρίνουσα, λοιπόν, η οποία προφανώς υπολογίζεται με τη γνωστή σχέση β τε τράγωνο μίον α επί γ, είναι το πρώτο βασικό κριτήριο, και εδώ θυμίζω τον τρόπο με τον οποίο λειτουργούμε στις εντολές ελέγχου. Είναι το πρώτο κριτήριο που θα χρησιμοποιήσουμε για να δούμε εάν υπάρχει λύση στο πρόβλημά μας. Εφόσον η διακρίνουσα είναι μεγαλύτερη από το μηδέν, τότε λέμε ότι ναι, μπορεί να υπάρξει λύση στο πρόβλημά μας. Άρα, πρώτος έλεγχος. Εάν η διακρίνουσα είναι μικρότερη ήση του μηδενός, την υπολόγησα εδώ. Διακρίνουσα ίσον β στο τε τράγωνο μίον 4αυ. Εάν τώρα αυτό που υπολόγησα, η μεταβλητή που υπολόγησα, είναι η διακρίνουσα, έχει τιμή μικρότερη ήση από το μηδέν, αυτός ο έλεγχος είναι ένας λογικός έλεγχος και το αποτέλεσμα μπορεί να είναι true ή false. Εάν λοιπόν η διακρίνουσα έχει τιμή μικρότερη ήση από το μηδέν, τότε ο έλεγχος είναι true. Και εφόσον ο έλεγχος είναι true, είναι αστοχιβολή σίγουρα. Δεν υπάρχει περίπτωση να έχω αστοχιβολή. Λόγο, εμπλουτίζω το πρόγραμμά μου με ένα μήνυμα. Το μήνυμα θα εμφανιστεί με τη βοήθεια της εντολής display, εμφάνισε. Και η σύνταξη της display είναι display παρένθεση και μέσα σε εισαγωγικά το μήνυμα που θέλω να εμφανιστεί πίσω της οθόνης. Άρα, χαμηλή τροχιά, μη πετυχημένη βολή. Αυτό είναι το μήνυμα εδώ. Διαφορετικά, στο σχόλιο εδώ γράφω ενδεχομένως αστοχιβολή, needs more checking. Πρέπει να ελέγξω περισσότερο τα πράγματα. Εάν λοιπόν ισχύει η πρώτη συνθήκη, είναι true, είναι αληθής η πρώτη συνθήκη, πότε θα είναι αληθής η πρώτη συνθήκη εάν η διακρίνουσα είναι όντως μικρότερη του μηδενός. Πότε θα εκτελεστεί η πρώτη ομάδα εντολών. Αυτό δεν είχαμε πει και το ξαναλέμε και σήμερα. Ναι, η πρώτη ομάδα εντολών είναι αυτή. Δεν είναι αληθής η πρώτη συνθήκη. Τότε θα παρακάμψω όλη την πρώτη ομάδα εντολών και θα μεταβώ στον δεύτερο έλεγχο. Ο δεύτερος έλεγχος εδώ θα γίνει στη βάση των χρόνων υπολογισμού. Υπολογίζω λοιπόν τον χρόνο τροχιάς, άρα τον χρόνο που χρειάστηκε η μπάλα για να φτάσει στο ύψος της θεφάνης και υπολογίζω και την αντίστοιχη οριζόντια μετατόπιση της μπάλας. Γιατί το κάνω αυτό, διότι η διακρίνουσα είναι μεγαλύτερη από το μηδέν. Και πώς το ξέρω αυτό, διότι αυτός ο έλεγχος δεν έτρεξε ως ορθός, έρθεξε ως λαθασμένος. Άρα μετέβει εδώ. Αυτά λοιπόν είναι βήματα ελέγχου που υλοποιεί το πρόγραμμά μου δηματικά. Προφανώς όπου είναι βήματα ελέγχου, δηματικά. Πρώτος έλεγχος είναι η διακρίνουσα μου μικρότερη από το μηδέν. Εμφανίζω κάποια μηνύματα, τελειώνει το πρόγραμμά μου. Εάν δεν είναι μικρότερη από το μηδέν, τότε προφανώς είναι μεγαλύτερη από το μηδέν, άρα μπορώ να υπολογίσω χρόνο που χρειάστηκε η μπάλα και οριζόντια μετατόπιση της. Είναι όμως πετυχημένη. Για να το ελέγξω αυτό, θυμίζω ότι θα πρέπει η οριζόντια απόσταση της μπάλας, η απόσταση που διένισε η μπάλα από το σημείο της βολής, να είναι μεταξύ 4,08 και 4,30 μέτρων. Θυμάστε έτσι τα δύο άκρα σε σχέση με τη γεωμετρία της Στεφάνης. Άρα θα πρέπει να κάνω αυτόν τον έλεγχο. Εδώ θέλω λίγο την προσοχή σας, ως προς τη σύνταξη. Αυτό το X underscore TAF2, το γράφω εδώ, είναι το όνομα που έδωσα σε ποια μεταβλητή? Στη μεταβλητή της οριζόντιας μετατόπισης της μπάλας. Αυτό λοιπόν ελέγχω εάν είναι μεγαλύτερο από το 4,08 και το σύμβολο είναι αυτό εδώ, εάν είναι μικρότερο από 4,3. Εφόσον λοιπόν αυτά τα δύο στοιχεία ισχύουν, αν είναι true και αυτό και αυτό, τότε όλο είναι true, σωστά. Οπότε προφανώς τότε και μόνο τότε η εντολή μου πηγαίνει παρακάτω διότι η βολή μου είναι πετυχημένη. Και έτσι γνωρίζω μεταβεβαιότητος ότι το κριτήριο που έχω χρησιμοποιήσει για να χαρακτηρίσω πετυχημένη ή όχι μια βολή, πληρείται. Διαφορετικά είμαι σίγουρος ότι η βολή δεν είναι πετυχημένη. Να το δούμε λοιπόν συνολικά και να δούμε πώς θα τρέξει αυτό. Ξεκινώ μια διαδικασία ελέγχου. Πρώτον, εάν η διακρίνουσα είναι μικρότερη ίση από το 0, τότε σίγουρα δεν έχω πετυχημένη βολή. Σε αυτή την περίπτωση θα εκτελεστεί η πρώτη ομάδα εντελών και μετά ο έλεγχος του προγράμματος θα πάει στο πέρας της δομής ελέγχου. Εάν όμως η διακρίνουσα είναι μεγαλύτερη από το 0, τότε δεν ισχύει αυτή η συνθήκη, δεν είναι true. Και έτσι θα μεταβώ στον δεύτερο έλεγχο, εδώ. Και εφόσον και αυτός είναι πετυχημένος, τότε η βολή μου είναι πετυχημένη, διαφορετικά γνωρίζω ότι είναι αποτυχημένη. Και έτσι μπορώ να εκτελέσω και τους δύο ελέγχους, τον έναν μετά τον άλλον βηματικά. Είναι η διακρίνουσα μικρότερη σε το 0, αποκλείται να έχω πετυχημένη βολή. Είναι μεγαλύτερη από το 0, τότε να ελέγξω. Να υπολογίσω πρώτα την οριζόντια απόσταση και μετά να ελέγξω. Είναι αυτή η οριζόντια απόσταση μεταξύ 4,08 και 4,3 μέτρων. Ναι, πετυχημένη βολή. Δεν είναι αποτυχημένη βολή. Ερωτήματα. Μήπως θέλουμε να έχουμε ακόμα μια συνθήκη για να διαβεβαιώνουμε ότι περνάει η δεύτερη βολή από την οριζόντια. Και δεν μπορεί να περνάει η πρώτη βολή από την οριζόντια. Βεβαίως, διότι το έχουμε πει. Εδώ λοιπόν ο συνάδελφός σας ρωτά και τι γίνεται με τον χρόνο. Είμαστε σίγουροι ότι είναι ο χρόνος αυτός που θέλουμε. Ναι, διότι αυτό που δεν σας έχω πει και ευχαριστώ για το ερώτημα, είναι ότι έχω επιλέξει εδώ τον μικρό χρόνο. Έτσι δεν είναι. Άρα λοιπόν, τι θα έπρεπε να συμβεί εδώ. Ένα μειον στη ρίζα που έφτασε. Ακριβώς. Οπότε λοιπόν, πρακτικά, εδώ πρέπει να επιλέξουμε τον μεγάλο χρόνο. Υπολογίζουμε δύο χρόνους, θα έχει δύο λύσεις η δευτεροβάθμια εξίσωσή μας. Και εμείς θέλουμε να πάρουμε και πρέπει να πάρουμε τον δεύτερο, τον μεγαλύτερο χρόνο. Αυτό λοιπόν πρέπει να γίνει εδώ πέρα. Και με αυτόν τον τρόπο ολοκληρώνουμε την λύση σωστά. Ξαναλέω γιατί είναι σημαντικό να έχουμε μια καλή εποπτεία. Έχουμε έναν διπλοέλεγχο. Γνωρίζουμε ότι πρώτα απ' όλα πρέπει η διακρίνουσά μας να είναι μεγαλύτερη από το μηδέν για να έχω πιθανότητα πετυχημένης βολής. Γνωρίζω ότι εάν είναι η διακρίνουσά μου μεγαλύτερη από το μηδέν τότε θα πρέπει να πάρω τον μεγαλύτερο από τους δύο χρόνους, διότι προκύπτουν δύο πραγματικές λύσεις. Θα πρέπει να πάρω τον μεγαλύτερο από τους δύο χρόνους και για αυτόν τον μεγαλύτερο χρόνο να υπολογίσω το οριζόντιο διάστημα που έχει διανύσει η μπάλα ώστε μετά να ελέγξω εάν το κέντρο της μπάλας βρέθηκε μεταξύ των αποστάσεων που θεωρώ ότι πρέπει να βρεθεί για να είναι πετυχημένο το σούτ. Αυτός είναι ο δεύτερος έλεγχος εδώ. Εφόσον λοιπόν αυτός ο έλεγχος είναι αληθής τότε και μόνο τότε το σούτ είναι πετυχημένο. Και μπορώ βέβαια μετά να εμφανίσω και επί της οθόνης το αποτέλεσμα, πώς μπορώ να το κάνω χρησιμοποιώντας πάλι την display και προφανώς πρέπει να το δούμε πειραματιζόμενοι, πειραματιζόμενες στο εργαστήριο. Άρα λοιπόν πάλι ανάμεσα σε παρενθέσεις βάζω ότι θέλω να εμφανιστεί. Εδώ αυτό που εισαγάγω ως καινούργιο στοιχείο είναι μια εντολή, η numToString. Τι κάνει αυτή? numToString. Είναι τεχνικό στοιχείο αυτό και μόνο, αλλά το σχολιάζω γιατί προφανώς δεν το έχουμε ξαναδει. Μεταφράζει τον αριθμό σε ισοδύναμη λέξη. Άρα όταν έχω έναν αριθμό, εδώ, θέλω εγώ να δείξω την απόσταση που διένισε η μπάλα μου και δεν θέλω να κολλήσεις οτιδήποτε άλλο, τότε χρησιμοποιώ την numToString και μεταφράσω τον ίδιο τον αριθμό σε λέξη. Είναι πάλι το 2 αλλά πλέον είναι χαρακτήρας το 2, δεν έχει αριθμητικό περιεχόν. Είναι μια λεπτομέρεια, αυτή σημαντική. Τώρα, εντάξει η λύση, ερώτημα. Μπορούμε. Ο συνάδελφός σας ρώτησε, όταν κάναμε μετατροπές μονάδων μπορούμε να χρησιμοποιήσουμε το ίδιο όνομα μεταβλητής για να αναθέσουμε πλέον στη μεταβλητή τη νέα της τιμή. Προφανώς, διότι μπορεί να πούμε ότι η παλιά τιμή επικάτη είναι ίσως με την καινούργια τιμή. Αυτές οι λογικές ανάθεσεις τιμών προφανώς και ισχύουν. Εγώ το έκανα διαφορετικά για να είναι πιο διακριτή η πράξη. Διότι αυτή είναι η δομή όταν θέλουμε να συνδυάσουμε πολλά στοιχεία μέσα στην DSP. Βάζουμε λοιπόν τις θετραγωνικές εγγύλες και μέσα βάζουμε σε εισαγωγικά τα στοιχεία που θέλουμε να συνδυαστούν. Δεν σκεφτήκαμε τη συνδεύτηση. Κάθε αλλαγή τραμείς που έχει θα γίνει και ένα enter σε μας. Βεβαίως. Άρα λοιπόν εδώ βλέπετε ότι έχω το πρώτο ίφ. Συνθήκη. Το σχόλιο το βάζω για δική μου διευκόληση. Enter από κάτω. Επόμενη γραμμή εντολής. Ουσιαστικά θα πρέπει να μεταβώ στην επόμενη γραμμή εντολής. Όποια και είναι αυτή η επόμενη γραμμή εντολής. Συνεχίζω. Δεύτερο ίφ. Τελειώνει η συνθήκη. Επόμενη γραμμή εντολής που οδηγεί στη δεύτερη ομάδα στο δεύτερο μπλοκ εντολών. Με αυτό τον τρόπο λοιπόν μεταβαίνουμε από το πρώτο μπλοκ από την πρώτη ομάδα εντολών στο δεύτερο μπλοκ στη δεύτερη ομάδα εντολών και ούτω καθεξής έτσι ώστε να σαρώσουμε αν θέλετε όλες τις εναλλακτικές που θέλουμε να ελέγξουμε μέσα στην δομή ελέγχου. Εφόσον κάνουμε τον υπολογισμό καλό είναι να εμφανίσουμε και ένα αποτέλεσμα μια γραφική παράσταση. Πώς λοιπόν μπορώ να το πλωτάρω και τώρα αρχίζουν έτσι τα κινέζικα γιατί είναι και ξέρω και η απόσταση μεγάλη και πολλοί συνδυασμοί. Θα εξηγήσω τι συνέβη έτσι διότι τα πράγματα είναι λίγο παράξενα. Προσέξτε τι θέλω εγώ να σχεδιάσω σε ένα γράφημα την τροχιά της μπάλας έτσι δεν είναι ή δυνατόν το αρχικό σημείο της βολής ή δυνατόν έναν κύκλο διαστάσεων μπάλας και τη στεφάνη. Όπως είχα αναφέρει και την προηγούμενη φορά το κάνω τώρα λίγο πιο αναλυτικά. Εάν θέλω να σχεδιάσω διαδοχικές θέσεις τότε πρέπει να δημιουργήσω διαδοχικά ζεύγια ρυθμών. Διότι εγώ τι θέλω να σχεδιάσω διαδοχικές θέσεις και να τις ενώσω με μια γραμμή έτσι δεν είναι ταχύψη της μπάλας. Άρα λοιπόν επειδή ξέρω ότι ο χρόνος που χρειάστηκε είναι ο τάφ 2 δημιουργώ ένα διάνισμα τιμών που θα είναι το διάνισμα τιμών του χρόνου με αρχική τιμή 0, βήμα 0,1 και τελική τιμή τάφ 2, έστω ότι είναι 10 δευτερόλεπτα. Με αυτόν τον τρόπο δημιουργώ μια αλληλουχία από τιμές τάφ χρόνου, τις οποίες τιμές χρόνου θα χρησιμοποιήσω μετά για να υπολογίσω τι χ, τις θέσεις χ και τις θέσεις ψ, διότι αυτά τα δύο δεν θέλω, τις ενδεχμένες χ και ψ. Αυτές οι θέσεις για κάθε χρονικό βήμα είναι αυτές που με ενδιαφέρουν να εντοπίσω ώστε να τις ενώσω με μια γραμμή. Δημιουργώ λοιπόν αρχικά τα χρονικά μου βήματα. Πώς? Γνωρίζω το συνολικό χρόνο που χρειάστηκε να διανύσει η μπάλα, είναι ο τάφ 2, δημιουργώ ένα διάνισμα στη λογική του αρχική τιμή, άνω κάτω τελεία βήμα, άνω κάτω τελεία τελική τιμή. Άρα κόβω, τμώ, διαχωρίζω το συνολικό χρόνο τάφ 2, τα 10 δευτερόλεπτα, σε διαστήματα ανα 0,1 εδώ. Θα μου πείτε γιατί 0,1. Δική μου επιλογή. Θα μπορούσε να είναι 0,05, 0,2, 0, οτιδήποτε. 0,1, ένα δέκατο του δευτερολέπτου επέλεξα εγώ. Χρησιμοποιώ τώρα αυτό τον χρόνο για να υπολογίσω χ και ψ. Αυτά τα δύο θα θέλω να υπολογίσω. Ζεύγει τιμών. Το χ θα δοθεί από τη σχέση υπολογισμού της οριζόντιας μετατόπισης, είναι το β0 επί... Προσέξτε, πολλαπλασιάζομαι όλο το διάνισμα. Τι θα προκύψει ως χ? Θα προκύψει ένα διάνισμα τιμών με τόσες τιμές, όσες και το διάνισμα, όσες τιμές υπάρχουν και στο διάνισμα του χρόνου, αλλά αυτές οι τιμές πλέον δεν θα είναι χρόνος, τι θα είναι η οριζόντια μετατόπιση. Ξανά, έχω ένα διάνισμα τιμών χρόνου. Από 0 έως 10, έστω, το έχω χωρίσει σε τμήματα, βήματα του 0,1. Άρα, συνολικά, έχω 100 βήματα. Παίρνω αυτό το διάνισμα. Το πολλαπλασιάζω όπως είναι με το β0 και με το κόζινος της γωνίας. Πόσες τιμές είχα, 100 διάνισμα χρόνου. Πόσες τιμές χ δημιουργώ, 100. Το ίδιο κάνω και με το ψ, μόνο που εδώ έχω ένα πρόβλημα, το οποίο δεν μπορείτε να εντοπίσετε, όχι επειδή δεν έχετε την ικανότητα, επειδή έχετε την απόσταση. Και δεν βλέπετε ίσως τόσο καλά το εξής στοιχείο. Να θυμίσω ότι ο χρόνος εδώ είναι στο τετράγωνο. Άρα θα πρέπει κάθε στοιχείο του διανύσματος χρόνου να το υψώσω στο τετράγωνο, έτσι. Θυμάστε το ψ είναι, υπάρχει στο ψ, ο όρος ένα δεύτερο γαμματάχ τετράγωνο, τζι τάφ τετράγωνο. Πρέπει λοιπόν κάθε στοιχείο του διανύσματος του χρόνου να το υψώσω στο τετράγωνο. Πώς κάνουμε ύψωση κάθε στοιχείου ενός διανύσματος ή πίνακα στο τετράγωνο και γενικά, ευρύτερα, πώς επιτελούμε μία πράξη όπως λέμε στοιχείο προς στοιχείο, να θυμίσω, χρησιμοποιώντας μία τελεία στο τέλος του ονόματος του πίνακα. Νάτη, αυτή που δεν βλέπετε. Εγώ στη θέση σας με τίποτα, έτσι. Άρα λοιπόν κάνω την ίδια πράξη, δημιουργώ ένα διάνυσμα επίσης με εκατότιμες. Τι είναι αυτά τα εκατό, είναι οι θέσεις στην κατακόρυφο. Οι τεταγμένες, οι εκατότεταγμένες. Οπότε με αυτό τον τρόπο έχω ένα αρχικό διάνυσμα χρόνου με τις έστω εκατότιμες, είπαμε από 0 έως 10 με φέτες του 0,1, που το χρησιμοποιεί σαν να δημιουργήσω εκατότεταγμένες θέσεις Χ και εκατότεταγμένες θέσεις Ψ. Άρα έχω τα ζεύγια τιμών ΧΨ. Και μετά χρησιμοποιώ την εντολή plot, εξαιρετική, απλή, η οποία μέσα σε παρένθεση θέλει μόνο τα Χ και Ψ, τα ζεύγια που θέλουμε να πλωτάρουμε. Χ και Ψ. Από εκεί και πέρα ό,τι βλέπετε αφορά την διαδικασία ενπλουτισμού του γραφήματος με στοιχεία όπως τίτλος. Θέλω να βάλω τίτλος στο γράφημά μου. Υπάρχει εντολή title η οποία δέχεται ως όρισμα μέσα σε παρένθεση. Ό,τι βάλουμε σε εισαγωγικά. Θέλω ένα τίτλο που να γράφει basketball trajectory. Θέλω ο άξιωνας των Χ να έχει δική του ονομασία που ονομάζεται distance παρένθεση μέτρα. Βλέπετε ότι ό,τι θέλω να εμφανιστεί το τοποθετώ μέσα στην παρένθεση εντός απλών εισαγωγικών. Το ίδιο κάνω και με τον άξιωνα των Ψ. Οπότε τι πετυχαίνω έτσι να δημιουργήσω ένα γράφημα και θα το δούμε παρακάτω με τις θέσεις αφού έχω βρει τα σημεία, τα έχω ενώσει χωρίς βέβαια να με ρωτήσει κανένας καμιά και πως τα ενώνω. Δηλαδή πως γνωρίζει ο υπολογιστής μου τι σύμβολο θα χρησιμοποιήσει. Η απάντηση εδώ είναι ότι αν δεν του πω οτιδήποτε άλλο θα χρησιμοποιήσει απλές γραμμές για να ενώσει τις θέσεις. Οπότε επειδή έχω αρκετές θέσεις θα φανεί σαν μια συνεχής γραμμή. Έχω άλλες δυνατότητες οπτικοποίησης. Προφανώς μπορώ να χρησιμοποιήσω κάθε είδους γραμμή. Συνεχή, διακεκομένη, αξονική, διπλή κτλ. Μπορώ να χρησιμοποιήσω οποιαδήποτε χρωματική παραλλαγή, όχι μόνο μαύρο κτλ. Μπορώ να χρησιμοποιήσω σύμβολα, αστεράκια, κύκλους κτλ. Όλα αυτά θα τα δείτε πειραματιζόμενης, πειραματιζόμενη διότι, ήδη στο πρώτο θέμα που έχει αναρτηθεί, μια από τις επτά ασκήσεις όπου ζητείτε να φτιάξετε ένα γράφημα. Και όλα αυτά θα τα μάθουμε μέχρις ότου παραδώσετε το θέμα σας. Να λοιπόν, οι πίνακες και η γραφική παράσταση. Τώρα, αυτό το πρόγραμμα το έβαλα εδώ για δική μου διευκόλυνση, εφόσον χρειαστεί να το χρησιμοποιήσω. Σας βάζω και το γράφημα. Αυτό που παράγεται είναι, προσέξτε, δεν είπαμε ότι θέλω να γράφει επάνω basketball trajectory. Ορίστε. Το όνομα που θέλω να εμφανίζεται, ο τίτλος που θέλω να εμφανίζεται στον άξονα τον χ, και ο αντίστοιχος τίτλος στον άξονα τον ψ. Εμφανίζεται μια γραμμή, αλλά και δύο πράγματα τα οποία δεν σας έχω δείξει πώς κατασκευάζονται. Εμφανίζεται μια μπάλα, εμφανίζεται και μια στεφάνη. Αυτό το γράφημα που βλέπετε αφορά συγκεκριμένο σουτ με ταχύτητα 30 πόδια το δευτερόλεπτο και γωνία 59 μοιρών. Έτσι, ομολογώ ότι ήταν τυχαίο αυτό. Τώρα, τι νέο προέκυψε. Προέκυψε το πρόγραμμά μας, αλλά εδώ τώρα σας έχω φορτώσει και με κάτι επιπρόσθετο. Με μια γραφική παράσταση. Μάλλον με ένα πρόγραμμα που κάνει γραφική παράσταση, έτσι δεν είναι. Προφανώς γραφικές παραστάσεις αυτού του είδους. Σε αυτό το πρόβλημα και όχι μόνο θα χρειαστούμε πολλές. Άρα, λοιπόν, μπορώ να πειραματιστώ με το πρόγραμμα που δημιουργώ για την επίλυση και την γραφική παράσταση, αλλά το ερώτημα που θέλω να θέσω γιατί σήμερα θέλω να μιλήσουμε στο υπόλοιπο της ημέρας για συναρτήσεις είναι «Μπορώ να αυτονομίσω το γράφημα». Τι σημαίνει αυτό? Μπορώ να αναθέσω το γράφημα σε ένα πρόγραμμα το οποίο να κάνει μόνο αυτή τη δουλειά. Όλο αυτό το γράφημα για τη συγκεκτημένη εφερμογή να το κατασκευάζει ένα προγραμματάκι ώστε κάθε φορά που θα χρειαστώ γράφημα απλά να του λέω «έλα εσύ εδώ, πάρε αυτά τα στοιχεία εισόδου, φτιάξε μου το γράφημα να το λαμβάνω και να μην χρειάζεται να επαναλαμβάνω όλες αυτές τις γραμμές κώδικα». Να το αναλάβει λοιπόν, και εδώ το πηγαίνω, μια συναρτήση. Γιατί συναρτήση? Διότι δεν μοιάζει αυτή η διαδικασία με όλες τις υπόλοιπες διαδικασίες βάσει των οποίων χρησιμοποιώ εγγενείς συναρτήσεις. Όταν θέλω να υπολογίσω έναν τριγωνομετρικό αριθμό χρησιμοποιώ τριγωνομετρικές συναρτήσεις. Όταν θέλω να χρησιμοποιήσω, όταν θέλω να υπολογίσω εσωτερικό γινόμενο πινάκο χρησιμοποιώ σχετική εγγενείς συναρτήση. Έτσι λοιπόν μπορώ να χρησιμοποιήσω και εδώ μία συναρτήση μόνο που, προσοχή, μόνο που δεν την έχω αυτή τη συναρτήση. Πρέπει να την κατασκευάσω. Η συναρτήση λοιπόν είναι ένα τμήμα κώδικα που χρησιμοποιώ πολλές φορές με συγκεκριμένα χαρακτηριστικά. Έχει είσοδο, θέλουμε να λαμβάνει είσοδο και θέλουμε να παράγει έξοδο. Εδώ μέσα μπορεί να συμβεί οτιδήποτε. Στα κάθε περίπτωση όμως πρέπει να λαμβάνει είσοδο και να παράγει έξοδο. Πώς ορίζεται μία συναρτήση λοιπόν για να το δούμε. Η εντολή ορισμού της συναρτήσης, η οποία πρέπει να αποθηκευτεί μέσα σε ξεχωριστό m-file, είναι η function. Function λοιπόν και εδώ εγώ χρησιμοποιώ ένα όνομα συναρτήσης που δεν φαίνεται τόσο καλά. Είναι το create underscore figure. Δημιούργησε μου την εικόνα. Και παίρνει ως στοιχεία εισόδου ό,τι εντάσω μέσα στην παρένθεση που εδώ είναι. Το V0, το H0, αρχική ταχύτητα, αρχικό ύψος βολής, η γωνία, η επιτάχυση της βαρύτητας και ο χρόνος. Αυτά εγώ επέλεξα ως στοιχεία που θέλω να λαμβάνει ως είσοδο η συναρτήση. Και αυτά παίρνει. Η γενική εντολή, η γενική διαδικασία ορισμού συναρτήσης στο m-file είναι η ακόλουθη. Είναι η function ως εντολή. Μέσα σε τετραγωνικές αγγείλες βάζω τις εξόδους εάν υπάρχουν. Εάν δηλαδή θέλω η συναρτήση να υπολογίζει κάτι να το αναθέτει σε μεταβλητές που θα κάνουν πάσα το αποτέλεσμα της συναρτήσης στο κυρίως πρόγραμμα. Και μετά έχω το όνομα της συναρτήσης που πρέπει να είναι οποιοδήποτε όπως λέμε νόμιμο όνομα όπως και τα υπόλοιπα ονόματα που χρησιμοποιούμε σε μεταβλητές. Ενώ μέσα σε παρένθεση μπαίνει η είσοδος. Στη γενική περίπτωση η συναρτήση έχει είσοδο και έξοδο. Προφανώς όχι για εσάς αλλά μπορώ να πω λοιπόν ότι μια συναρτήση μπορεί να μην έχει είσοδο ή μπορεί να μην έχει έξοδο. Μπορεί να κάνει άλλες δουλειές. Θα το δούμε. Για να δημιουργήσω μια συναρτήση πρέπει να δημιουργήσω ένα αρχείο κειμένου που να έχει την κατάληξη τελεία M το λεγόμενο M file. Είτε σε MATLAB είτε σε Octave αυτό δημιουργείται πάρα πολύ εύκολα. Θα δούμε τη διαδικασία στο εργαστήριο. File, new και έχω δύο επιλογές είτε function είτε M file. Εάν δημιουργήσω function ήδη το MATLAB μου γράφει στην πρώτη γραμμή M file, αυτή είναι η διαφορά, όλα αυτά που βλέπετε στο μαύρο πλαίσιο για να πάω εγώ να τα αλλάξω και να τα προσαρμόσω στη δική μου συναρτήση. Άρα λοιπόν έχω την έξοδο, την είσοδο. Οπότε ακριβώς όπως όταν θέλω να υπολογίσω το ημήτωνο των 30 μοιρών του λέω υπολόγησέ μου το ζήνους του παρένθεση 30. Τι είναι το παρένθεση 30 ο τρόπος με τον οποίο λέω στην εγγενή συναρτήση ζήνους ποια είναι η εισοδός της, έτσι δεν είναι. Αυτό κάνω και εδώ. Και θα μου πείτε βέβαια και πώς θα τα κάνω όλα αυτά με το παράδειγμα που μόλις είδαμε. Απλά αντιγράφω εδώ για να έχουμε τα ίδια στοιχεία. Έχω την function createFigure. Έχω λοιπόν μια συναρτήση πια. Πώς την ονόμασα createFigure θα μπορούσα να την ονομάσω Μαργαρίτα βεβαίως. Θα είχε οποιαδήποτε σημασία το όνομα για τον υπολογιστή, καμία. Εάν με βολεύει να την ονομάσω Μαργαρίτα δικαίωμά μου. Μέσα σε παρένθεση έχω όλα τα στοιχεία εισόδου. Άρα όταν θα κληθεί αυτή η συναρτήση πώς θα κληθεί με το όνομα της. Θα τηλογραφίσω το όνομα και μέσα σε παρένθεση θα πρέπει να βάλω πόσες τιμές. Μία, δύο, τρεις, τέσσερις, πέντε. Μία προς μία θα πάει και θα μπει ως περιεχόμενο στις αντίστοιχες μεταβλητές της συναρτήσης. Δηλαδή, ο αριθμός που θα βάλω πρώτος μέσα στην παρένθεση θα μπει ως τη μη στη δε μηδέν. Ο δεύτερος αριθμός μετά το κόμμα θα μπει ως τη μη στο αιτς μηδέν. Ο τρίτος αριθμός μετά το κόμμα θα μπει ως τη μη στην γωνία. Ο δέντατος αριθμός θα μπει στο τζε και ο πέμπτος θα μπει στο ταφ. Οπότε, λοιπόν, ως χρήστης εγώ μπορώ να καθορίσω όλα αυτά τα στοιχεία. Διότι αυτά επέλεξα να καθορίζω. Εσωτερικά, λοιπόν, στη συνάρτηση μετά παίρνω αυτά τα στοιχεία υπόψιμου και υπολογίζω. Το διάνισμα χρόνου, όπως έκανα. Το διάνισμα των τετμημένων. Το διάνισμα των τεταγμένων. Δημιουργώ τη γραφική παράσταση. Βάζω τους τίτλους. Έτοιμο. Αυτά, λοιπόν, τα ξέρω από πριν. Από εκεί και πέρα τι δεν έχω πει, πώς θα φτιάξω τι, πώς θα σχεδιάσω την μπάλα και πώς θα σχεδιάσω το στεφάνι. Δεν είναι σημαντικό για να το δούμε εδώ. Θα το βρείτε στη διαφάνεια. Είμαι απλά να δω το εξής, να πω το εξής, ότι εάν θέλω σε ένα αρχικό διάγραμμα που έχω σχηματίσει, που έχω δημιουργήσει, να εντάξω καινούργια γραφήματα, τότε χρησιμοποιώ την εντολή hold on. Η hold on είναι σαν να λέει στον υπολογιστή ότι άκου να δεις, έχεις ένα πρώτο ριζόχαρτο με ένα πρώτο σχέδιο. Τώρα θα σου βάλω από πάνω κράτο το εκεί που είναι και θα σου βάλω από πάνω ένα δεύτερο ριζόχαρτο. Με ένα δεύτερο σχέδιο. Θα σου βάλω λοιπόν ένα δεύτερο ριζόχαρτο όπου θα είναι σχεδιασμένο μόνο τι, ένα σύμβολο για την μπάλα. Και μετά θα σου βάλω και ένα τρίτο όπου θα είναι σχεδιασμένο τι, ένα σύμβολο για το στεφάνι. Και όλα αυτά μαζί τα διαβάζεις, τα βλέπεις, προβάλλονται ως ένα ενιαίο γράφι. Άλλο λοιπόν εδώ θα μπει το σύμβολο των εντολών με το οποίο θα σχεδιάσω τη στεφάνι και εδώ κάτι για την μπάλα. Δε σας τις δίνω εδώ και τώρα γιατί δεν έχουν καμία σημασία. Οπότε στο κυρίως πρόγραμμα μετά, τι θα γράψω, create figure με αυτόν τον τρόπο και έτσι λοιπόν προφανώς μπορώ να αυτονομίσω το γράφιμα διότι το έχω αναθέσει σε μια συνάρτηση και εφόσον η συνάρτηση αυτή χρησιμοποιηθεί με τον τρόπο που έχω καθορίσει, κάθε φορά που καλείται θα παίρνει στοιχεία εισόδου, θα υπολογίζει ένα γράφιμα και θα το δημιουργεί. Αυτό θα εμφανίσει επί της οθόνης. Αυτό λοιπόν είναι σε μεγαλύτερο μέγεθος, το σώμα της συνάρτησης. Προσοχή τώρα, πολλά ερωτήματα έχουν αρχίσει να εγείρονται στο τέλος αυτής της δεύτερης ώρας. Πιστεύω ότι την έννοια της συνάρτησης μπορούμε να την δεχτούμε γιατί είναι μια φυσική επέκταση των εγγενών συναρτήσεων. Δηλαδή, ακριβώς όπως έχουμε τις εσωτερικές συναρτήσεις, ακριβώς όπως χρησιμοποιούμε αυτές, ορίζουμε απλά εμείς μία συνάρτηση που θα τη χρησιμοποιούμε με τον τρόπο που θέτουμε. Δεν υπάρχει κάποια άλλη διαφορά. Έτσι λοιπόν πρακτικά ο ορισμός της δικής μας συνάρτησης βουλουτίζει τις τρεις διφιστάμενες με μία ακόμη. Και έτσι μπορώ να δημιουργήσω και δεύτερη και τρίτη και τέταρτη και πέμπτη. Και νίωστη. Κανένα πρόβλημα εκεί. Ο τρόπος, ξαναλέω, είναι ο συγκεκριμένος πρώτη εντολή μέσα στο M-file. Απαραϊτήτος η function, εάν δεν υπάρχει τότε όλο το M-file δεν θεωρείται συνάρτηση και θα παράξει μήνυμα λάθους. Αμέσως μετά πρέπει να υπάρχει το σύνολο των στοιχείων εξόδου εάν θέλουμε να παράγει έξοδο. Παρατηρείτε κάτι εδώ? Αυτή η συγκεκριμένη συνάρτηση έχει έξοδο? Δηλαδή, έχω εγώ ονοματίσει μεταβλητές στους οποίες να πηγαίνει οποιοδήποτε αποτέλεσμα υπολογισμού. Όχι. Γιατί, διότι αυτή η συνάρτηση δεν κάνει κάποιον υπολογισμό του οποίου το αποτέλεσμα θέλω να μεταφέρω σε κάποιο άλλο πρόγραμμα, σε αυτό που την καλεί. Αυτό που κάνει είναι, κατασκευάζει ένα γράφημα. Άρα, την θέλω για να παίρνει είσοδο, να τρέχει την διαδικασία, να κατασκευάζει το γράφημα και να το εμφανίζει επί της οθόνης. Δεν την θέλω για να παράγει οποιαδήποτε έξοδο, γι' αυτό το λόγο και λείπει όλο το τνήμα, πριν από το όνομά της, της εξόδου, διότι διαφορετικά θα έπρεπε να έχουμε έξοδος, ίσον, όνομα συνάρτησης και ορίζεματα εισόδου. Είπαμε, λοιπόν, ότι η συνάρτηση αποθηκεύεται σε M-files. Τα M-files, επειδή κάποιοι με ρώτησαν στο διάλειμμα, είναι τα αρχεία μέσα στα οποία σώζουμε, σε επίπεδο MATLAB, Octave, όλα τα προγράμματα που θέλουμε να τρέξουν. Για όσους, λοιπόν, έχουν εμπειρία από προγραμματισμό, το ερώτημα εδώ είναι, στο MATLAB υπάρχει ένα σύμβολο μεταφραστής, υπάρχει compiler, υπάρχει δηλαδή μια διαδικασία όπου του δίνουμε ένα σώμα, ένα σύνολο που εντολές, το περνά από έναν έλεγχο και μια μετάφραση σε γλώσσα μηχανής, και όφωσαν όλα πάνε καλά, τρέχει με αυτό που παράγει στο τέλος αυτός ο έλεγχος και η διαδικασία μετάφρασης, το λεγόμενο εκτελέσιμο. Η απάντηση εδώ είναι όχι. Στο MATLAB αυτά γίνονται αυτόματα, γίνεται δηλαδή εκτέλεση σε επίπεδο interpreter, εάν αυτό σας λέει κάτι. Αυτώματα γίνεται η μετάφραση γραμμή προς γραμμή. Από την άλλη όμως, με ρώτησε ένας συνάδεφός σας στο διάλειμμα και μπορώ εγώ να παράξω κάτι σαν ένα εκτελέσιμο σε MATLAB και να το δώσω σε κάποιο άλλο πρόγραμμα, διαδικασία ή οτιδήποτε άλλο να το τρέξει, βεβαίως. Μάλιστα έχω τρομακτικά περισσότερες και πλουσιότερες δυνατότητες. Να δημιουργήσω βιβλιοθήκες, να δημιουργήσω διαδικασίες, να μεταφράσω πρόγραμμα MATLAB σε οποιοδήποτε άλλο κώδικα. Αυτό λοιπόν που θα δείτε εσείς στο υπόλοιπο του εξαμήνου είναι, ήδη το συναντήσατε στο διαγραστήριό σας, ότι στο σπίτι δεν έχετε ξανά ασχοληθεί, ένα παραθυρικό περιβάλλον, δεν χρειάζεται να πω περισσότερα, το οποίο μου δίνει έτοιμα τα μενού δημιουργίας ενός M-File και μιας συνάρτησης. Η εκτέλεση του M-File γίνεται απλά δακτυλογραφώντας το όνομά του. Αυτό που πρέπει να φροντίσω, άλλο ερώτημα που τέθηκε στο διάλειμμα, είναι να είμαι εκεί όπου έχω σώσει τη συνάρτησή μου. Άρα, εάν σώσω τη συνάρτησή μου σε έναν κατάλογο, που έχει το όνομα VASILIS1, ο οποίος είναι κάτω από το C directory, αλλά τη στιγμή που θέλω να εκτελέσω, δεν είμαι κάτω από το VASILIS1, αλλά σε οποιοδήποτε άλλο κατάλογο, τότε δεν θα βρει το MATLAB ή το Octave, οτιδήποτε έχω μέσα στο VASILIS1, και δεν θα εκτελεστεί παράγοντας το αντίστοιχο μήνυμα λάθος. Από εκεί και πέρα, όπως θα δούμε και στο εργαστήριο, η δημιουργία ενός M-File υποστηρίζεται πάρα πολύ από το περιβάλλον προγραμματισμού του MATLAB και από τον Editor, με πάρα πολλά σύμβολα που μου δείχνουν ότι, για παράδειγμα, δεν έχω βάλει ελληνικό εισαγωγικό, οπότε θα εμφανιστούν πράγματα στην οθόνη και δεν τα θέλω, ένα loop δεν το έχω κλείσει, ένα if statement δεν το έχω ολοκληρώσει, οτιδήποτε ξεχνώ και θα μου το έλεγε ένας Compiler, αν θέλετε. Εδώ μου το λέει ίδιο Editor και με βοηθά, χρωματίζοντας, μάλιστα, κατάλληλα και τις γραμμές εντολής. Αυτή, λοιπόν, είναι η διαδικασία με την οποία δημιουργώ μια συνάρτηση. Στη γενική περίπτωση ξαναλέω, θα τα πούμε πολλές φορές, πρέπει να μας γίνει κτήμα και προφανώς πρέπει να δουλέψουμε πάρα πολύ. Πρέπει, δεν να σας πω, ότι ακριβώς επειδή δίνουμε πολύ μεγάλη βαρύτητα στις συναρτήσεις σε αυτό το μάθημα, λόγω της ικανότητες που έχουν να λειτουργούν αυτόνομα, θα το δείτε αυτό ήδη στο πρώτο θέμα. Όλα τα στοιχεία στο πρώτο θέμα είναι μέσα σε συναρτήσεις, ουσιαστικά. Ο πειραματισμός και η εξάσκηση είναι πολύ σημαντικοί παράγοντες. Function λοιπόν, η εντολή που καθορίζει ότι ό,τι ακολουθεί είναι συναρτήσεις. Μέσα σε τετραγωνικές αγγείλες οι έξοδοι αν είναι περισσότερες από μία. Αν είναι μία δεν χρειάζεται τετραγωνική αγγείλη. Ison, όνομα συναρτήσεις, Μαργαρίτα, Βασίλης, οτιδήποτε. Οι είσοδοι που θέλουμε να λειφθούν υπόψη μέσα σε παρένθεση διαχωρισμένες με κόμμα. Από εκεί και πέρα οι υπολογισμοί που αναθέτουν τιμές στις παραμέτρους στην έξοδο και η εντολή end, η end function σε octave, αυτή είναι η αλλαγή. Σε octave μπορείτε να δείτε και την end function, μία λέξη που δεν είναι αναγνωρίσιμη σε MATLAB ενώ μπορείτε να γράψετε end και στο octave και να είναι αναγνωρίσιμο εκεί. Ολοκληρώνει και κλείνει τη συναρτήση. Εξάσκηση στο εργαστήριο. Στο επόμενο μάθημα θα δούμε πολύ περισσότερα πράγματα διότι τώρα θα κάνουμε το δεύτερο και τελευταίο μας διάλειμμα για να μπούμε βαθύτερα στις συναρτήσεις την τρίτη ώρα. Δείτε επίσης και τις βιντεοδιαλέξεις. Αφού είδαμε πώς μπορούμε να οδηγηθούμε στην ανάγκη της δημιουργίας μιας συναρτήσης θα δούμε περισσότερα πράγματα σε σχέση με τις παραμέτρους της συναρτήσης και την εμβέλεια των μεταβλητών της. Για το λόγο αυτό θα ήθελα να σας προσκαλέσω να δούμε το εξής πρόβλημα. Έστω ότι θέλουμε να υπολογίσουμε την επιφάνεια και τον ογκοσφαίρας αλλά δεν έχουμε μόνο ένα στοιχείο εισόδου, εδώ, μία ακτίνα. Έχουμε ένα διάνισμα τιμών ακτίνων. Έστω λοιπόν ότι έχουμε 100 ακτίνες. Έχουμε λοιπόν τις τιμές R από 1 έως 100 όπου κάθε τιμή αντιπροσωπεύει την ακτίνα της σφαίρας για την οποία θέλουμε να υπολογίσουμε επιφάνεια και όγκο. Αξίζει εδώ να σκεφτούμε την έννοια της συναρτήσης. Για να δούμε πότε θέλουμε μια συναρτήση, εάν είπαμε επαναλαμβάνουμε κάτι συνεχώς ή πολλές φορές ή συχνά ή σε συνδυασμό όλων αυτών των παραμέτρων, τότε λοιπόν μπορούμε και πρέπει να σκεφτούμε μια συναρτήση. Εδώ φαίνεται ότι έχουμε μια τέτοια περίπτωση. Γιατί, διότι θα χρειαστεί να κάνουμε 100 φορές έναν υπολογισμό. Ας τον κάνουμε λοιπόν απλούστερο αυτόν τον υπολογισμό. Για να δημιουργήσουμε τη συναρτήση να θυμίσω και πάλι την βασική δομή. Εντός ενός M-file έχουμε την εντολή function, τις παραμέτρους εξόδου, την ανάθεση τιμών, όνομα συναρτήσης, παράμετρη εισόδου. Αμέσως μετά σε κάθε μία από τις παραμέτρους εξόδου αναθέτω τιμές στη βάση υπολογισμού υπολογισμών, σε μία, δύο, πέντε, δέκα ή γραμμές δεν ενδιαφέρει, ολοκληρώνω και κλείνω τη συναρτήση με την N. Στην συγκεκριμένη περίπτωση λοιπόν πώς θα μπορούσε να είναι μία συναρτήση η οποία υπολογίζει πόσα πράγματα? Επιφάνεια και όγκο. Προφανώς λοιπόν θέλω δύο στοιχεία εξόδου. Άρα εδώ στις τετραγωνικές αγγείλες θα τοποθετήσω τα δύο αυτά στοιχεία. Ας τα συμβολίζω και με τρόπο που να συνάδει με την φύση του προβλήματος. S για την επιφάνεια, surface, V για τον όγκο από το βόλιο. Από εκεί και πέρα θα χρησιμοποιήσω το όνομα σφία, γιατί διότι ταιριάζει πολύ καλά με το πρόβλημά μου, ενώ μέσα στην παρένθεση θα τοποθετήσω την είσοδο. Μία είσοδο, δεν θέλω για να υπολογίσω κάθε ένα από αυτά τα στοιχεία. Την ακτίνα, για να υπολογίσω και την επιφάνεια και το εμβαδό. Μπορούμε να τα συμπληρώσουμε τώρα αυτά, για να ακούσω προτάσεις και ουσιαστικά να δούμε αν μπορούμε να θυμηθούμε εδώ, το πώς υπολογίζεται η επιφάνεια κι ο όγκος μια σφαίρας. Κάποια κάποιος ο οποίος να θυμάται, τις σχέσεις υπολογισμού, έτσι, ψωνίσαμε από εσάς κύριέ μου, επόμενος. Και η επιφάνεια, 4Τ πυροτρίτης, η επιφάνεια προκύπτει διαφορίζοντας ή ολοκληρώνοντας αυτή τη σχέση του όγκου και το ανάποδο. Σκεφτείτε εδώ. Ναι, ακριβώς. Από τη μία στην άλλη πηγαίνουμε με αντίστοιχες μαθηματικές πράξεις. Έτσι, μην το ξεχνάμε αυτό. Άρα, λοιπόν, αυτό μου χρειάζεται και έχω πλήρως πλέον το σώμα της συνάρτησης. Έχω δηλαδή ένα αρχιάκι, μικρό είναι, τέσσερις γραμμές συνολικά, έχει την δομή που απαιτείται για να είναι συνάρτηση. Βεβαίως, διότι ξεκινάμε πρώτη εντολή την function, αμέσως μετά έχει εξόδους. Όνομα και όρισμα εισόδου, υπολογισμό των παραμέτρων εξόδου, και περατούται με το end. Εάν, λοιπόν, αυτή την συνάρτηση την τρέξω στο octave, θα δούμε, δεν το κάνω τώρα για να κλειτώσω λίγο χρόνο, ομολογώ, θα δούμε ότι πραγματικά θα εμφανιστεί επί της οθόνης το αποτέλεσμα. Το ζήτημα και το ερώτημα εδώ είναι το εξής. Μπορώ να υπολογίσω και αυτό αναγκαστικά. Άρα, ως απάντηση, θα σας το αφήσω να το βρείτε στο εργαστήριο, ή κατά μόνας, όπως λέμε. Μπορώ απευθείας να υπολογίσω το S και το V, ή να το ζητήσω από τη γραμμή εντολών. Ή αυτό μεταφράζεται στο γιατί δεν μπορώ να χρησιμοποιήσω τις μεταβολητές S και V στην γραμμή εντολών. Εάν πάω, δηλαδή, να τρέξω αυτή την συνάρτηση, θα δω ότι παράγονται αυτές, αλλά αν πάω να ζητήσω το S και το V απευθείας, θα δω ότι δεν υπολογίζονται, γιατί πρέπει κάθε φορά να καλώ τη συνάρτηση. Άρα, ο υπολογισμός του περιεχομένου, των τιμών, δηλαδή, των μεταβλητών S, επιφάνεια, και V, όγκος, ολοκληρώναται μόνο εφόσον καλείται η συνάρτηση. Πώς λειτουργεί λοιπόν αυτό, για να το δούμε καλύτερα. Όταν εμείς γράψουμε στην επιφάνεια εργασίας στον υπολογιστή sphere και μέσα σε παρένθεση βάλουμε τι? Την τιμή, την οποία θα θεωρήσει ως τιμή του R, 2,8 ας πούμε. Θέλω να υπολογίσω επιφάνεια και ογκοσφέρας με ακτίνα 2,8. Άρα, θα βάλω εντός της παρένθεσης την τιμή 2,8. Αυτόματα η τιμή 2,8 θα θεωρηθεί και θα είναι η τιμή, το περιεχόμενο, της μεταβλητής R εντός της συνάρτησης. Την οποία μεταβλητή R γνωρίζει κανείς πέραν της συνάρτησης. Υπάρχει οποιοσδήποτε άλλο σπρόγραμμα, διαδικασία, περιβάλλον, υπολογισμού κτλ. που να γνωρίζει την ύπαρξη της R. Όχι, είναι κρυμμένη μέσα στη συνάρτηση. Και αυτό το λόγο και στο πέρας του τρεξήματος της συνάρτησης, αν ζητήσω την τιμή της πολύ απλά πληκτρολογώντας R και δίνοντας Enter, τι θα λάβω ως μήνυμα, δεν γνωρίζω αυτή την τιμή. Δεν γνωρίζω αυτή την μεταβλητή, θα μου απαντήσει ο υπολογιστής. Και εγώ θα αναρωτιέμαι, μα τι στο καλό μου λέει, εγώ χρησιμοποίησα την R μέσα στη συνάρτηση. Και θα έχει απόλυτο δίκιο, όπως συμβαίνει πάντα, με τις μηχανές αυτού του είδους, δυστυχώς, διότι δεν γνωρίζει κανένας Άρος παρά μόνο τη συνάρτηση, παρά μόνο η συνάρτηση, την R. Και αυτό που στην πραγματικότητα συμβαίνει, είναι ότι τη στιγμή που χρησιμοποιώ εγώ την σφία, τότε η σφία, πηγαίνει ο υπολογιστής και ψάχνει και βρίσκει. Τι, αν υπάρχει οποιαδήποτε εντολή, ονομάζεται σφία. Όχι, υπάρχει εγγενή συνάρτηση που ονομάζεται σφία. Όχι, σε MATLAB. Όχι, σε Octave υπάρχει, οπότε αν το δοκιμάσετε σε Octave αυτό το παράδειγμα, μην ονομάσετε τη συνάρτηση σας σφία, ονομάσετε κάτι έτσι. U sphere, F sphere, F sphere, ό,τι θέλετε. Όχι sphere, γιατί υπάρχει. Και απλά θα χρησιμοποιήσει κάτι άλλο από αυτό που νομίζετε. Δεν υπάρχει, λοιπόν, ούτε ως εντολή, ούτε ως εγγενή συνάρτηση. Μήπως υπάρχει ως άλλη συνάρτηση, βεβαίως. Είναι στον κατάλογο στον οποίο βρίσκομαι και δουλεύω. Παρεπιπτόντως, πολύ σημαντικό. Πάρα πολύ ωραία. Κλείθηκε η συνάρτηση sphere. Βλέπω τώρα μέσα στον φάκελο τι θέλει η sphere. Θέλει μια είσοδο. Ελήφθη από τον χρήστη. Δόθηκε από τον χρήστη για να ελειφθεί, συγγνώμη, από τη συνάρτηση. Βεβαίως, είναι τιμή 2,8. Ανατέθηκε αυτομάτως από τη συνάρτηση στην R. Εκείνη τη στιγμή η συνάρτηση ξύπνησε και δημιούργησε στη μνήμη του υπολογιστή την παράμετρο R μέσα στην οποία έχει αναθέσει την τιμή 2,8. Αμέσως μετά προχωρά στον υπολογισμό S και V. Και βλέπει ότι τα S και V υπάρχουν εκεί όπου τοποθετούνται οι έξοδοι της συνάρτησης. Άρα θα πάει και θα πει, τώρα εγώ συνάρτηση, είμαι ένα κλειστό κουτί, κανένας δεν βλέπει τι έχω μέσα μου, αλλά θα πετάξω στον έξοκόσμο μία τιμή, αυτή που αναφέρεται πρώτη, την S, και θα έχει πιο περιεχόμενο αυτό που υπολογίστηκε μέσα στη συνάρτηση, μία δεύτερη τιμή, αυτή που αναφέρεται ως δεύτερη στη σειρά εξόδου, και θα έχει την τιμή που υπολογίστηκε εδώ στη συνάρτηση. Και αμέσως μετά θα ξεχάσω τα πάντα, θα πέσω σε ύπνο και δεν υπάρχει για μένα τίποτα. Αυτό συμβαίνει λοιπόν εσωτερικά της συνάρτησης. Για αυτό το λόγο μπορώ και να αναθέσω το περιεχόμενο της sphere σε μεταβλητές. Εδώ, προσέξτε, αναθέτω το αποτέλεσμα του υπολογισμού της συνάρτησης sphere σε μεταβλητές. Όμως εγώ ξέρω ότι η συνάρτηση sphere υπολογίζει δύο εξόδους και εδώ αναθέτω μία έξοδο. Άρα, ποια τιμή θα πάρει, εσύ, την πρώτη που ισχάνει να είναι η surface, έτσι, εντός της συνάρτησης. Η πρώτη που αναφέρεται ως έξοδος είναι αυτή που υπολογίζεται ως επιφάνεια. Ενώ, αν ζητήσω λοιπόν την S θα λάβω αυτή τη στιγμή και αν αναθέσω σε ένα ζεύγος τιμών, εξού και οι τετραγωνικές αγγίλες, διότι είναι διάνισμα ουσιαστικά, δεν είναι, σε ένα ζεύγος τιμών το αποτέλεσμα της sphere, ακριβώς επειδή η sphere παράγει δύο αποτελέσματα, θα έχω δύο τιμές που η μία θα ανατεθεί στην S και η άλλη στην V. Και βέβαια τώρα εδώ έχω την υποψία ότι κάνα δυο τουλάχιστον από εσάς θα αναρωτιώνται το εξής. Βρε εσείς, είχα την S και την V εσωτερικά της συνάρτησης και τώρα μου μιλάτε για S και V εσωτερικά της συνάρτησης. Δεν είναι ίδιες. Ποια είναι η άποψή σας, είναι ίδιες ή όχι. Έχουν εντύπωση, δηλαδή, ότι σε αυτή τη συγκεκριμένη συνάρτηση απλά θέλουν να δώσουν δύο νούμερα στον τους. Για παράδειγμα, άμα βάζαμε VS μέσα στην αγγίλη, λέει δηλαδή ο συνάδελφός σας ότι θα μπορούσα εγώ να γράψω VS ίσο με sphere του 1. Τότε η τιμή της παραμέτρου της συμμεταβλητής V ποια θα ήταν? Θα ήταν η επιφάνεια. Ή αν ονόμαζα της εξόδους Μαρία Τζόρζ ίσον sphere του 2. Αυτό που θα συνέβαινε είναι ότι η κλήση της sphere θα συνεπάγονταν τον υπολογισμό δύο στοιχείων. του S, πρώτο στοιχείο που υπολογίζεται και V, δεύτερο στοιχείο. Αυτά τα δύο ως πακέτο, ως ζεύγος τιμών θα πήγαιναν και θα ανατίθανταν ως περιεχόμενο στην πρώτη και στη δεύτερη μεταβλητή στην οποία ο χρήστης αναθέτει το περιεχόμενο της εκτέλεσης, το αποτέλεσμα της εκτέλεσης της κλήσης δηλαδή της συνάρτησης sphere. Άρα εδώ θα μπει το περιεχόμενο της S της συνάρτησης και στη νούμερο δύο θα μπει το περιεχόμενο της V. Ενώ το κυρίως περιβάλλον, το περιβάλλον υπολογισμού ή το πρόγραμμα που χρησιμοποίησε την sphere, δεν έχει, επιτρέψτε μου την έκθεση, ιδέα ως προς την S και την V. Εάν δηλαδή εμπλέξουμε την S και την V, τις μεταβλητές αυτές οι υπολογισμούς, θα λάβουμε ως μήνυμα το ότι δεν γνωρίζω αυτές τις μεταβλητές. Οτιδήποτε συμβαίνει εκτός της συνάρτησης, αυτό θέλω να θυμάστε πολύ καλά, συμβαίνει χωρίς να έχουμε καμία γνώση των ονομάτων μεταβλητών που χρησιμοποιούνται εντός. Πρέπει δηλαδή να έχετε στο μυαλό σας αυτή την εικόνα, ότι η συνάρτηση ξυπνά, γεννά όλες τις μεταβλητές, τις βαφτίζει, τις υπολογίζει κτλ και μόλις περατούται η λειτουργία της, ολοκληρώνεται, φτάνει στο end, όλα σβήνονται πλέον. Δεν υπάρχουν στη μνήμη οι τιμές αυτές. Υπάρχουν μόνο όσο χρειάζονται για να επιτελεστεί το σύνολο των λειτουργιών που η συνάρτηση απαιτεί. Ερώτημα. Δεν έχουμε θέση συνάρτηση. Σε αυτή την περίπτωση, συγγνώμη δεν άκουσα το ερώτημα. Δεν έχουμε θέση συνάρτηση. Πάλι. Δεν έχουμε θέση συνάρτηση. Εκθέση. Εκθέση. Τι εννοείς θέση συνάρτησης. Δεν έχουμε θέση συνάρτηση. Εμείς έχουμε χρησιμοποιήσει, μισό λεπτό για να το κάνουμε συγκεκριμένο, έχουμε ήδη ορίσει τη συνάρτησή μας. Έχουμε δημιουργήσει το M-file. Έχει ακριβώς αυτό το περιεχόμενο που βλέπουμε στις διαφάνειες. Άρα λοιπόν πλέον ο υπολογιστής μας έχει εμπλουτιστεί με μία ακόμη συνάρτηση. Αυτή που φτιάξαμε εμείς. Τη σφία. Την έχουμε. Όπως έχουμε την κόζινους, τη ζίνους και όλες τις υπόλοιπες. Την χρησιμοποιώ λοιπόν εγώ εδώ. Την χρησιμοποιώ για την τιμή 2. Ξέρω ότι αυτή η συνάρτηση παράγει δύο εξόδους. Πρώτη έξοδος που παράγει είναι η επιφάνεια. Και η δεύτερη έξοδος που παράγει είναι ο όγκος. Άρα λοιπόν αναθέτω αυτές τις δύο εξόδους σε δύο τιμές. Αυτό κάνω εδώ εγώ ο χρήστης. Και ακριβώς με αυτή τη σειρά θα ανατεθούν. Η πρώτη έξοδος στην πρώτη τιμή. Άρα στη πρώτη μεταβλητή. Άρα η μεταβλητή Μαρία θα λάβει ως περιεχόμενο το αποτέλεσμα του υπολογισμού για επιφάνεια σφαίρας με ακτίνα 2. Και η δεύτερη μεταβλητή, η George, θα πάρει ως περιεχόμενο τον όγκο που προκύπτει από τον υπολογισμό πάλι για σφαίρα με ακτίνα 2. Αυτό λοιπόν σημαίνει ότι δεν χρειάζομαι κάτι άλλο. Δεν υπάρχει αυτή η συνάρτηση στην μνήμη. Υπάρχει στην βιβλιοθήκη των συναρτήσεων. Δεν χρειάζεται να παραμένει στη μνήμη όπως όταν καλούμε την Ζίνους ή την Κόζινους, αυτές δεν παραμένουν στη μνήμη. Η μνήμη είναι μια περιοχή όπου εφήμερα κατοικοεδρεύουν μεταβλητές. Εμείς δημιουργούμε μια μεταβλητή. Δεν ξέρω αν αυτό σας είναι κατανοητό και θα ήθελα με την αφορμή αυτής της ερώτησης να το σχολιάσουμε. Δημιουργούμε μια μεταβλητή με το που την ορίζουμε στο MATLAB. Πατάτα ίσον 1. Δημιουργώ λοιπόν τη μεταβλητή με το όνομα Πατάτα και της αναφέτω και μία τιμή, της δίνω μία τιμή το 1. Εκείνη τη στιγμή μία περιοχή της μνήμης έχει βαφτιστεί Πατάτα και έχει ένα περιεχόμενο τιμής. Και ό,τι συμβαίνει με τη μεταβλητή Πατάτα, σε υπολογισμούς που θα ακολουθήσουν ενδεχομένως, επηρεάζει αυτή την περιοχή μνήμης. Εάν εξέλθουμε του υπολογιστικού περιβάλλοντος, δε σώσουμε τις μεταβλητές που έχουμε χρησιμοποιήσει και κλείσουμε τον υπολογιστή μας, η μεταβλητή Πατάτα δεν υφίσταται πλέον. Την επόμενη φορά που θα ξαναμπούμε δεν θα την βρούμε μπροστά μας. Όμως, εάν ακολουθήσουμε την ίδια διαδικασία και τρέξουμε την sphere, θα την ξαναβρούμε, διότι υφίσταται ως αρχείο. Μαζί με όλα τα υπόλοιπα αρχεία που ορίζουν την ζήνους, την κόζινους, την εξωτερικό γινόμενο, την εξωτερικό γινόμενο, όλες τις υπόλοιπες συναρτήσεις που υπάρχουν στη Μεγάλη Βιβλιοθήκη Συναρτήσεων Σεμάτλων. Αυτή είναι η μεγάλη διαφορά. Και επιτρέψτε μου τώρα να ρωτήσω για ρωτήσεις. Να πάμε από αριστερά προς τα δεξιά. Αν θελήσουμε να χρησιμοποιήσουμε μόνο τη δεύτερη αρχή στον τρόπο της συναρτήσεας, μπορούμε να χρησιμοποιήσουμε το μόνι και εσύ πρέπει να πει ούτως τίποτα. Πειραματίσου λίγο με αυτό, δεν θα δώσω απάντηση. Θέλω να πειραματιστείς λίγο σε αυτό. Έτσι, ερώτημα. Άμα το δημιουργήσουμε μόνο από το σπίρι, η αρχή σε προσεκτό, με δύο κομμάτια, θα πάρκει οτιμέτες, θα πάρκει οτιμέτης ή δεν θα πάρκει οτιμέτης. Εδώ θα πρέπει να απαντηθεί, διότι αυτό είναι θεμελιώδες. Τι συμβαίνει, θυμίζω ότι η sphere έχει αυτό το περιεχόμενο. Άρα λοιπόν, υπολογίζει δύο τιμές. Αυτές οι δύο τιμές πηγαίνουν στην έξοδο. Προφανώς λοιπόν και ναι θα εμφανιστούν δύο τιμές. Οι τιμές παράγονται. Δεν ανατήθενται πουθενά, άρα ανατήθενται εξορισμού που, εκεί όπου ανατήθενται όλες οι υπόλοιπες μεταβλητές, την answer. Θυμάστε ότι το MATLAB έχει μια μεταβλητή, την answer. Του λες α ίσον 5, β ίσον 10. α συν β, α συν β, enter. Δεν το αναθέτεις κάπου, τι θα σου απαντήσει, answer, 15. Άρα γεννά μια μεταβλητή, που έχει ένα, δύο, τρία ή τέσσερι, πέντε ή οτιδήποτε άλλο, περιεχόμενα. Η κυρία. Άρα λοιπόν, όντως, εάν δεν θέλουμε να εμφανίζεται η απάντηση επί της οθόνης, διότι όταν έχουμε πολλαπλούς υπολογισμούς, τότε ουσιαστικά η οθόνη μας δεν είναι γεμάτη με απαντήσεις, τελειώνουμε κάθε υπολογισμό, και αυτή είναι η καλή προγραμματιστική τακτική στο MATLAB, με το ελληνικό ερωτηματικό, ώστε να απαγορεύσουμε στον υπολογιστή μας και να εμφανίζει τις απαντήσεις αυτές. Και υπάρχει και ένα δεύτερο παρελκόμενο αυτής της καλής πρακτικής. Είναι γρήγορος ο υπολογισμός, διότι ξέρετε, αν έχετε έναν επαναλαμβανόμενο υπολογισμό, ο οποίος πετά πράγματα στην οθόνη, τότε τρέχει πολύ πιο αργά, αν πρέπει να εμφανίσει στην οθόνη αποτελέσματα σε σχέση με το να μην τα εμφανίσει και να κάνει μόνο τον τελικό υπολογισμό. Ερώτημα στο βάθος. Υπάρχει κάποια εντολή που μπορούσε να μένει σε όλο το πρόγραμμα για να μην γραμμούν σε κάθε ερωτηματικά, στον τέλος απλά να μην εμφανίζει τα απαλή αποτελέσματα. Όχι. Ο συνάδελφός σας ρωτά κάτι γενικότερο. Υπάρχει τρόπος να προσθέσω ερωτηματικά σε κάθε γραμμή εντολής. Έτσι δεν είναι. Αυτό δεν είναι το ερώτημα. Για να τα αποφύγω. Για να τα αποφύγω. Έτσι. Ας πούμε πως όχι. Ας πούμε πως όχι. Ερώτημα. Αν οι ΒΚΕΙΕΣ που προηπήρθανε πριν να κάνουν καλά εμφανίσματα στις σπίες, τι θα πω? Αυτό είναι ένα ενδιαφέρον ερώτημα που θα ήθελα να το επαναλάβω και να το συζητήσουμε. Παρακαλώ, προσέξτε. Ρωτά εδώ ο συνάδελφός σας. Έστω ότι οι ΒΚΕΙΕΣ υπήρχαν πιο πριν. Δεν έχω καλέσει ποτέ τη συνάρτηση. Για να το κάνω συγκεκριμένο, οι ΒΚΕΙΕΣ δεν την έχουν καλέσει αυτή τη φορά. Υπέρηχαν. Την χρησιμοποίησα καπολού. Την καλότητα συνάρτηση. Δεν αναθέτω τα αποτέλεσμα σε ΒΚΕΙΕΣ. Στη Μαρία και στο Τζόρτζ. Οι ΒΚΕΙΕΕΣ συνεχίζουν να υπάρχουν, βεβαίως. Τι τιμές έχουν αυτές που είχαν ανεξαρτήτως τη συνάρτηση. Δεν εμπλέκονται. Είναι επίσης κάτι παράξενο, το οποίο θέλω να το ξαναπω, γιατί πιστεύω ότι μπορεί να δημιουργήσει πρόβλημα. Σας είπα λίγο πριν, ότι όλες οι μεταβλητές εντός της συνάρτησης, γεννιώνται τη στιγμή που καλείται και χρησιμοποιείται και πεθαίνουν μετά. Και ρωτά, λογικά, ο συναδεφός σας. Κι αν εγώ έχω μεταβλητές της ΕΣ και ΒΙ, που τις χρησιμοποίησα πιο πριν. Εκτός και ανεξαρτήτως της συνάρτησης. Καλό τη συνάρτηση που εμπλέκει πάλι η ασκευή. Δεν υπάρχει καμία σύγχυση εκεί. Όχι. Θα δημιουργήσει τις δικές της εσωτερικές ασκευή. Θα τις βάλει σε άλλη περιοχή της μνήμης. Θα κάνει τις όποιες πράξεις θέλει εκεί. Θα πετάξει, θα κάνει πάσα το αποτέλεσμα σε αυτόν, σε αυτή που καλεί τη συνάρτηση. Θα κλείσει μετά και η ασκευή στο κυρίως υπολογιστικό περιβάλλον, όπου χρησιμοποιήθηκε η συνάρτηση θα παραμείνουν με τις τιμές που είχαν. Επιτρέψτε μου να κάνω το εξής. Να εντάξω το εξής ερώτημα. Εμείς κάναμε τη συνάρτηση για να αποφύγουμε να τη χρησιμοποιήσουμε 100 φορές. Και μέχρι τώρα εγώ τη χρησιμοποιώ για κάθε μία τιμή της ακτήρας ξεχωριστά. Δεν έκανα τη ζωή μου και πολύ πιο εύκολη. Εάν δώσω, παρακαλώ, την προσοχή σας εδώ, εάν ζητήσω τον υπολογισμό της σφίαρ για R από 1 έως 100. Τι κάνω εδώ ουσιαστικά, δημιουργώ ένα διάνισμα εκατοτιμών, έτσι δεν είναι. Από βήμα έως. Όταν λείπει το βίαιμα, πώς ανοείται? Αυτόματα ένα. Άρα, τιμές από 1 έως 100. Μάλιστα. Θα τρέξει. Δυστυχώς έχω επιλέξει εδώ να το κάνω έτσι σήμερα γιατί τα γράμματα είναι μικρά. Δυστυχώς δεν το έχουμε μπροστά μας, αλλά πρέπει να με πιστέψετε γιατί δεν θα τρέξει. Να συζητήσουμε όμως γιατί δεν θα τρέξει. Εδώ θέλω την άποψή σας, παρακαλώ. Προσέξτε όμως να γυρίσω πίσω εγώ στη συνάρτηση, να την έχω μπροστά μας. Το Ά εδώ θα μπορούσε να είναι οτιδήποτε, έτσι δεν είναι. Δεν θα μπορούσε να είναι πίνακας γενικά. Θα μπορούσε να είναι. Στο MATLAB επίσης ξέρουμε ότι όλα είναι πίνακες, απλά εδώ συμβαίνει να είναι ένας πίνακας ένα επί ένα, η μία τιμή. Άρα δεν υπάρχει τέτοιο θέμα. Δεν είναι λοιπόν θέμα του να ενσωματωθεί μια επαναληπτική διαδικασία. Η ίδια η συνάρτηση θα μπορούσε να λειτουργήσει, αλλά θα ήθελα να αναρωτηθούμε εδώ. Θα μπορούσε να γίνει ο υπολογισμός στο νέο σκευή. Αν στη θέση του R αντί για στοιχείο υπήρχε διάνισμα. Προσέξτε τι έχουμε εδώ. Να θυμίσω ότι είδαμε πριν το διάλειμμα. Όταν θελήσαμε να κάνουμε τη γραφική παράσταση X, Y και είχαμε τις 100 τιμές του χρόνου. Είμαστε που τον κόψαμε τον χρόνο σε διαστήματα. Σχολιάσαμε πως για να γίνουν οποιασδήποτε πράξεις που συνεπάγονται, πράξεις στοιχείο προς στοιχείο, πρέπει να χρησιμοποιήσουμε κάτι διαφορετικό. Αυτό που λείπει εδώ λοιπόν στον υπολογισμό είναι ότι έτσι όπως γράψαμε εμείς την διαδικασία υπολογισμού, αναφερόμαστε πάντα μόνο σε ένα στοιχείο. Δεν αναφερόμαστε σε διάνισμα η πίνακα ευρύτερα. Άρα εάν αντικαταστήσουμε, όχι αντικαταστήσουμε, πως θέσουμε απλά και μόνο μια τελεία, τότε σας διαβεβαιώ ότι θα λάβουμε ως αποτέλεσμα δύο διανύσματα των 100 στοιχείων το καθένα. Το πρώτο διανύσμα θα έχει όλες τις επιφάνειες για κτήνα από 1% και το διάνισμα θα έχει όλους τους όγκους για κτήνα από 1% Με μόνη διαφορά το γεγονός πως πλέον σεβαστήκαμε την ανάγκη να γίνονται οι υπολογισμοί στοιχείο προς στοιχείο. Ξαναλέω ότι έχουμε εδώ, έχουμε ένα διάνισμα το R 100 θέσεων. Άρα έχετε στοιχεία 1, 2, 3, 100. Και εμείς θέλουμε κάθε στοιχείο αυτού του διανύσματος, στο υπολογισμό της επιφάνειας να υψωθεί στο τετράγωνο και στο υπολογισμό του όγκου να υψωθεί στην τρίτη. Πράγμα που σημαίνει ότι πρέπει να γίνει στοιχείο προς στοιχείο αυτή η πράξη. Άρα θα πρέπει να προσθέσουμε την τελεία μετά το R, την λεπτομέρεια αυτή για να υποχρεώσουμε τον υπολογιστή να δει στοιχείο προς στοιχείο τα περιεχόμενα αυτών των διανισμάτων. Δοκιμάζοντας λοιπόν ξανά τα βλέπουμε όλα αυτά. Αλλά μία ακόμη βελτίωση μπορούμε να κάνουμε που ίσως είναι και η πιο σημαντική σε μια συνάρτηση. Η βελτίωση αυτή είναι το να προσθέσουμε help, να προσθέσουμε βοήθεια. Όπως όταν γράφουμε help, κενό, ζήνους, εμφανίζεται ένα σύνολο από πληροφορίες που αν ανοίξουμε το αρχείο του ζήνους.m θα δούμε ότι περιλαμβάνονται στο θάκελο, στο m-file που κάνει όλο τον υπολογισμό του ημητώνου. Άρα λοιπόν και εδώ, εάν μετά από το σύνβολο επί της 100, που όπως είπαμε συνεπάγεται σχόλιο, προσθέσουμε κάποιο κείμενο, τότε με τη χρήση της εντολής help, άρα help, κενό το όνομα της συνάρτησής μας, sphere εδώ, θα διαπιστώσουμε πως ό,τι γράψαμε σαν σχόλιο εμφανίζεται επί της οθόνης μας. Είναι λοιπόν το help, μια βοήθεια χρήσης που μπορούμε να χρησιμοποιήσουμε εμείς αλλά, πολύ πιο σημαντικό, κι οποιοςδήποτε άλλος πάρει τη δική μας συνάρτηση και θελήσει να την χρησιμοποιήσει. Ερώτημα. Θα το δοκιμάσεις, θα το δοκιμάσεις, αλλά φανώς σε κάποιες συνθήκες ναι και σε κάποιες συνθήκες όχι. Θα το δοκιμάσεις. Να δούμε τώρα και κάτι που δεν το έχουμε τόσο πολύ συναντήσει. Ας υποθέσουμε ότι θέλουμε να κάνουμε μια συνάρτηση πολύ απλή, η οποία θα αυξάνει την τιμή μιας μεταβλητής κατά ένα. Παράδειγμα, function increase. Προσέξτε, δημιουργώ αυτή τη συνάρτηση. Τη βαφτίζω increase, παίρνει ως ισοδοτοχή και εντός της γίνεται αυτή η πράξη, x ίσον x είναι 1. Σε περιβάλλον εργασίες λοιπόν, δίνω στην τιμή x αρχικά την τιμή 1 και καλώ μετά την increase ως προς x, ως προς 1. Ποια θα είναι η τιμή x που θα προκύψει? Ξανά, τι κάνει η συνάρτησή μου. Η συνάρτησή μου έχει ακριβώς αυτή τη μορφή. Δεν έχει έξοδο. Μπορεί αυτό να συμβεί. Έχει το όνομα, απαραίτητο, έχει είσοδο. Και αμέσως μετά αναθέτει στην τιμή x την προηγούμενη τιμή του συν 1. Επιτρέπεται αυτό. Τι εξάλλου θέλεμε να κάνουμε εμείς. Εάν λοιπόν δώσουμε πλέον στο περιβάλλον εργασίας, στο x την τιμή 1, καλέσουμε την increase με όρισμα το x και ζητήσουμε μετά να δούμε την τιμή x, ποια θα είναι αυτή. Να δούμε... Παρακαλώ. Ναι, ναι. Για ποιον λόγο? Σωστά ο συνάδελφός σας εντόπισε το βασικό ότι επειδή η συνάσταση μας δεν έχει έξοδο, ό,τι και να κάνει εσωτερικά δεν δύναται να μεταφερθεί στο κυρίως είτε πρόγραμμα είτε στο περιβάλλον υπολογισμού. Άρα εσωτερικά, η συνάρτηση όσο είναι ζωντανή, χρησιμοποιή, έχει κλειθεί από τον χρήστη και κάνει τον υπολογισμό, τι έχει κάνει, πήρε την τιμή χ1 και υπολόγησε μια καινούργια τιμή χ2. Αλλά αυτή, ναι, τιμή χ2, ισχύει μόνο όσο η συνάρτηση είναι εν ζωή. Τελείωσε ο υπολογισμός, έπεσε σε ύπνο η συνάρτηση, πήγαμε στο κυρίως πρόγραμμα, άρα πλέον δεν υφίσταται τίποτα σε σχέση με ό,τι έκανε η συνάρτηση. Έτσι δεν είναι, αυτό δεν είπαμε. Τι υφίσταται, ότι ξέρει το κυρίως πρόγραμμα ή το περιβάλλον υπολογισμού μας από πριν. Τι ήξερε ότι ήταν το χ? Ένα. Καλέσε με τη συνάρτηση. Παρήχθη οποιαδήποτε έξοδος η οποία να ήρθε πίσω και να άλλαξε την τιμή του χ. Όχι. Τι είναι το χ πάλι? Ένα. Έχει ενδιαφέρον σε οδηγής εκαταστάσεις κρίσης. Το θέμα είναι πώς μπορείς να το αλλάξεις. Αυτό που μπορείς να κάνεις, ερώτημα. Αν θέλαμε να πηγαίνει δύο, θα έπρεπε να ανοίξουμε στην αρχή, ότι είναι οχ, χ, χ, 1. Είσαι ακριβώς εδώ που ήθελα να πάμε. Οπότε, πρώτα να σχολιάσω, λοιπόν, το εξής. Ότι η συνάρτησή μας, έτσι όπως είναι, μοιάζει με τις κουλικότρυπες στο σύμπαν, σύμφωνα με κάποια θεωρία. Δηλαδή, υπάρχει ένα σύμπαν, το σύμπαν της συνάρτησης. Υπάρχει και το σύμπαν του υπολογιστικού περιβάλλοντος. Αυτά τα δύο επικοινωνούν μεταξύ τους στη βάση ενός οχήματος. Το όχημα αυτό είναι οι μεταβλητές εξόδου. Εάν εμείς, εντός της συνάρτησης, δεν συμπεριλάβουμε μεταβλητές εξόδου, δεν υπάρχει περίπτωση επικοινωνίας. Δηλαδή, του σύμπαντος του Octave Math Lab, του workspace, όπως λέμε, του περιβάλλοντος εργασίας, ή ενός προγράμματος, πάλι εδώ βρίσκεται το πρόγραμμα, και του σύμπαντος της συνάρτησης, αυτό λοιπόν που εντοπίστηκε και ερωτήθηκε, πρέπει να απαντεθεί. Τι κάνουμε, εντάσσουμε στη συνάρτησή μας, μια συνάρτηση που πλέον, μια μεταβλητή, η οποία παίρνει έξοδο, παίρνει την ευθύνη της εξόδου. Τι θα κάνει λοιπόν η συνάρτησή μας, προσέξτε τώρα τι κάνει, υπολογίζει την τιμή της μεταβλητής εξόδου. Ορίσαμε εδώ τη μεταβλητή εξόδου Ψ, μάλιστα. Υπολογίζεται μια τιμή της εδώ, βεβαίως. Ποια είναι η τιμή της Ψ, θα είναι η Χ' συν 1. Και αυτή η Ψ επειδή είναι μεταβλητή εξόδου και μόνο αυτή, πετά μέσα από τη σκουλικότρυπα το αποτέλεσμα πίσω στο workspace του MATLAB. Οπότε λοιπόν, εάν τρέξουμε τώρα την ίδια διαδικασία, Χ δηλαδή στο υπολογιστικό περιβάλλον, ίσον 1, η κρίση του Χ και αναθέσουμε στο Χ το αποτέλεσμα της συνάρτησης, τότε θα δούμε ότι είναι το Χ ίσο με 2 πλέον. Διότι, ό,τι συνέβη εντός της συνάρτησης, μπορέσαμε να το κάνουμε να μεταφερθεί στο χώρο εργασίας. Αυτή λοιπόν ήταν η σημαντική διαφορά. Οπότε, εδώ επιτρέψτε μου να προσθέσω ένα δυο πράγματα και μετά να συζητήσουμε. Έχουμε αυτό που ονομάζουμε τοπική μεταβλητή. Κάθε μεταβλητή που χρησιμοποιείται εντός συνάρτησης, έχει το χαρακτήρα της τοπικής μεταβλητής. Έχει ισχύ και νόημα ύπαρξης στο παράλληλο σύμπαν της συνάρτησης. Δεν την γνωρίζει το άλλο σύμπαν του υπολογιστικού περιβάλλοντος. Δεν έχει ιδέα. Ο μόνος τρόπος, ξαναλέω, για να πάει το αποτέλεσμα του παράλληλου σύμπαντος στο σύμπαν που καλεί τη συνάρτηση, είναι μέσω του οχήματος των μεταβλητών εξόδου. Βεβαίως, επειδή όλα αυτά ήταν γνωστά εδώ και καιρό, υπάρχουν και οι λεγόμενες καθολικές μεταβλητές. Είναι σαν τους ήρωες στις αντίστοιχες ταινίες επιστημονικής φαντασίας, που μπορούν να περάσουν προς πάσα κατεύθυνση από κάθε σκουλικότρυπα. Έτσι και εδώ έχουμε μεταβλητές που μπορούμε να τις ορίσουμε από την αρχή να είναι καθολικές, να μπορούν να στέκονται και να έχουν ύπαρξη παντού. Εμείς όμως εδώ, και εγώ προσωπικά αλλά και γενικά και οι υπόλοιποι εμπλεκόμενοι στο μάθημα, δεν θέλουμε να εμπλακείται με αυτές τις μεταβλητές. Λειτουργούν, ειδικά για αυτών που ξεκινά να προγραμματίζει τώρα, περισσότερα προβλήματα από τα προβλήματα που τυχόν λύνει. Άρα λοιπόν, εγκυκλοπεδικά είναι καλό να γνωρίζετε ότι υπάρχουν, πρακτικά είναι καλό να ξεχάσετε ότι υφίστανται και να μην τις χρησιμοποιείτε ποτέ. Οπότε λοιπόν, για εσάς, για εμάς, θα το δείτε πλέον, δεν υφίστανται καθολικές μεταβλητές. Λήξεις. Τελεία. Δεν θα τις χρησιμοποιήσουμε. Αυτό δε το τμήμα του σύμπαντος, η περιοχή του σύμπαντος, στην οποία είχε νόημα η μεταβλητή, ονομάζεται εμβέλια της μεταβλητής. Υπάρχουν λοιπόν οι συμπαντικές μεταβλητές που είναι οι καθολικές μεταβλητές, υπάρχουν οι τοπικές μεταβλητές που είναι αυτές που ορίζουμε σε συναρτήσεις, σε προγράμματα και υπολογιστικά περιβάλλοντα. Ερωτήσεις εδώ, τώρα, να δούμε. Από πίσω προς τα μπροστά. Αν αφήναμε να χάσουμε το στόχο κρίσης 1, αφήναμε να χάσουμε κρίση 2 και μετά να χάσουμε κρίση 3, μπορούμε να κάνουμε κρίση 3 κατευθείαν. Βεβαίως. Με συναρτή συσφύγεια, άμα πήγαμε για είσοδο, αφήναμε να κάνουμε τελεία, μπορούμε να κάνουμε στοιχείο-στοιχείο. Όχι, όχι. Όχι, διότι ο υπολογισμός δεν γίνεται τελεία-τελεία. Το θέμα είναι να γίνεται υπολογισμός, συγγνώμη, στοιχείο-στοιχείο. Πρέπει να αλλάξουμε, ρώτησε εδώ στην άδελφό σας, αν εγώ δώσω εδώ, σαν είσοδο, αυτό εδώ. Ονοματίσω το R, το διάνισμα R, τη μέσα από 1% και του πω, δώσε μου, σε παρακαλώ, το σφαίρα του R τελεία. Τι θα παραχθεί? Ένα μήνυμα λάθος θα παραχθεί, θα το δοκιμάσεις αυτό. Και αυτό που θέλεις, δηλαδή το να γίνει ο υπολογισμός στοιχείο-στοιχείο, δεν θα υλοποιηθεί και θα γίνει μόνο εάν αλλάξουμε το περιεχόμενο της συναρτήσης, έτσι ώστε όντως οι πράξεις να οριστούν ότι γίνονται στοιχείο-στοιχείο. Άρα ούτε εδώ μπορούμε να βάλουμε τελεία, ελεύθερο να δούμε στη συναρτήση. Βεβαίως, γι' αυτό και αλλάξαμε την δομή της συναρτήσης ουσιαστικά, έτσι. Για να συνοψήσουμε λοιπόν, τι είδαμε. Είδαμε σήμερα τελικά, αφενώς, μια διαδικασία επίλυσης που ελπίζω ότι κατέστησε αρκετά σαφή τον σκοπό του να κάνουμε επιμελή σχεδίαση, μοντελοποίηση και μεταβηματική υλοποίηση του αλγορίθμου. Είδαμε την ανάγκη, όταν επαναλαμβάνονται διαδικασίες, να ανατίθενται σε αυτόνομα προγράμματα, τα οποία θα λαμβάνουν είσοδο και θα παράγουν έξοδο. Και είναι οι συναρτήσεις μας. Παρατηρήσαμε ότι χωρίς παραμέτρους εξόδου, ό,τι και αν κάνουν εσωτερικά, δεν μεταφέρεται. Βέβαια, να ρωτήσω εδώ το εξής. Το γράφημα πώς παρήχθη. Δηλαδή, θυμίζω ότι στο παράδειγμα της βολής του μπάσκετ φτιάξαμε μια συναρτήση η οποία δημιουργεί ένα γράφημα. Μα εκεί δεν υπήρχε παράμετρος εξόδου. Τότε το γράφημα πώς εμφανίζεται στο κυρίως υπολογιστικό περιβάλλον. Χρειαζόμαστε. Δεν εσείς, είναι κάτι που... Απλή απάντηση. Δηλαδή, όπως λέει ο συναδεφός σας, η συναρτήση εκείνη δεν είχε εντολή εξόδου, διότι χρησιμοποιεί μια εγγενή συναρτήση, η οποία παράγει εξοδισμού έξοδο στο περιβάλλον εργασίας. Δεν το παράγει στο παράλληλο σύμπαν. Σημαντικό. Την προσοχή σας παρακαλώ εδώ. Προσέξτε τι κάναμε εκεί. Είχαμε εδώ τη συναρτήση που έκανε το πλωτάρισμα της βολής στο μπάσκετ, σωστά. Εμείς όμως το γράφημα το βλέπαμε πού? Στο κανονικό, σε εισαγωγικά σύμπαν. Πώς συνέβη αυτό? Πώς μεταφέρθηκε? Ποιο ήταν το όχημα μεταφοράς? Εδώ αυτό που συνέβη είναι το εξής. Όπως θα θυμάστε, στο παράλληλο αυτό σύμπαν, χρησιμοποιήθηκε η συναρτήση πλωτ για την κατασκευή του γραφήματος. Η συναρτήση πλωτ στέλνει το αποτέλεσμά της πάντα εδώ, όπου και να χρησιμοποιείται. Και αυτό βέβαια σημαίνει κάτι άλλο. Αν έχω εδώ μία συναρτήση, θέτω το εξής ερώτημα προς εσάς. Αν έχω εδώ μία συναρτήση, η οποία καλεί μία άλλη συναρτήση, η οποία καλεί μία άλλη συναρτήση, η οποία παίρνω το σακάκι μου και φεύγω, καλεί μία άλλη συναρτήση, τότε αυτή η αλυσίδα κλήσεων πρώτα απ' όλα είναι ρεαλιστική. Μπορώ να έχω συναρτήσεις που η μία να καλεί την άλλη. Τι λέτε. Φυσικά, όπως λένε και οι κυρίες εδώ μπροστά, όπως είχα μία συναρτήση που έφτιαξε ο χρήστης, και η οποία χρησιμοποιεί εγγενείς συναρτήσεις, άρα χρησιμοποίησε μία άλλη συναρτήση, έτσι μπορώ να έχω και δεύτερη και τρίτη και τέταρτη. Ωραία. Τελευταία στοιχεία. Είδαμε ότι οι μεταβλητές είναι αόρατες για το κυρίως πρόγραμμα και ότι η χρήση διανισμάτων εισόδου συνεπάγεται κατάλληλη διαμόρφωση των πράξεων. Και στο τέλος της σημερινής ημέρας, πρακτικά κάποια ενημέρωση, έχω ελέγξει την χρήση των κουίζ. Πρέπει να σας πω ότι έχω τη δυνατότητα να δω ποιος μπαίνει πότε στο κουίζ, πόση ώρα μένει, τι κάνει και τα λοιπά. Τα σύγχρονα υποδοχιστικά συστήματα είναι παράξενα. Έτσι. Λοιπόν, τα κουίζ έχουν η ημερομηνία έντρεξης και λήξης. Εάν θέλετε μπορώ να τα κρατήσω περισσότερο ανοιχτά. Συνήθως είναι ανοιχτά μόνο για μία εβδομάδα. Έτσι. Λοιπόν, το πρώτο κουίζ το είδαν 46 άτομα. Το δεύτερο κουίζ το είδαν 10. Έτσι. Στο πρώτο είμαστε πιο περίεργοι. Από ό,τι μπορέσα να δω, οι βιντεοδιαλέξεις γενικά χρησιμοποιούνται αρκετά. Κάποιες είναι πολύ πιο δημοφιλείς από κάποιες άλλες, κάποια από εσάς βρήκατε τρόπο να δείτε και όλες τις βιντεοδιαλέξεις του μαθήματος από την αρχή, δεν πειράζει αυτό. Πάντως, συνεχίστε παρακαλώ να τα χρησιμοποιείτε. Η λογική μας είναι ότι είμαστε εδώ, συζητούμε, βλέπετε πόσα ερωτήματα γύρονται. Με ζεστά τα ερωτήματα πηγαίνουμε στα εργαστήρια, βλέπουμε βιντεοδιαλέξεις, κάνουμε δοκιμές στο σπίτι, οπουδήποτε αλλού. Πάμε στα κουίζ για να ελέγξουμε τις γνώσεις μας. Στα εργαστήρια θυμίζει ότι δεν μπορούμε να κάνουμε αλλαγές μεταξύ ομάδων. Σήμερα δε, θα δείτε ότι στις ομάδες τις υφιστάμενες, δεν αφορά τους περισσότερους, περισσότερες από εσάς, θα προστεθεί και ένας αριθμός φοιτητών μεγαλύτερων ετών. Και έτσι θα φτάσουμε τον αριθμό των 200 φοιτητών. Να θυμίσω ότι η πρωτοεκτήση εγκεγραμμένη στο μάθημα είσαστε 197, ότι στα εργαστήρια εμφανίστηκαν 170, δεν ξέρουμε που είναι η υπόλοιπη 27, και για αυτό το λόγο έχουμε 30 θέσεις διαθέσιμες, που με νύχια και με δόντια της τέλος πάντων, φέτος μπορέσαμε να τις δημιουργήσουμε για φοιτητές μεγαλύτερων ετών, στους οποίους δίδατε δυνατότητα με προτεραιότητα σε αυτούς που για κάποιους λόγους δεν μπόρεσαν να παρακολουθήσουν ποτέ τα εργαστήρια. Επίσης, το πρώτο θέμα έχει αναρτηθεί. Υπάρχει λοιπόν η εκφώνηση online και υπάρχει και το αρχείο που θα κατεβάσετε, θέλω να σας πω δύο-τρία πράγματα για αυτό. Κατεβάζεται ένα αρχείο συμπιεσμένο μέσα στο οποίο θα βρείτε 7 m-file. Κάθε m-file φέρει ως τίτλο, το τίτλο κάθε μιας από τις 7 ασκήσεις που έχει το θέμα. Εσείς θα πρέπει να ανοίξετε το κάθε m-file και να γράψετε τις απαντήσεις σας εκεί όπου λέει κάπου «γράψτε τις απαντήσεις σας κάτω από εκεί» ή κάπου σας λέει «μην γράψετε τίποτα κάτω από αυτή τη γραμμή». Οπότε υπάρχει ένα συγκεκριμένο σημείο στο οποίο θα γράψετε τις απαντήσεις σας, όποιες και αν είναι. Η πρώτη ασκήση είναι πολύ απλή. Σας λέμε «δημιουργήστε παράμετρο α, όπου α ήσον 3 εις την 2 εις την 5». 3 εις την 2 εις την 5. Έτσι, το γράφω εκεί, ως αν να το πληκτρολογούσα στην γραμμή εντολών. Έτσι θα χειριστείτε το κάθε αρχείο, θα το ολοκληρώσετε λοιπόν σιγά σιγά με τις απαντήσεις σας. Ήδη κάποιες απαντήσεις μπορείτε να τις δώσετε. Αυτή τη στιγμή που μιλούμε λοιπόν, δεν μπορείτε να λύσετε και τις 7 ασκήσεις πιθανότατα. Και είναι λογικό, διότι η τελευταία, για παράδειγμα, άσκηση είναι ένα πρόγραμμα. Έτσι, και ακόμη δεν έχετε ασκηθεί σε αυτό. Όμως τις πρώτες ασκήσεις μπορείτε να τις λύσετε. Αν δεν είστε λοιπόν να λύνετε από τώρα, θα πρέπει στο τέλος τα 7 ασκήσεις, να τα κάνετε πάλι ένα αρχείο zip. Και να τα ανεβάσετε στο e-class και αυτό να το κάνετε μέχρι τις 23 και 59 της 30 Μαρτίου. Γιατί, διότι αυτή έχει καθοριστεί ως η ημερομηνία και η ώρα που θα κλείσει αυτόματα το σύστημα. Μην κάνετε το λάθος που έχουν κάνει οι συμφιντητές σας σε προηγούμενα χρόνια, όπου περίμεναν μέχρι το τελευταίο 5 λεπτο ή 10 λεπτο. Πρώτα απ' όλα, δεν έχετε το ίδιο, είπαμε ότι ο μηχανικός σε τι πιστεύει, στο νόμο του Μέρφη. Ό,τι νομίζουμε ότι δεν θα πάει στραβά, θα πάει στραβά. Αν νομίζουμε ότι ό,τι πήγε στραβά, πήγε στραβά και δεν μπορεί να πάει τίποτα πλέον στραβά, μαύρο φίδι που μας έφαγε. Δεν έχετε τον ίδιο χρόνο με τον σερβέρ και δεν ξέρετε ποια είναι η ώρα για τον σερβέρ, που το εγώ ξέρω. Μπορεί εκείνη την ώρα το σύστημα να καθυστερεί επειδή θα έχει πάνω του 200 χρήστες. Άρα, φροντίστε πρακτικά. Όταν θα έχετε έτοιμες κάποιες λύσεις, κάντε σπακέτο, ανεβάστετε για δική σας εξάσκηση. Την επόμενη φορά που θα ανεβάσετε αρχείο λύσεων, το παλιό αρχείο σας σβήνεται. Κάθε φορά να ξέρετε ότι ένα αρχείο αναχρήστη θα μείνει. There can be only one, όπως υπόστηκε σε κάποια ταινία επιστημονικής φαντασίας. Το τελευταίο αρχείο. Το τελευταίο αρχείο λοιπόν θα μείνει, άρα ανεβάζετε εσείς την πορεία τα αρχεία σας ώστε στο τέλος να έχετε ανεβάσει το τελευταίο πλήρες αρκετή ώρα πριν την τελική ημερομηνία με άνεση ώστε όταν οι υπόλοιποι καθυστερημένοι αγωνιούν, εσείς να πίνετε καφεδάκι ή να κάνετε κάτι άλλο. Την επόμενη Τρίτη.