Κεφάλαιο Πέµπτο: Η Εξάσκηση 1. Γενικά Η εξάσκηση στο Εργαστήριο προϋποθέτει τη γνώση των εντολών (τουλάχιστον) τις οποίες καλείται ο σπουδαστής κάθε φορά να εφαρµόσει. Αυτές παρέχονται µέσω της Θεωρίας αλλά και καλύπτονται (κατ ελάχιστον) και από την ύλη του προηγούµενου κεφαλαίου. Η εξάσκηση στο Εργαστήριο είναι υποχρεωτική, µε την εγγραφή του ρυθµίζεται και το πρόγραµµα του σπουδαστή. Οι σπουδαστές θα πρέπει να ασχολούνται και µε τις τρία (3) θέµατα τα οποία δίνονται κάθε φορά στα εργαστήρια. Σε περίπτωση κατά την οποία δεν προλαβαίνουν να τις ολοκληρώσουν µπορούν να ζητήσουν τη βοήθεια των διδασκόντων στα διαλείµµατα ή κατά την παράδοση της Θεωρίας. Η εξάσκηση στο Εργαστήριο προβλέπεται µέσω δέκα (10) ασκήσεων, συν δύο () ακόµα στις οποίες πραγµατοποιούνται οι εγγραφές και οι εξετάσεις στο Εργαστήριο. Οι δύο () ακόµα ασκήσεις συνήθως καλύπτονται από τα συνδικαλιστικά δικαιώµατα των σπουδαστών και τις απουσίες τις οποίες µπορούν να κάνουν. Όµως, η επαφή µε τα θέµατα του προγραµµατισµού πρέπει να είναι συνεχής ώστε να µην δηµιουργούνται προβλήµατα προς τις εξετάσεις οι οποίες διεξάγονται µία (1) φορά το εξάµηνο. ρ. Γιώργος - Πέτρος Κ. Οικονόµου 55
ρ. Γεώργιος-Πέτρος Οικονόµου 56
. Οι Ασκήσεις ΑΣΚΗΣΗ 1 ΕΙΣΑΓΩΓΙΚΕΣ ΕΝΝΟΙΕΣ - ΜΕΘΟ ΟΣ ΕΡΓΑΣΙΑΣ 1.1 Να γράψετε όλα τα γράµµατα του αγγλικού αλφαβήτου, τους αριθµούς και τα σύµβολα +, -, *, /, () στο περιβάλλον της γλώσσας προγραµµατισµού Fortran. 1. Να γραφεί, να αποσφαλµατωθεί και να εκτελεσθεί το ακόλουθο πρόγραµµα: print *,* Geia soy` 1.3 Να γραφεί, να αποσφαλµατωθεί και να εκτελεσθεί ένα πρόγραµµα όπου θα τυπώνονται τρεις (3) τιµές αριθµών και να τυπώνονται µε κατάλληλα µηνύµατα (π.χ. πρώτο = η τιµή του ). ρ. Γεώργιος-Πέτρος Οικονόµου 57
ΑΣΚΗΣΗ ΤΥΠΟΙ ΜΕΤΑΒΛΗΤΩΝ - ΣΥΝΑΡΤΗΣΕΙΣ ΒΙΒΛΙΟΘΗΚΗΣ.1 Να γραφεί πρόγραµµα για τον υπολογισµό της συνολικής σταθεράς του Hook δύο () ελατηρίων τα οποία έχουν σταθερές k 1 και k, όταν συνδεθούν σε σειρά ή παράλληλα. Οι τύποι οι οποίοι περιγράφουν τη συνολική σταθερά (ανάλογα µε τη συνδεσµολογία), ακολουθούν: 1 kσειράς 1 1 + k1 k = και k παράλληλα = k1 + k.. Να γραφεί πρόγραµµα το οποίο να µετατρέπει τις καρτεσιανές συντεταγµένες των σηµείων του χώρου (i, j, και k) στις αντίστοιχες κυλινδρικές και σφαιρικές: Ακολουθούν οι τύποι: i c = i + j i s = i + j + k j k c c = tan 1 ( j / i) = k και j k s s = tan = cos 1 1 ( j / i) ( k / i + j + k )..3 Να γραφεί πρόγραµµα το οποίο να υπολογίζει τα παρακάτω για a = TRUE. και b =.FALSE.: a.and.b a.or.b.not.a (a.and.(.not.b)).or.((.not.a).and.b) ((.NOT.a).OR.(.NOT.b)).AND.(a.OR.b) ρ. Γεώργιος-Πέτρος Οικονόµου 58
ΑΣΚΗΣΗ 3 ΕΝΤΟΛΕΣ ΕΙΣΟ ΟΥ - ΕΞΟ ΟΥ 3.1 Να γραφεί πρόγραµµα το οποίο να διαβάζει από το πληκτρολόγιο και να τυπώνει την ακτίνα r (σε εκατοστά) και την ακτίνα δακτυλίου b (σε εκατοστά) ενός τόρου. Κατόπιν, να υπολογίζει και να τυπώνει τον όγκο v(cm 3 ) και το εµβαδόν της επιφάνειάς του e(cm ), σύµφωνα µε τις σχέσεις: 1 e = π ( r b ) και v = π ( r + b)( r b), όπου π = 3.141597. 4 Η εκτύπωση των τιµών να γίνει µε κατάλληλη χρήση της εντολής FORMAT. 3. Να γραφεί πρόγραµµα για τον υπολογισµό του µέσου όρου της βαθµολογίας τριών (3) µαθηµάτων ενός σπουδαστή. Το πρόγραµµα θα διαβάζει από το πληκτρολόγιο το βαθµό του κάθε µαθήµατος, του εργαστηρίου και το συνολικό συντελεστή βαρύτητας του κάθε µαθήµατος. Η θεωρία και το εργαστήριο του µαθήµατος είναι ισοδύναµα. Να υπολογίζεται ο συνολικός βαθµός του κάθε µαθήµατος καθώς και ο µέσος όρος των µαθηµάτων αν δεν ίσχυαν οι συντελεστές βαρύτητας. Η εκτύπωση των τιµών να γίνει µε κατάλληλη χρήση της εντολής FORMAT: να αφήνεται ένας (1) χαρακτήρας από την αρχή, να τυπώνονται οι αριθµοί µε ένα µήνυµα (π.χ. πρώτο = η τιµή του ), να προβλεφθούν δύο () ακέραια και δύο () δεκαδικά ψηφία γι αυτούς και να µεσολαβούν τρεις (3) κενοί χαρακτήρες µεταξύ τους. Οι βαθµοί των µαθηµάτων και οι υπολογιζόµενοι µέσοι όροι αυτών να τυπώνονται σε διαφορετικές γραµµές. 3.3 Να γραφεί πρόγραµµα το οποίο να διαβάζει από το πληκτρολόγιο το όνοµα, το επώνυµο και το εξάµηνό σας, τις τιµές των µεταβλητών ι, j, a, b, x και y και στη συνέχεια να υπολογίζει το z: z = e 3 a + b + a * sin 1 i ( x y 1000 int( x + 3 y) log j ) 1 + 1 + cos( i + 10 10 x y j). Στο τέλος, να τυπώνει τα εξής: ΟΝΟΜΑ : το όνοµά σας, ΕΠΩΝΥΜΟ : το επώνυµό σας, ΕΞΑΜΗΝΟ : το εξάµηνό σας i = η τιµή j = η τιµή a = η τιµή (κλασσική µορφή πραγµατικού αριθµού) x = η τιµή y = η τιµή z = το αποτέλεσµα (εκθετική µορφή πραγµατικού αριθµού). ρ. Γεώργιος-Πέτρος Οικονόµου 59
ΑΣΚΗΣΗ 4 ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ της ΡΟΗΣ του ΠΡΟΓΡΑΜΜΑΤΟΣ 4.1 Να γραφεί πρόγραµµα το οποίο το οποίο να υπολογίζει αν ένα έτος, το οποίο δίνεται από το πληκτρολόγιο, είναι δίσεκτο, σύµφωνα µε τους ακόλουθους κανόνες: 1. Αν διαιρείται µε το τέσσερα (4), µπορεί να είναι δίσεκτο, αλλοιώς δεν είναι δίσεκτο.. Αν ισχύει το (1) ΚΑΙ διαιρείται και µε το εκατό (100), δεν είναι δίσεκτο. 3. Αν ισχύουν τα (α) και (β) ΚΑΙ διαιρείται και µε το τετρακόσια, είναι δίσεκτο. Μετά τον υπολογισµό και την αναγραφή του αποτελέσµατος, το πρόγραµµα να ξαναρχίζει από την αρχή αν πατηθεί το 1 στο πληκτρολόγιο. Σε αντίθετη περίπτωση να τερµατίζει τη λειτουργία του. 4. Να γραφεί πρόγραµµα το οποίο αφού διαβάσει την τιµή των ανεξάρτητων µεταβλητών a, b και c της δευτεροβάθµιας εξίσωσης από το πληκτρολόγιο, να υπολογίζει τις ρίζες της. ίνεται ο τύπος: a x + b x + c = 0. 4.3 Να γραφεί πρόγραµµα για τον υπολογισµό των 1000 πρώτων όρων των παρακάτω σειρών. Σε παρένθεση δίνεται η θεωρητική τιµή σύγκλισης της κάθε µίας. Σε κάθε βήµα υπολογισµού να τυπώνονται στην ίδια γραµµή: (α) ο αριθµός του βήµατος, (β) η τρέχουσα τιµή των r 1, r, και r 3 : r = 1 + + 3 +... ( ), 1 1 1 r = 1 +... (ln( )), 3 1 1 1 1 r = + + +... ( ). 3 1 3 3 5 5 7 ρ. Γεώργιος-Πέτρος Οικονόµου 60
ΑΣΚΗΣΗ 5 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ 5.1 Να γραφεί πρόγραµµα το οποίο α) να τυπώνει την προπαίδεια για έναν οποιονδήποτε αριθµό ο οποίος θα δίνεται από το πληκτρολόγιο, β) τον πυθαγόρειο πίνακα των δέκα πρώτων ακεραίων αριθµών. Στην εκτύπωση να εµφανίζεται όχι µόνο το αποτέλεσµα αλλά και το ζεύγος των πολλαπλασιαζοµένων αριθµών, ώστε να ξεχωρίζουν οι πολλαπλασιαστέοι και το αποτέλεσµα. 5. Ένας τόρνος κατασκευάζει σπειρώµατα µε σφάλµα βήµατος το οποίο αυξάνει κατά 5% κάθε χρόνο. Ο χειριστής του αποφασίζει να µην τον επισκευάσει µέχρι το σφάλµα να παραµείνει µικρότερο από το 98% µιας µέγιστης τιµής. Η τιµή αυτή για τρία είδη σπειρωµάτων είναι 1.,.3 και 3. και την πρώτη µέρα λειτουργίας το σφάλµα για το καθένα ήταν ίσο µε 0.75, 1.8 και.5, αντίστοιχα. Να γραφεί πρόγραµµα στη το οποίο να υπολογίζει σε πόσα χρόνια κατά µέγιστο και για ποιο σπείρωµα θα πρέπει να γίνει η συντήρηση. 5.3 Να γραφεί πρόγραµµα το οποίο να υπολογίζει το αποτέλεσµα της ύψωσης πραγµατικού αριθµού (x) σε ακέραια δύναµη (n), δηλ. το (x n ). Οι αριθµοί x και n θα διαβάζονται από το πληκτρολόγιο. Να γίνει πρόβλεψη για το πρόσηµο του εκθέτη και να γίνει σύγκριση του αποτελέσµατος µε χρήση της ενσωµατωµένης εντολής ύψωσης σε δύναµη, την οποία διαθέτει η Fortran. ρ. Γεώργιος-Πέτρος Οικονόµου 61
ΑΣΚΗΣΗ 6 ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΕΙΚΤΕΣ (1/) 6.1 Να γραφεί πρόγραµµα το οποίο αφού διαβάσει από το πληκτρολόγιο τα στοιχεία ενός ακεραίου µονοδιάστατου πίνακα και ενός πραγµατικού πίνακα δύο () διαστάσεων (οι διαστάσεις να δίνονται επίσης από το πληκτρολόγιο και να ελέγχονται), να τους τυπώνει σωστά ώστε να φαίνονται σαν πίνακες. Τόσο η ανάγνωση όσο και η εκτύπωση του πίνακα δύο () διαστάσεων να πραγµατοποιηθεί και κατά γραµµές και κατά στήλες. 6. Να γραφεί και να εκτελεσθεί πρόγραµµα το οποίο να διαβάζει έναν αριθµό m από το πληκτρολόγιο, να τον ελέγχει και να δηµιουργεί και να τυπώνει σωστά (στην οθόνη) τους µοναδιαίο και µηδενικό πίνακες διάστασης m (I m, O m ), ώστε να φαίνονται σαν πίνακες (να τυπώνονται και κατά γραµµές και κατά στήλες). 6.3 Να γραφεί πρόγραµµα το οποίο αφού διαβάσει τα στοιχεία και τις διαστάσεις (τις οποίες και θα ελέγξει) δύο () πραγµατικών πινάκων δύο () διαστάσεων από το πληκτρολόγιο a(.,.) και b(.,.), να δηµιουργεί έναν πίνακα µε ίδιες διαστάσεις c(.,.) µε στοιχεία τα µέγιστα ή ίσα µεταξύ των στοιχείων των a(.,.) και b(.,.) στα αντίστοιχα µονά αθροίσµατα των συντεταγµένων θέσης του καθενός και τα ελάχιστα ή ίσα µεταξύ των στοιχείων των a(.,.) και b(.,.) στα αντίστοιχα ζυγά αθροίσµατα των συντεταγµένων θέσης του καθενός (από τα a(.,.) και b(.,.)). Οι τρεις (3) πίνακες να τυπώνονται σωστά ώστε να φαίνονται σαν πίνακες (να τυπώνονται και κατά γραµµές και κατά στήλες). ρ. Γεώργιος-Πέτρος Οικονόµου 6
ΑΣΚΗΣΗ 7 ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΕΙΚΤΕΣ (/) 7.1 Να γραφεί πρόγραµµα το οποίο αφού διαβάσει τη διάσταση (να ελεγχθεί) και τα στοιχεία ενός (1) ακεραίου τετραγωνικού πίνακα από το πληκτρολόγιο a(.,.), να τυπώνει το αποτέλεσµα της ύψωσης αυτού του πίνακα σε έναν ακέραιο θετικό αριθµό ο οποίος θα διαβάζεται επίσης από το πληκτρολόγιο (και θα ελέγχεται ως προς τις απαιτήσεις του προβλήµατος). 7. Να γραφεί πρόγραµµα το οποίο να συγκρίνει δύο () πραγµατικούς πίνακες δύο () διαστάσεων και να τυπώνει στην οθόνη αν είναι ίσοι. Οι πίνακες θα πρέπει να ορίζονται τόσο όσον αφορά στις διαστάσεις τους (να ελέγχονται κατά τα γνωστά), όσο και στα στοιχεία τα οποία θα περιέχουν, από το πληκτρολόγιο. Εννοείται πως είναι ίδιων διαστάσεων. 7.3 οθέντος ενός συνόλου n ζευγών πραγµατικών αριθµών (x(i), y(i)), i = 1,,..., n), τα οποία αντιστοιχούν σε n σηµεία στο επίπεδο X - Y, να υπολογισθούν οι συντελεστές a και b της ευθείας y = a + bx, µε την τεχνική των ελαχίστων τετραγώνων, σύµφωνα µε τον τύπο: n n n n x( i) y( i) x( i) y( i) i = 1 i = 1 i = 1 b =, n n n x( i) ( ) 1 x i i = 1 i = 1 a = n n y( i) b n x( i) i = 1 i = 1. Ο τύπος αυτός εφαρµόζεται για όλες τις ευθείες του επιπέδου; ρ. Γεώργιος-Πέτρος Οικονόµου 63
ΑΣΚΗΣΗ 8 ΣΥΝΑΡΤΗΣΕΙΣ ΧΡΗΣΤΗ 8.1 Να γραφεί πρόγραµµα για τον υπολογισµό της ηµεροµηνίας µιας ηµέρας στη µορφή ηµέρα - µήνας - έτος, όταν δίνεται (από το πληκτρολόγιο) η αριθµητική της µορφή (παρελθούσες ηµέρες από την 01/01 του έτους) καθώς και το ποια ηµέρα είναι η 01/01 (π.χ. ευτέρα κ.τ.λ.), µε τις κατάλληλες συναρτήσεις χρήστη (να προβλεφθεί η περίπτωση του δίσεκτου έτους). 8. Να γραφεί πρόγραµµα για τον υπολογισµό της διαφοράς (σε ηµέρες) δύο () ηµεροµηνιών οι οποίες ανήκουν στο ίδιο έτος και δίνονται από το πληκτρολόγιο (στη µορφή ηµέρα - µήνας) µε τις κατάλληλες συναρτήσεις χρήστη (να προβλεφθεί η περίπτωση του δίσεκτου έτους). 8.3 Να γραφεί πρόγραµµα το οποίο να διαβάζει από το πληκτρολόγιο ένα διάστηµα αριθµών (να ελέγχεται) και κατόπιν θα βρίσκει και θα τυπώνει το πλήθος των αριθµών οι οποίοι διαιρούνται ακριβώς µε τους αριθµούς 3, 4 και 5 (χωριστά). Ποιο πλήθος είναι το µεγαλύτερο; ρ. Γεώργιος-Πέτρος Οικονόµου 64
ΑΣΚΗΣΗ 9 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΧΡΗΣΤΗ 9.1 Να γραφεί πρόγραµµα το οποίο αφού διαβάσει τη διάσταση (να ελεγχθεί) και τα στοιχεία τριών (3) πραγµατικών τετραγωνικών πινάκων από το πληκτρολόγιο (κατά τα γνωστά) a(.,.), b(.,.) και c(.,.), να αποδεικνύει την ταυτότητα: A(BC) = (AB)C 9. Να γραφεί πρόγραµµα το οποίο να διαβάζει (και να ελέγχει) τις διαστάσεις n και m και τα στοιχεία ενός (1) πραγµατικού πίνακα a(n, m) από το πληκτρολόγιο. Έπειτα να βρίσκει το άθροισµα, το γινόµενο, το µεγαλύτερο και το µικρότερο στοιχείο κάθε γραµµής ή στήλης (επαναληπτικά για την κάθε µία), µε τη χρήση των κατάλληλων υποπρογραµµάτων. 9.3 Να γραφεί πρόγραµµα το οποίο να διαβάζει (και να ελέγχει) τις διαστάσεις n και m και τα στοιχεία ενός (1) πραγµατικού πίνακα a(n, m) από το πληκτρολόγιο. Έπειτα να ανταλλάσσει µία γραµµή ή µία στήλη του πίνακα µε µία άλλη γραµµή ή στήλη (του ίδιου πίνακα) τα οποία θα διαβάζονται από το πληκτρολόγιο (και θα ελέγχονται). ρ. Γεώργιος-Πέτρος Οικονόµου 65
ΑΣΚΗΣΗ 10 ΑΛΦΑΡΙΘΜΗΤΙΚΕΣ ΜΕΤΑΒΛΗΤΕΣ 10.1 Να γραφεί πρόγραµµα το οποίο να διαβάζει από το πληκτρολόγιο µία (1) αλφαριθµητική µεταβλητή το πολύ είκοσι έξι (6) θέσεων και να τυπώνει τον αριθµό των φωνηέντων τα οποία περιέχει. Στην αγγλική γλώσσα φωνήεντα λογίζονται οι χαρακτήρες a, e, i, o, u και y. 10. Να γραφούν οι κατάλληλες συναρτήσεις χρήστη οι οποίες να υλοποιούν τις συναρτήσεις val() και str$() όπως ισχύουν στη γλώσσα προγραµµατισµού Basic. Η πρώτη µετατρέπει κείµενο µε αριθµούς στην αρχή του σε αριθµητική τιµή αυτών, η δεύτερη αριθµούς σε κείµενο. 10.3 Να γραφεί πρόγραµµα το οποίο να ορίζει έναν µονοδιάστατο πίνακα κειµένου. Τόσο οι διαστάσεις όσο και τα στοιχεία του θα διαβάζονται (και θα ελέγχεται η διάσταση) από το πληκτρολόγιο. Στη συνέχεια, θα ελέγχεται για το αν περιέχει ένα συγκεκριµένο κείµενο το οποίο επίσης θα δίνεται από το πληκτρολόγιο και θα τυπώνει σε ποιες θέσεις του πίνακα βρέθηκε. ρ. Γεώργιος-Πέτρος Οικονόµου 66
ΑΣΚΗΣΗ 11 ΑΡΧΕΙΑ Ε ΟΜΕΝΩΝ 11.1 Να γραφεί πρόγραµµα το οποίο να διαβάζει από το πληκτρολόγιο το ονοµατεπώνυµό σας, µία λογική τιµή, έναν ακέραιο και έναν πραγµατικό αριθµό και να τα αποθηκεύει σε αρχεία δεδοµένων σειραϊκής και άµεσης προσπέλασης, µε µορφοποιηµένο και µη τρόπο. 11. Να γραφεί πρόγραµµα το οποίο να διαβάζει τα περιεχόµενα των πιο πάνω αρχείων δεδοµένων. 11.3 Να γραφεί πρόγραµµα το οποίο να διαβάζει τα περιεχόµενα των αρχείων τα οποία δηµιουργείτε στο εργαστήριο για την επίλυση των ασκήσεων. ρ. Γεώργιος-Πέτρος Οικονόµου 67
ΑΣΚΗΣΗ 1 ΓΕΝΙΚΗ ΕΠΑΝΑΛΗΨΗ 1.1 Να γραφεί πρόγραµµα το οποίο να λύνει το παρακάτω σύστηµα των τριών (3) εξισώσεων στα διαστήµατα ακεραίων αριθµών [ 5, 5], j [ 50, 50], k [ 100, 100] i. i + j + k = 1 i j = 40. j k = 1. Να γραφεί πρόγραµµα το οποίο να διαβάζει αριθµούς από το πληκτρολόγιο, να τους (κατα)µετρά, να υπολογίζει το µέσο όρο των θετικών και των αρνητικών αριθµών (ξεχωριστά) και να συγκρίνει τους µέσους όρους κατ απόλυτη τιµή. Να τυπώνει τα αποτελέσµατα αφήνοντας δύο () κενούς χαρακτήρες από την αρχή της οθόνης, κρατώντας οκτώ (8) ακέραια και τρία (3) δεκαδικά ψηφία για τον κάθε όρο και αφήνοντας τρεις (3) κενούς χαρακτήρες µεταξύ των όρων. Οι όροι θα αναφέρονται µε µία ονοµασία (π.χ. mot=...). Το δε πρόγραµµα θα ολοκληρώνεται όταν ο χρήστης πατήσει τον αριθµό -1 000 000 (ο οποίος και δεν θα υπολογίζεται στις παραπάνω πράξεις σαν αρνητικός αριθµός). 1.3 Να γραφεί πρόγραµµα στο οποίο να ορίζονται δύο () λογικοί πίνακες a(m) και b(m). Η διάσταση και τα στοιχεία των πινάκων να διαβάζονται από το πληκτρολόγιο (η διάσταση να ελέγχεται). Να ορίζονται τρίτος και τέταρτος λογικοί πίνακες c(m) και d(m), τα στοιχεία των οποίων θα προκύπτουν από τις λογικές πράξεις ΚΑΙ και Ή των αντίστοιχων στοιχείων των πινάκων a(.) και b(.). Όλες οι λειτουργίες επί των τεσσάρων (4) πινάκων να γίνεται µέσω της χρήσης κατάλληλων συναρτήσεων και υποπρογραµµάτων ρ. Γεώργιος-Πέτρος Οικονόµου 68