Διορθώσεις Συμπληρώσεις επί της επανεκτύπωσης 2003 της 2 ης έκδοσης του βιβλίου «Διαδικαστικός Προγραμματισμός C» Τα λάθη δίνονται με την σειρά που εμφανίζονται στο κείμενο. Καταγράφονται λάθη που εντοπίστηκαν μέχρι την 5/1/2009. Αποστείλατε επιπλέον λάθη στο: thrambo@ece.upatras.gr Σελίδα 27, footnote 1 Αντί για «Dennis Ritchie» να γραφεί «B. Kernighan» Σελίδα 63 const float pi = 3,14; const float pi = 3.14; Σελίδα 64 perimetros = 2 * 3,14 * radius; perimetros = 2 * 3.14 * radius; Σελίδα 71 Μετά την πρώτη παράγραφο να προστεθεί το παρακάτω κείμενο: Στο παράρτημα Γ του βιβλίου, στη σελίδα 484, θα βρείτε όλους τους προσδιοριστές που χρησιμοποιεί η συνάρτηση printf(). Στο τέλος της παραγράφου Εισαγωγή να προστεθεί το παρακάτω κείμενο: H scanf χρησιμοποιεί τους ίδιους προσδιοριστές με την printf. Προσέξτε τη διαφοροποίηση στην περίπτωση του πραγματικού αριθμού διπλής ακρίβειας. Σελίδα 75 Πριν από την παράγραφο Αποθήκευση να προστεθεί το παρακάτω κείμενο: Εισαγωγή Η εισαγωγή πραγματικού αριθμού γίνεται όπως και στην περίπτωση της μεταβλητής ακεραίου, με την διαφορά ότι χρησιμοποιείται ο προσδιοριστής %f για μεταβλητή τύπου float και ο προσδιοριστής %lf για μεταβλητή τύπου double. Αν η μεταβλητή d1 δηλωθεί ως double double d1; H πρόταση scanf("%lf",&d1); διαβάζει από την κύρια είσοδο σε μορφή κινητής υποδιαστολής διπλής ακρίβειας και αποδίδει την τιμή στην μεταβλητή d1. Κ. Θραμπουλίδης 1 7/1/2009
Σελίδα 77 static char d_ar[] = char d_ar[] = Σελίδα 78 Στην πρώτη (1) γραμμή το: Το γεγονός ότι οι δείκτες των στοιχείων ενός πίνακα ξεκινούν ( ) : Το γεγονός ότι η αρίθμηση της τάξης των στοιχείων ενός πίνακα ξεκινά ( ) Στην γραμμή 7 το: ( ) με τον αριθμό που δηλώνει το δείκτη τους. Έτσι το στοιχείο με δείκτη 0 (..) να αντικατασταθεί από το: ( ) με τον αριθμό που δηλώνει την τάξη τους. Έτσι το στοιχείο τάξης 0 (..) Ανάλογη διόρθωση ισχύει και για το υπόλοιπο της παραγράφου 3.8.3 όπου ο όρος δείκτης πρέπει να αντικατασταθεί από τον όρο τάξης Σελίδα 83 Στην δήλωση int ar[2][3] = { { 0, 1, 2} να προστεθεί στο τέλος ένα κόμμα (,)δηλαδή να γίνει int ar[2][3] = { { 0, 1, 2}, Σελίδα 92 char isbn str[] = char isbn[] = Σελίδα 99, Ασκηση 3.5 Το «Να αναπτυχθεί» να γίνει «Να ανατρέξετε» Σελίδα 123, Τελευταία παράγραφο της ενότητας 4.5.2 Συμπληρώστε την παρακάτω αναφορά στα παραδείγματα κώδικα που προηγούνται. «Μπορείτε επίσης να ανατρέξετε για το θέμα αυτό στην σελίδα 58 του προτύπου WG14/N843 Committee Draft -- August 3, 1998, Programming languages C» Σελίδα 153, στο τέλος της σελίδας Προστίθεται το παρακάτω κείμενο: Παραδείγματα εφαρμογής της αφαιρετικότητας στις διεργασίες. Για εξάσκηση στην εφαρμογή της αφαιρετικότητας στις διεργασίες εκτελέστε τις παρακάτω ασκήσεις Άσκηση 1 Συγγραφέας: Κλεάνθης Θραμπουλίδης 2 7/1/2009
Διαβάστε την περιγραφή της άσκησης 1 του κεφαλαίου 11 και καταγράψτε τις βασικές διεργασίες που πρέπει να εκτελέσει το σύστημα για να φέρει σε πέρας το ζητούμενο έργο. Εντοπίστε ποιες από αυτές υλοποιούνται από την βασική βιβλιοθήκη. Άσκηση 2 Διαβάστε την περιγραφή της άσκησης 4 του κεφαλαίου 11 και καταγράψτε τις βασικές διεργασίες που θα πρέπει να εκτελεί το σύστημα στα πλαίσια της άσκησης. Εντοπίστε ποιες από αυτές υλοποιούνται από την βασική βιβλιοθήκη. Άσκηση 3 Διαβάστε την περιγραφή της άσκησης 5 ου κεφαλαίου 11 και καταγράψτε τις βασικές διεργασίες που θα πρέπει να εκτελεί το σύστημα στα πλαίσια της άσκησης. Εντοπίστε ποιες από αυτές υλοποιούνται από την βασική βιβλιοθήκη. Επαναλάβατε για την άσκηση 6 του κεφαλαίου 11 Σελίδα 168 if ((ch = = \n) (ch == \t)) if ((ch = = \n ) (ch == \t )) Σελίδα 169 printf(.\n,sqrt(num)); printf(.\n,num,sqrt(num)); Σελίδα 208, στο πλαίσιο Ο όρος «Γενικές μεταβλητές» να αντικατασταθεί από τον πιο δόκιμο «Καθολικές μεταβλητές» Σελίδα 215, στο μέσον του σχήματος 7.6 Ο αριθμός 66 εμφανίστηκε από λάθος δεν έχει νόημα. Σελίδα 221, λιγο κάτω από το μέσον της σελίδας η πρόταση «q = 10;» να γίνει «*q = 10;» Σελίδα 259, στον πίνακα 8-1 Στην στήλη που δίνει την κατάσταση της στοίβας οι αριθμοί θα πρέπει να στοιχηθούν στην δεξιά πλευρά. Για παράδειγμα το 3 θα γίνει 3 και το 6 3 Συγγραφέας: Κλεάνθης Θραμπουλίδης 3 7/1/2009
θα γίνει 6 3 Σελίδα 271 Α) Ο όρος «αφαίρεση» Να αντικατασταθεί από τον πιο δόκιμο «αφαιρετικότητα» Β) Στην προτελευταία γραμμή της προτελευταίας παραγράφου Η έκφραση «στο δεύτερο μέρος του βιβλίου» «στο δεύτερο τόμο του έργου» Σελίδα 356, στην προτελευταία γραμμή η έκφραση «(size_t)max_elements» Να αντικατασταθεί από την «sizeof(num)/sizeof(int)» Σελίδα 363 1 Α) 11.5.1 Περιγραφή Να αντικατασταθεί η πρόταση «Να αναπτυχθεί σε C.Πολωνική σημειογραφία.» από την «Να αναπτυχθεί σε C ένα πρόγραμμα σύμφωνα με το οποίο το σύστημα θα δέχεται εκφράσεις που ακολουθούν την αντίστροφη Πολωνική σημειογραφία και θα υπολογίζει την τιμή τους.» Β) Έκδοση 1 Να διαγραφεί η λέξη «αυτή» Σελίδα 364 Αριθμήστε τις τέσσερεις πρώτες παραγράφους (ενέργειες) του Βήματος 2 όπως παρακάτω Η 1 η παράγραφος να γίνει 2.2b Η 2 η παράγραφος να γίνει 2.3 Η 3 η παράγραφος να γίνει 2.1 Η 4 η παράγραφος να γίνει 2.2a Εκτελέστε τις ενέργειες με την σειρά αρίθμησης τους δηλαδή 2.1, 2.2a, 2.2b, 2.3 Σελίδα 365, Ενέργεια 5.4 Η έκφραση «..μόνο τους τελεστέους» Να αντικατασταθεί από την «..μόνο τους τελεστές» Σελίδα 416 ΝΑΝD H στήλη που δίνει τις τιμές του O1 από «1 0 0 0» «1 1 1 0» 1 Η άσκηση 5 σας δίνεται διορθωμένη σε ηλεκτρονική μορφή στα πλαίσια του εργαστηρίου του μαθήματος Συγγραφέας: Κλεάνθης Θραμπουλίδης 4 7/1/2009
Σελίδα 417 Η «Δραστηριότητα 9.5» «Δραστηριότητα 9.3» Σελίδα 421 2 Ενέργεια 10.2 Η έκφραση «..για να αναπαραστήστε» «..για να αναπαραστήσετε» Σελίδα 426, Ενέργεια 10.11 Η έκφραση «τρείς πίνακες τους οποίους έχουν» «τρείς πίνακες οι οποίοι έχουν» Σελίδα 431, Ενέργεια 10.5 Η έκφραση board[1][2] board[1][1] Σελίδα 458 Ενότητα «8. Δείκτες (Pointers)» Λείπουν οι τίτλοι των στηλών του πίνακα. Ο πίνακας διαμορφώνεται όπως δίνεται παρακάτω Παραδείγματα δήλωσης (προχωρημένα) int *p = (int []){2, 4}; void f(void) { int *p; /*...*/ p = (int [2]){*p}; /*...*/ } Παραδείγματα αριθμητικής δεικτών { int n = 4, m = 3; int a[n][m]; int (*p)[m] = a; // p == &a[0] p += 1; // p == &a[1] (*p)[2] = 99; // a[1][2] == 99 n = p - a; // n == 1 } Η παρακάτω γραμμή (αμέσως πάνω από τον πίνακα) «Παραδείγματα δήλωσης (προχωρημένα) Παραδείγματα αριθμητικής δεικτών» εμφανίστηκε εκ παραδρομής, δεν έχει νόημα. 2 Η άσκηση 10 σας δίνεται διορθωμένη σε ηλεκτρονική μορφή στα πλαίσια του εργαστηρίου του μαθήματος Συγγραφέας: Κλεάνθης Θραμπουλίδης 5 7/1/2009