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