Εισαγωγή στον Προγραμματισμό - Ακ. έτος 2024-25 (CEID_22Υ103)
Διάλεξη 3ης Εβδομάδας (Βασικές έννοιες - Μέρος 3ο)
Ξεκινήσαμε την 3η διάλεξη με μια αναφορά στα αντικείμενα που παρουσιάστηκαν την 2η Εβδομάδα χρησιμοποιώντας ως βάση την ΕΑ-2 add2Numbers (I2P_WeekAgenda_3.pdf slides 8-10). Αυτό ως κίνητρο για να εκφράσετε τις τυχόν απορίες σας πάνω σε αυτά. Κάναμε μια αναφορά στο παραδοτέο της 2ης εβδομάδας στο οποίο δεν πήγατε καλά, παρά το γεγονός ότι είχαμε καλύψει τις απαντήσεις σε όλα τα ερωτήματα στις διαλέξεις και το φροντιστήριο και, ίσως το πιο σημαντικό, όλες οι απαντήσεις είναι στις διαφάνειες στο eclass. Επιπλέον με βάση τα παραδοτέα της εργασίας της 2ης ομάδας Εργαστηρίου μόνο οι μισοί από εσάς παρέδωσαν μια έκδοση της add2Numbers που ικανοποιεί τις απαιτήσεις όλων των δράσεων, και αυτό ενώ είχατε τον πηγαίο κώδικα στην διάθεση σας. Επαναλάβαμε για μία ακόμη φορά πως «Θέλει πολύ δουλειά!»
Κλείσαμε την παρένθεση με την αναφορά στο αντικείμενο της 1ης εβδομάδας και δώσαμε την οργάνωση της σημερινής παρουσίασης (I2P_WeekAgenda_3.pdf slide 11).
Στη συνέχεια περάσαμε στο 3ο Μέρος της σειράς διαφανειών Βασικές έννοιες (I2P_BasicConceptsPartC.pdf). Ξεκινήσαμε με μια αναφορά στο πως ο Τοτός εκτέλεσε την τιμωρία που του έβαλε η δασκάλα του αξιοποιώντας τη διαδικασία ανάπτυξης προγράμματος και την πρόταση επανάληψης for, την σημασία της οποίας δώσαμε.
Στη συνέχεια τονίσαμε τη σημασία της αφαιρετικοτητας στην διαδικασία ανάθεσης έργου στην μηχανή χρησιμοποιώντας το παράδειγμα Fibonacci Numbers. Δώσαμε το computer hardware model και είδαμε την μορφή περιγραφής της διεργασίας υπολογισμού Fibonacci Numbers σε γλώσσα μηχανής και σε assembly. Μορφές στις οποίες είναι σχεδόν αδύνατο να εκφράσουμε τη διεργασία. Θέλουμε πιο human readable και αφαιρετική αναπαράσταση και δώσαμε μια πιο αφαιρετική αναπαράσταση από την Λεκτική Περιγραφή. Η αναπαράσταση αυτή καταγράφει τις εισόδους και τις εξόδους της διεργασίας και μας βοηθά αργότερα στον εντοπισμό των πρώτων μεταβλητών του προγράμματος. Με βάση αυτή την αναπαράσταση αναθεωρήσαμε τη διαδικασία ανάπτυξη προγράμματος (slide 15) και τονίσαμε πως αυτή θα είναι η διαδικασία που θα ακολουθούμε στη συνέχεια σε κάθε άσκηση.
Στη συνέχεια εφαρμόσαμε την ανανεωμένη διαδικασία για την ανάπτυξη του προγράμματος FibonacciNumbers. Δώσαμε ένα πρώτο πηγαίο κώδικα και σχολιάσαμε εναλλακτικές υλοποιήσεις, τις οποίες θα πρέπει να δουλέψετε. Η πρώτη αυτή έκδοση (FibonacciNumbersV1.pdf) βασίζεται στην επιλογή μας να τυπώνει το σύστημα τον κάθε όρος της ακολουθίας μετά τον υπολογισμό του, η οποία μας επιτρέπει να έχουμε μια μεταβλητή για την έξοδο της διεργασίας, την cTerm (currentTerm). Επιμείναμε στον τρόπο οργάνωσης του αποθηκευτικού χώρου που πρέπει να χρησιμοποιείτε για τους σκοπούς του εργαστηρίου. Αυτό θα πρέπει να τηρηθεί ευλαβικά από το εργαστήριο αυτής της εβδομάδας.
Μια άλλη επιλογή στην διαχείριση της εξόδου της διεργασίας «Εμφάνισε n όρους της ακολουθίας
Fibonacci» είναι να υπολογίζονται πρώτα όλοι οι όροι και στη συνέχεια να τυπώνονται. Αυτό ήταν το κίνητρο για να κάνουμε μια εισαγωγή στους πίνακες της C, και στη συνέχεια να αξιοποιήσουμε την κατασκευή του Πίνακα για να δώσουμε μια δεύτερη έκδοση του προγράμματος FibonacciNumbers (FibonacciNumbersV2.pdf). Αυτή μας έδωσε τη δυνατότητα να δούμε κάποια πολύ βασικά πλεονεκτήματα του πίνακα.
Στη συνέχεια κάναμε πάλι μια αναφορά στην add2Numbers σε συνδυασμό με την ανανεωμένη διαδικασία ανάπτυξης προγράμματος και είδαμε πως ο Τοτός αξιοποίησε το ChatGPT για να αναπτύξει το πρόγραμμα add2Numbers. Το μήνυμα είναι πως μπορείτε να αξιοποιήσετε την ΑΙ στην διαδικασία εξοικείωσης με τον προγραμματισμό αλλά πάντα ελεγχόμενα.
Η διεργασία ως επαναχρησιμοποιήσιμη μονάδα λειτουργικότητας και η συνάρτησης που μας επιτρέπει να περιγράφουμε διεργασίες στο πρόγραμμα μας ως αυτόνομες επαναχρησιμοποιήσιμες μονάδες κώδικα ήταν το επόμενο αντικείμενο μας. Χρησιμοποιήσαμε τις συναρτήσεις sum και max για να δώσουμε βασικές προτάσεις που μας επιτρέπουν α) επαναλαμβανόμενη εκτέλεση ενός συνόλου προτάσεων (πρόταση επανάληψης for) και β) εκτέλεση προτάσεων εάν μια συνθήκη είναι αληθής ή ψευδής (πρόταση if else).
Το τελευταίο αντικείμενο του 3ου μέρους των βασικών εννοιών είναι το πρόγραμμα average. Είδαμε τη διαδικασία ανάπτυξης για την επιλογή να διαβάζουμε τον αριθμό και αμέσως μετά να ενημερώνουμε το άθροισμα. Σχολιάσαμε με βάση τον κώδικα που δίνεται στις διαφάνειες σημεία που θα πρέπει να προσέξουμε όπως η ανάγκη δήλωσης της μεταβλητής avg ως float και την χρήση του κατάλληλου προσδιοριστή για την εμφάνιση της τιμής μιας μεταβλητής τύπου float. Σχολιάσαμε επίσης την πρόταση υπολογισμού του μέσου όρου και το τι πρέπει να προσέξουμε σε αυτή. Η πρόταση αυτή μας έδωσε την αφορμή να αναφέρουμε την έννοια της μετατροπής τύπου (type conversion) και τον τρόπο που την επιβάλει ο προγραμματιστής στο σύστημα. Είδαμε επίσης μια εναλλακτική υλοποίηση με την πρόταση επανάληψης while. Δεν προλάβαμε να τα δούμε αυτά στο DevCpp (θα το κάνετε στο φροντιστήριο).
Ο χρόνος δεν μας επέτρεψε να δούμε πως θα αξιοποιήσουμε συνάρτηση στο πρόγραμμα average που είναι και αυτό αντικείμενο του Εργαστηρίου αυτής της εβδομάδας.
Το υλικό είναι αρκετό και η προσεκτική μελέτη των διαφανειών είναι επιτακτική για την επιτυχή εκτέλεση του εργαστηρίου και γενικά για την επίτευξη του στόχου της 3ης εβδομάδας.
Τετάρτη 17/10
Κατά τη διάρκεια του Φροντιστηρίου της Τετάρτης δώσαμε την αφαιρετική αναπαράσταση της διεργασίας Υπολογισμός μέσου όρου (άσκηση Average), δώσαμε τη λεκτική περιγραφή και στη συνέχεια δημιουργήσαμε ένα προτζεκτ για την έκδοση 1 της Average (το βάλαμε στον κατάλογο AvarageV1) και δώσαμε βήμα προς βήμα τον κώδικα (AverageV1.pdf). Στη συνέχεια περάσαμε στην έκδοση 2. Κάναμε ένα αντίγραφο του καταλόγου του προτζεκτ της 1ης έκδοσης (το ονομάσαμε AverageV2) και δουλέψαμε την 2η έκδοση πάνω σε αυτό. Η 2η έκδοση βασίζεται στην αξιοποίηση της συνάρτησης average η οποία υπολογίζει και επιστρέφει τον μέσο όρο πίνακα ακεραίων (AverageV2.pdf). Δώσαμε την δήλωση, τον ορισμό και εξηγήσαμε γιατί επιλέξαμε αυτόν τον τρόπο δήλωσης της.
Σχόλια (2)