1 3/10/2022 Διαδικαστικά θέματα. Γενικά περί υπολογιστών. Γενικά περί προγραμματισμού υπολογιστών. Κάποια υπολογιστικά προβλήματα. Έκδοση των αποτελεσμάτων των πανελληνίων εξετάσεων, υπολογισμός αθροισμάτων απείρων όρων, τραπεζικές διαδικασίες, πρόγνωση καιρού.
2 7/10/2022 Συζήτηση για το πρόβλημα της έκδοσης των αποτελεσμάτων των πανελληνίων εξετάσεων στις εκδοχές του που μπορεί ένας μαθητής να έχει διαφορετικές βαθμολογίες για τα διάφορα τμήματα που έχει δηλώσει στο μηχανογραφικό του, αλλά και για την περίπτωση ισοβαθμιών που οδηγούν σε καθ' υπέρβαση εισαγωγή των μαθητών.
3 10/10/2022 Και άλλα υπολογιστικά προβλήματα. Έλεγχος λήψης πτυχίου. Εκκαθάριση οφειλόμενου φόρου. Έκδοση λογαριασμών τηλεφωνίας, ενέργειας και ύδρευσης. Εκλογικά αποτελέσματα και exit polls. Κρατήσεις αεροπορικών εισιτηρίων. Κατασκευή ωρολογίου προγράμματός μαθημάτων και προγράμματος εξετάσεων. Πώς μαθαίνεται ο προγραμματισμός. Η δομή του υπολογιστή. Η πληροφορία στον υπολογιστή. Δυαδικό σύστημα αρίθμησης. Συστήματα αρίθμησης (δεκαδικό, δυαδικό, οκταδικό, δεκαεξαδικό) και μετατροπές αριθμών μεταξύ αυτών.
4 14/10/2022 Οργάνωση κύριας και δευτερεύουσας μνήμης. Αναπαράσταση αρνητικών αριθμών στον υπολογιστή. Συμπλήρωμα ως προς δύο. Αναπαράσταση αριθμών κινητής υποδιαστολής (πραγματικών) στον υπολογιστή. Λογισμικό και γλώσσες προγραμματισμού. Προβλήματα για α) την εύρεση αλγορίθμου αναποδογυρίσματος πιτών, β) την εύρεση του πλήθους των διαδρομών Manhattan από ένα σημείο ορθογωνίου πλέγματος σε άλλο, και γ) την εύρεση της θέσης σε ορθογώνιο πλέγμα που έχει ελάχιστη συνολική απόσταση Manhattan από δεδομένα σημεία του πλέγματος.
5 17/10/2022 Τι χρειαζόμαστε από μία γλώσσα προγραμματισμού. Πώς κατασκευάζουμε εκτελέσιμο πρόγραμμα. Η διαδικασία της μεταγλώττισης και σύνδεσης. Προγραμματιστικά περιβάλλοντα για την C. Παραδείγματα χρήσης του gcc. Επίδειξη προγραμματιστικών περιβαλλόντων (terminal/WSL/PuTTY - command line, Dev-C++, VS Code) μέσω live προγραμματισμού. Πρόβλημα για την εύρεση της βέλτιστης διαδρομής Manhattan σε πλέγμα με κόστη στις ακμές.
6 21/10/2022 Το πρώτο πρόγραμμα στη C (helloworld.c). Πρόγραμμα υπολογισμού του π (picomp.c).
7 24/10/2022 Συνέχεια με το πρόγραμμα υπολογισμού του π (picomp.c). Πρόγραμμα υπολογισμού της ημερομηνίας του Πάσχα (easter.c). Επίδειξη επίλυσης προβλημάτων μέσω live προγραμματισμού. Εύρεση διαιρετών αριθμών και βελτίωση της χρονικής απόδοσης της μεθόδου. Τελεστές αριθμητικής σύγκρισης και λογικοί τελεστές.
8 (έκτακτο μάθημα) 26/10/2022 Συνέχεια με επίδειξη επίλυσης προβλημάτων μέσω live προγραμματισμού. Εύρεση αθροίσματος διαιρετών αριθμών και βελτίωση της χρονικής απόδοσης της μεθόδου. Περί ελαττωματικών, άφθονων και τέλειων αριθμών.
9 (έκτακτο μάθημα) 27/10/2022 Συνέχεια με επίδειξη επίλυσης προβλημάτων μέσω live προγραμματισμού. Εύρεση πλήθους ελαττωματικών αριθμών σε δεδομένο διάστημα. Περαιτέρω βελτίωση της χρονικής απόδοσης της μεθόδου για την εύρεση του αθροίσματος διαιρετών αριθμών. Εύρεση ταπεινών αριθμών σε δεδομένο διάστημα. Έλεγχος αν δεδομένος αριθμός είναι πρώτος. Εύρεση πρώτων αριθμών σε δεδομένο διάστημα και βελτιώσεις της χρονικής απόδοσης της μεθόδου. Εύρεση πρώτων παραγόντων δεδομένου αριθμού.
- 28/10/2022 Αργία εθνικής εορτής. Δεν έγινε μάθημα.
10 31/10/2022 Συνέχεια με επίδειξη επίλυσης προβλημάτων μέσω live προγραμματισμού. Παραγοντοποίηση αριθμών σε δεδομένο διάστημα. Εύρεση αριθμών ελεύθερων-τετραγώνου σε δεδομένο διάστημα. Αλγοριθμική βελτίωση της εύρεσης του αθροίσματος διαιρετών αριθμών μέσω της παραγοντοποίησής τους και εφαρμογή της στην εύρεση του πλήθους ελαττωματικών αριθμών σε δεδομένο διάστημα. Ανακοίνωση 1ης εργασίας και επεξηγήσεις επ' αυτής.
- 4/11/2022 Δεν έγινε μάθημα λόγω απουσίας του διδάσκοντα.
11 7/11/2022 Περί πινάκων στην C. Πρόγραμμα κατασκευής μαγικού τετραγώνου 5x5 (magic.c). Συζήτηση για την 1η εργασία.
12 11/11/2022 Περί εισόδου και εξόδου χαρακτήρων. Συναρτήσεις getchar και putchar. Παραδείγματα χρήσης των συναρτήσεων αυτών. Πρόγραμμα μετατροπής πεζών χαρακτήρων στην είσοδο σε κεφαλαίους (capitalize.c).
13 14/11/2022 Μεταβλητές και τύποι δεδομένων στην C. Δηλώσεις και αρχικοποιήσεις μεταβλητών. Προσδιοριστές unsigned, signed και const. Εντολές αντικατάστασης, τελεστές και παραστάσεις. Αριθμητικοί τελεστές. Μετατροπές τύπων. Μοναδιαίοι τελεστές αύξησης και μείωσης. Τελεστές σύγκρισης και λογικοί τελεστές. Συνθήκες ως παραστάσεις και αντίστροφα. Τελεστές πράξεων με bit.
14 18/11/2022 Τελεστές αντικατάστασης. Παραστάσεις υπό συνθήκη. Προτεραιότητες τελεστών. Διαδικασία γέννησης τυχαίων αριθμών στην C. Συναρτήσεις time, srand και rand. Πρόγραμμα υπολογισμού Μ.Κ.Δ. και Ε.Κ.Π. (gcdlcm.c). Ροή ελέγχου στην C. Εντολή if. Εντολή switch. Εντολές βρόχου while. Εντολή βρόχου for. Εντολές break και continue. Εντολή goto και ετικέτες. Ανακοίνωση 2ης εργασίας.
15 21/11/2022 Δομή προγραμμάτων C. Συναρτήσεις. Ορισμός συναρτήσεων. Τυπικές παράμετροι. Επιστρεφόμενες τιμές. Πρωτότυπο συνάρτησης. Πρόγραμμα ύψωσης σε δύναμη (powers.c). Πρόγραμμα υπολογισμού παραγοντικού (factorial.c). Εμβέλεια και χρόνος ζωής μεταβλητών. Τοπικές (αυτόματες) μεταβλητές. Εξωτερικές μεταβλητές. Προσδιοριστές extern και static. Επίλυση ενδεχομένων συγκρούσεων ονομάτων μεταβλητών. Στατικός χώρος φύλαξης εξωτερικών μεταβλητών. Στοίβα για φύλαξη τοπικών μεταβλητών.
16 25/11/2022 Αναδρομικές συναρτήσεις. Πρόγραμμα υπολογισμού παραγοντικού με αναδρομή (recfact.c). Επίδειξη εκτέλεσης αναδρομικής συνάρτησης μέσω της στοίβας. Πρόγραμμα μετατροπής αριθμών από το δυαδικό στο δεκαδικό σύστημα και αντίστροφα (convdecbin.c). Συνάρτηση getinteger. Εύρεση όρων ακολουθίας Fibonacci με αναδρομικό τρόπο.
17 28/11/2022 Εύρεση όρων ακολουθίας Fibonacci με επαναληπτικό τρόπο. Εκτύπωση δυαδικής αναπράστασης ακεραίου αριθμού με επαναληπτικό και αναδρομικό τρόπο. Οργάνωση εφαρμογών σε πηγαία αρχεία και αρχεία επικεφαλίδας. Περί δεικτών. Τελεστές έμμεσης αναφοράς και διεύθυνσης μνήμης. Παραδείγματα χρήσης δεικτών.
18 2/12/2022 Συνέχεια με τους δείκτες. Κλήσεις συναρτήσεων με δείκτες στα ορίσματα. Περί ανάγνωσης ακεραίων (και όχι μόνο). Συνάρτηση scanf. Πίνακες. Διάσταση πινάκων. Σχέση πινάκων και δεικτών. Πέρασμα μονοδιάστατων πινάκων σαν ορίσματα σε συναρτήσεις. Πρόγραμμα κατασκευής ιστογράμματος συχνότητας εμφάνισης χαρακτήρων στην είσοδο (histogram.c). Δυναμική δέσμευση μνήμης. Συνάρτηση malloc. Συνάρτηση free. Τελεστής sizeof. Συνάρτηση realloc.
19 5/12/2022 Συνάρτηση calloc. Πίνακες με παραμετρική διάσταση. Συμβολοσειρές. Συναρτήσεις strlen, strcpy, strcmp και strcat για συμβολοσειρές. Υλοποιήσεις βασικών συναρτήσεων για διαχείριση συμβολοσειρών. Πίνακες δεικτών και δείκτες σε δείκτες.
20 9/12/2022 Ορίσματα γραμμής εντολών. Συνάρτηση atoi. Πολυδιάστατοι πίνακες. Πέρασμα πολυδιάστατων πινάκων σαν ορίσματα σε συναρτήσεις. Δυναμική δέσμευση πολυδιάστατων πινάκων. Αρχικοποίηση πινάκων. Απαριθμήσεις. Δείκτες σε συναρτήσεις. Πρόγραμμα διαχείρισης ορισμάτων στη γραμμή εντολής (cmdlineargs.c). Πρόγραμμα πρόσθεσης πολυψηφίων αριθμών (addnumbs.c). Ανακοίνωση 3ης εργασίας.
21 12/12/2022 Δομές. Δηλώσεις δομών και μεταβλητών τύπου δομών. Επιτρεπτές λειτουργίες με δομές. Τελεστές . και ->. Παραδείγματα χρήσης δομών και δεικτών σε δομές. Πρόγραμμα εύρεσης τριγώνων μεγίστου και ελαχίστου εμβαδού (triangles.c).
22 16/12/2022 Αυτο-αναφορικές δομές. Συνδεδεμένες λίστες. Δυαδικά δέντρα. Ταξινομημένα δυαδικά δέντρα. Δημιουργία νέων ονομάτων τύπων (εντολή typedef). Ενώσεις. Πεδία bit. Πρόγραμμα διαχείρισης συνδεδεμένων λιστών (listmanagement.c).
23 19/12/2022 Συνέχεια με το πρόγραμμα διαχείρισης συνδεδεμένων λιστών (listmanagement.c). Υλοποίηση εύρεσης μήκους λίστας με επαναληπτικό και αναδρομικό τρόπο. Εναλλακτική υλοποίηση εισαγωγής στοιχείου στην αρχή λίστας. Πρόγραμμα διαχείρισης δυαδικών δέντρων (treemanagement.c). Πρότυπη βιβλιοθήκη εισόδου/εξόδου της C. Προκαθορισμένα ρεύματα (stdin, stdout και stderr). Ανακατεύθυνση πρότυπης εισόδου και πρότυπης εξόδου. Σωληνώσεις. Συναρτήσεις getchar, putchar, puts, gets, fopen και fgets.
24-25 23/12/2022 Συνέχεια με τις συναρτήσεις της πρότυπης βιβλιοθήκης εισόδου/εξόδου της C. Συναρτήσεις printf, scanf, fclose, feof, getc, putc, ungetc, fprintf, fscanf, sprintf, sscanf, fread, fwrite, fseek, ftell, fflush και perror. Πρόγραμμα αντιγραφής αρχείων (filecopy.c). Πρόγραμμα εκτύπωσης γραμμών εισόδου με αντίστροφη σειρά (revinput.c). Ο προεπεξεργαστής της C. Οδηγία #include. Οδηγία #define. Μακροεντολές. Επίλυση του προβλήματος εύρεσης του πλήθους των διαδρομών Manhattan από ένα σημείο ορθογωνίου πλέγματος σε άλλο με αναδρομικό τρόπο, με απομνημόνευση και αναδρομή και με δυναμικό προγραμματισμό. Επίλυση του προβλήματος εύρεσης βέλτιστης διαδρομής Manhattan από ένα σημείο ορθογωνίου πλέγματος σε άλλο με αναδρομικό τρόπο και με δυναμικό προγραμματισμό. Συζήτηση για την 3η εργασία. Ανακοίνωση 4ης εργασίας.
26 9/1/2023 Συνέχεια με τις οδηγίες προς τον προεπεξεργαστή. Μεταγλώττιση υπό συνθήκη. Οδηγίες #if, #else, #elif, #endif, #ifdef και #ifndef. Ταξινόμηση πινάκων. Γενικά περί πολυπλοκότητας αλγορίθμων. Μέθοδοι ταξινόμησης πινάκων. Η μέθοδος της φυσαλίδας. Η μέθοδος της επιλογής. Η μέθοδος της εισαγωγής. Η γρήγορη μέθοδος. Μέθοδοι ταξινόμησης της συγχώνευσης και του Shell. Πρόγραμμα επίδειξης μεθόδων ταξινόμησης (sorting.c).
27 13/1/2023 Αναζήτηση σε πίνακες. Σειριακή αναζήτηση και δυαδική αναζήτηση. Μέθοδος ταξινόμησης του σωρού. Πρόγραμμα επίδειξης μεθόδων αναζήτησης σε πίνακες (searching.c). Επιθυμητά χαρακτηριστικά ενός προγράμματος C. Συχνά προγραμματιστικά λάθη στην C. Ενημέρωση για τα διαδικαστικά και το περιεχόμενο των εξετάσεων.