Εισαγωγή στον Προγραμματισμό - Ακ. έτος 2024-25 (CEID_22Υ103)
Διάλεξη 2ης Εβδομάδας Βασικές έννοιες - Μέρος 2ο)
Ξεκινήσαμε τη σημερινή διάλεξη με έναν σχολιασμό πάνω στον στόχο της 1ης εβδομάδας. Σχολιάσαμε το πόσο εφικτός ήταν ο στόχος που βάλαμε και το αν τον πετύχαμε. Τα στοιχεία του eclass δείχνουν πως οι περισσότεροι πέτυχαν τον στόχο. Παρουσιάστηκαν και συζητήθηκαν τα δεδομένα που μας οδήγησαν στο συμπέρασμα αυτό. Όσοι από εσάς δεν έκαναν πιθανότατα αυτό οφείλεται στο ότι δεν αξιοποίησηαν τα εργαλεία που σας δόθηκαν για τον σκοπό αυτό (δες Εργαστήριο 1ης εβδομάδας (Απολογισμός-Επίλυση προβλημάτων)). Επαναλάβαμε για μία ακόμη φορά πως «Η δική σας ενεργή συμμετοχή είναι απαραίτητη»
Κλείσαμε την παρένθεση σχολιασμού της 1ης εβδομάδας με την αναφορά στο αντικείμενο της 1ης εβδομάδας και δώσαμε την οργάνωση της σημερινής παρουσίασης.
Έτσι περάσαμε στο 2o Μέρος της ενότητας Βασικές Έννοιες (I2P_BasicConceptsPartB-UPDATED.pdf) . Περιγράψαμε τη μετατροπή της λεκτικής περιγραφής της add2Numbers σε πηγαίο κώδικα και μέσα από τη διαδικασία αυτή αναφέραμε πολύ βασικές έννοιες της γλώσσας προγραμματισμού όπως μεταβλητή, τύπο δεδομένων, τελεστής και έκφραση. Xρησιμοποιήσαμε την μεταβλητή για να δεσμευσουμε χώρο στην μνήμα για να βάλει εκεί η scanf τον αριθμό που θα πάρει από την βασική είσοδο (stdin, πληκτρολόγιο).
Με βάση τις νέες αυτές έννοιες αναπτύξαμε μαζί στο DevCpp, σε διαδοχικούς κύκλους ανάπτυξης (incremental development), την πρώτη έκδοση του προγράμματος add2Numbers (Add2NumbersV1.pdf). Χρησιμοποιήσαμε τους τελεστές + (διεργασία πρόσθεσης) και = (διεργασία ανάθεσης τιμής).
Συνεχίσαμε με την ενότητα που έχει στόχο την αξιοποίηση της αφαιρετικότητας στις διεργασίες στον πηγαίο κώδικα. Δώσαμε σε σχήμα (slides 19,20) την αφαιρετική αναπαράσταση της διεργασίας που μας δίνει τη δυνατότητα να εντοπίσουμε και να καταγράψουμε τα βασικά συνθετικά μιας διεργασίας που είναι το όνομα ( Ορίζει το τι κάνει η διεργασία), η περιγραφή (Ορίζει το πως το κάνει), οι είσοδοι που δέχεται και οι έξοδοι που παράγει. Συνεχίσαμε με την δημιουργία της πρώτης δικής μας συνάρτησης, της getNumber() την οποία χρησιμοποιούμε στην 2η έκδοση της Add2Numbers. Μέσα από τη διαδικασία αυτή είδαμε τη σημασία των: δήλωση συνάρτησης, ορισμό συνάρτησης, κλήση συνάρτησης. Αναπτυξαμε μαζί στο devCpp την 2η έκδοση της Add2Numbers η οποία χρησιμοποιεί την συνάρτηση getNumber(). Τονίσαμε πως η getNumber() δεν δέχεται ορίσματα (void) αλλά επιστρέφει τιμή στην συνάρτηση που την κάλεσε και για τον λόγο αυτό πρέπει να ορίσουμε στη δήλωση της τον τύπο της τιμής που επιστρέφει (int για την περίπτωση μας).
Συνεχίσαμε με την αξιοποίηση μιας άλλης δικής μας συνάρτησης που την ονομάσαμε sum() και την θέλουμε για να προσθέτουμε 2 αριθμούς. Είπαμε πως την συνάρτηση αυτή δεν έχει νόημα να την κάνουμε στην πράξη αλλά την αξιοποιούμε μόνο και μόνο για να δούμε την έννοια των ορισμάτων που δέχεται μια συνάρτηση και το πως αυτά την καθιστούν σε συνδυασμό με την επιστρεφόμενη τιμή επαναχρησιμοποιήσιμη (reusable). Ενσωματώσαμε την sum() στην 2η έκδοση της Add2Numbers. Ολοκληρώσαμε με τον τρόπο αυτό την 2η έκδοση της Add2Numbers (Add2NumbersV2.pdf).
Είδαμε στη συνέχεια δύο παραδείγματα ανάθεσης έργου στον Τοτό. Η πρώτη αναφέρεται στην ακολουθία αριθμών με το όνομα hailstone sequence. Είναι φυσικό ο Τοτός να μην γνωρίζει τον τρόπο εκτέλεσης του έργου αυτού και να θέλει Λεκτική Περιγραφή. Δώσαμε τη λεκτική περιγραφή σε 3 εκδοχές και σχολιάσαμε τα μειονεκτήματα των 2 πρώτων.
Με την 3η έκδοση της λεκτικής περιγραφής ήμαστε έτοιμοι να περάσουμε στη διαδικασία μετατροπής της σε πηγαίο κώδικα. Ο χρόνος δεν μας το επέτρεψε και αφήσαμε τη συνέχεια για την άλλη βδομάδα.
Οι έννοιες που δώσαμε είναι πολλές, είναι καινούργιες και πολύ πιθανόν δύσκολες για εσάς. Χρειάζεται χρόνος για να τις εμπεδώσετε και κυρίως την δική σας θέληση να το πετύχετε. Το φροντιστήριο και το εργαστήριο αυτής της εβδομάδας θα συνεισφέρουν στην κατανόηση του υλικού αυτού. Αξιοποιήστε τα αποτελεσματικά για να κατανοήσετε τις έννοιες και να τις αξιοποιήσετε στην ανάπτυξη των προγραμμάτων σας.
Είναι σημαντικό για εμάς να έχουμε μια εικόνα για το πόσο βατό και κατανοητό είναι το υλικό αυτής της εβδομάδας ώστε να το λάβουμε υπόψιν για τη συνέχεια. Θέλουμε να δούμε ποια είναι τα προβλήματα που συναντήσατε ώστε να τα αντιμετωπίσουμε. Στην περιοχή συζητήσεων έχετε τη δυνατότητα να αναφέρετε τα προβλήματα αυτά (Προβλήματα στην επίτευξη του στόχου της 2ης εβδομάδος).
Σχόλια (2)