Διδακτικό Υλικό

Βιβλιογραφία

Για το μάθημα σας παρέχεται ένα από τα παρακάτω διδακτικά βοηθήματα:
  1. Η γλώσσα προγραμματισμού C, B. W. Kernighan, D. M. Ritchie, Εκδόσεις ΚΛΕΙΔΑΡΙΘΜΟΣ.
  2. Η τέχνη και επιστήμη της C, E. S. Roberts, Εκδόσεις ΚΛΕΙΔΑΡΙΘΜΟΣ.
  3. C για μηχανικούς, H. H. Tan, T. B. D' Orazio, Εκδόσεις ΤΖΙΟΛΑ.

 

Πρόσθετο Διδακτικό Υλικό

Μπορείτε να κατεβάσετε τα προγράμματα του βιβλίου «Η τέχνη και επιστήμη της C» σε μορφή zip πατώντας εδώ.

 

Προγράμματα σε C

Πρόγραμμα το οποίο βρίσκει μία λύση στο λεγόμενο «Πρόβλημα των n βασιλισσών». Το «Πρόβλημα των n βασιλισσών» μας ζητά να τοποθετήσουμε σε μία n-επί-n σκακίερα n βασίλισσες ώστε καμία βασίλισσα να μην χτυπά κάποια άλλη.
Tο πρόγραμμα αυτό συζητήθηκε στη διάλεξη της 11 Μαΐ 2009.
Στο zip αρχείο που σας δίνεται υπάρχουν τρία αρχεία. Στο αρχείο QueueADT.h υπάρχουν οι συναρτήσεις της αφηρημένης δομής δεδομένων (abstract data type) ουράς. Στο αρχείο QueueListCDT.c υπάρχει η υλοποίηση της ουράς χρησιμοποιώντας απλά συνδεδεμένη λίστα. Τέλος στο αρχείο test_queue.c γίνεται ενδεικτική χρήση της αφηρημένης δομής δεδομένων ουράς, χωρίς καμία γνώση του τρόπου υλοποίησής της.
Η συνάρτηση main υπάρχει στο αρχείο test_queue.c προκειμένου να δημιουργήσετε τα αντίστοιχα object files. Για να τρέξετε το πρόγραμμα χρειάζεται να μεταγλωττίσετε τα δύο αρχεία .c ξεχωριστά και στη συνέχεια να τα συνδέσετε (link) τα δύο object files που δημιουργήθηκαν με τη μεταγλώττιση.
Γενίκευση του προηγούμενου προγράμματος (πρόγραμμα: sort_using_function_values.c), υπό την έννοια ότι τα στοιχεία του πίνακα των doubles ταξινομούνται χρησιμοποιώντας συνάρτηση σύγκρισης της μορφής
int (*cmp)(double, double)
Η συνάρτηση αυτή δίνεται στον αλγόριθμο ταξινόμησης ως δείκτης σε συνάρτηση. Στο πρόγραμμα υλοποιούνται τρεις τέτοιες συναρτήσεις-παραδείγματα.
Γενίκευση του προηγούμενου προγράμματος (πρόγραμμα: recursive_sort.c), υπό την έννοια ότι τα στοιχεία του πίνακα των doubles ταξινομούνται βάσει των τιμών τους σε μία συνάρτηση. Η συνάρτηση αυτή δίνεται στον αλγόριθμο ταξινόμησης ως δείκτης σε συνάρτηση. Στο πρόγραμμα υλοποιούνται τρεις τέτοιες συναρτήσεις-παραδείγματα.
Πρόγραμμα στο οποίο υλοποιείται αναδρομικά ένας πολύ απλός αλγόριθμος ταξινόμησης των στοιχείων ενός πίνακα με doubles σε αύξουσα σειρά. Ο αλγόριθμος βρίσκει το μέγιστο στοιχείο του πίνακα και το ανταλλάσει με το τελευταίο στοιχείο του πίνακα, ενώ στη συνέχεια ταξινομεί αναδρομικά το υπόλοιπο του πίνακα (τα στοιχεία του πίνακα πλην του τελευταίου).
Πρόγραμμα στο οποίο υπάρχει η υλοποίηση του αλγορίθμου δυαδικής αναζήτησης σε έναν ταξινομημένο (σε αύξουσα σειρά) πίνακα από doubles, καθώς και παραδείγματα χρήσης/κλήσης του αλγορίθμου αυτού.
Πρόγραμμα στο οποίο γίνεται χρήση των δεικτών σε συναρτήσεις. Πιο συγκεκριμένα, δείχνουμε πώς είναι δυνατόν να υπολογίσουμε μία συνάρτηση στα στοιχεία ενός πίνακα (συνάρτηση: apply) μέσω δεικτών συναρτήσεων, χωρίς να είναι εκ των προτέρων γνωστή η υλοποίηση της συνάρτησης που θέλουμε να υπολογίσουμε.
Πρόγραμμα το οποίο δεδομένου ενός πίνακα ακεραίων αριθμών βρίσκει με αναδρομικό τρόπο το πλήθος των στοιχείων του πίνακα που ικανοποιούν κάποια συνθήκη. Η συνθήκη δίνεται με τη μορφή δείκτη σε συνάρτηση της μορφής
bool (*select)(int)
Η συνάρτηση επιστρέφει true αν το στοιχείο ικανοποιεί τη συνθήκη, αλλιώς false. Στο πρόγραμμα-παράδειγμα που σας δίνεται έχουν υλοποιηθεί και χρησιμοποιούνται δύο τέτοιες: μία που διαλέγει ζυγούς ακεραίους (συνάρτηση: is_even) και μία που διαλέγει περιττούς (συνάρτηση: is_odd) ακεραίους.
Πρόγραμμα το οποίο δεδομένου ενός πίνακα ακεραίων αριθμών βρίσκει το πλήθος των μηδενικών στοιχείων στον πίνακα με αναδρομικό τρόπο.
Πρόγραμμα που διαβάζει φορμαρισμένα (με τη συνάρτηση fscanf) δεδομένα για τα 10 πρώτα στοιχεία του περιοδικού πίνακα στοιχείων και τα εκτυπώνει με φορμαρισμένο τρόπο στην οθόνη. Το πρόγραμμα αυτό διαβάζει τα δεδομένα του από το αρχείο elements.dat. Για να μεταγλωττίσετε το πρόγραμμα αυτό χρειάζεται να χρησιμοποιήσετε τη βιβλιοθήκη του βιβλίου «Η τέχνη και επιστήμη της C».
Tο πρόγραμμα αυτό συζητήθηκε στη διάλεξη της 9 Μαρ 2009.
Πρόγραμμα που μετατρέπει τα περιεχόμενα ενός αρχείου από lowercase σε uppercase (από μικρά σε κεφαλαία).
Tο πρόγραμμα αυτό συζητήθηκε στη διάλεξη της 9 Μαρ 2009.
Πρόγραμμα που αντιγράφει ένα αρχείο σε ένα άλλο. Το πρόγραμμα χρησιμοποιεί τα command-line arguments για το αρχείο εισόδου και το αντίγραφό του.
Πρόγραμμα που αντιγράφει ένα αρχείο σε ένα άλλο. Το πρόγραμμα ζητάει τα δύο αρχεία από τον χρήστη.
Tο πρόγραμμα αυτό συζητήθηκε στη διάλεξη της 6 Μαρ 2009.
Πρόγραμμα που εκτυπώνει στην οθόνη τα command-line arguments του.
Tο πρόγραμμα αυτό συζητήθηκε στη διάλεξη της 6 Μαρ 2009.
Πρόγραμμα που εκτυπώνει στην οθόνη τα περιεχόμενα ενός αρχείου κειμένου.
Tο πρόγραμμα αυτό συζητήθηκε στη διάλεξη της 4 Μαρ 2009.
Πρόγραμμα με συνάρτηση που παραθέτει δύο αλφαριθμητικά. Το αποτέλεσμα της παράθεσης καταχωρείται σε μνήμη που δεσμεύθηκε δυναμικά.
Tο πρόγραμμα αυτό συζητήθηκε στη διάλεξη της 23 Φεβ 2009.
Πρόγραμμα που υλοποιεί τη συνάρτηση split_to_words η οποία δεδομένου ενός αλφαριθμητικού που περιέχει λέξεις που χωρίζονται από ένα χαρακτήρα κενού, επιτρέφει τις λέξεις σε πίνακα αλφαριθμητικών ο οποίος έχει δεσμευθεί δυναμικά.
Το πρόγραμμα αυτό συζητήθηκε στη διάλεξη της 23 Φεβ 2009.

 

Χρήσιμα links