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. Ενημέρωση για τα διαδικαστικά και το περιεχόμενο των εξετάσεων. |