ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Οδηγός µελέτης Κεφάλαιο 9 : Βασικές εντολές Βασικές έννοιες Για κάθε µία από τις βασικές έννοιες του κεφαλαίου δίνονται παρακάτω το σηµείο όπου αναλύεται στο σχολικό βιβλίο καθώς και (αν υπάρχουν) οι ερωτήσεις που αναφέρονται σ αυτή. Σε κάθε περίπτωση πέρα από τα σηµεία που επισηµαίνονται εδώ θα πρέπει να µελετήσετε συνολικά την ύλη του κεφαλαίου µε τα παραδείγµατα και τις επεξηγήσεις που δίνονται. Η µελέτη αυτού του κεφαλαίου προτείνεται να γίνει σε συνδυασµό µε τις σηµειώσεις που δόθηκαν στο µάθηµα. Όλο το υλικό του κεφαλαίου θα το βρείτε: http://eclass.sch.gr/modules/document/index.php?course=t13138&opendir=/5654efb9p 8Ob ταξινοµηµένο σε τρεις φακέλους: Φάκελος: Σηµειώσεις Σηµειώσεις συµπληρωµατικές στη θεωρία του βιβλίου Φάκελος: Ασκήσεις Φύλλα ασκήσεων από το διδάσκοντα και λύσεις των ασκήσεων του σχολικού βιβλίου Φάκελος: ραστηριότητες Δραστηριότητες που πραγµατοποιήθηκαν στο εργαστήριο ή στην τάξη Υπόδειξη Όπου ζητείται να γράψετε πρόγραµµα σε Pascal, να αναπτύσσετε αρχικά τον αλγόριθµο σε χαρτί και στη συνέχεια να χρησιµοποιείτε το περιβάλλον ανάπτυξης προγραµµάτων Pame για να δοκιµάσετε τον κώδικα που γράψατε. Μην ξεχνάτε ότι στις πανελλήνιες εξετάσεις θα κληθείτε να γράψετε προγράµµατα σε χαρτί και όχι σε υπολογιστή. Βασικές έννοιες ΕΝΟΤΗΤΑ 9.1.2 (Εντολές Εξόδου write, writeln) Για την παραπάνω ενότητα να µελετήσετε και τις σηµειώσεις του διδάσκοντα στο αρχείο Κεφάλαιο_09_Σηµειώσεις_01.pdf στο φάκελο Σηµειώσεις 1. Να µελετήσετε προσεκτικά την ύλη του βιβλίου σελ. 84,85,86 2. Να µελετήσετε προσεκτικά τις σηµειώσεις που σας δόθηκαν. 3. Να επαναλάβετε τις ασκήσεις και δραστηριότητες των παραδειγµάτων των σηµειώσεων και να χρησιµοποιήσετε το περιβάλλον ανάπτυξης προγραµµάτων Pascal Pame όπου χρειάζεται. 1
ΕΝΟΤΗΤΑ 9.1.1 (Εντολές Εισόδου read, readln) Για την παραπάνω ενότητα να µελετήσετε και τις σηµειώσεις του διδάσκοντα στο αρχείο Κεφάλαιο_09_Σηµειώσεις_02.pdf στο φάκελο Σηµειώσεις 1. Να µελετήσετε προσεκτικά την ύλη του βιβλίου σελ. 81,82,83 2. Να µελετήσετε προσεκτικά τις σηµειώσεις που σας δόθηκαν. 3. Να επαναλάβετε τις ασκήσεις και δραστηριότητες των παραδειγµάτων των σηµειώσεων και να χρησιµοποιήσετε το περιβάλλον ανάπτυξης προγραµµάτων Pascal Pame όπου χρειάζεται 4. Να λύσετε την άσκηση στη σελ. 8 των σηµειώσεων ΕΝΟΤΗΤΑ 9.2 (Εντολή αντικατάστασης Δοµή Ακολουθίας) Για την παραπάνω ενότητα να µελετήσετε και τις σηµειώσεις του διδάσκοντα στο αρχείο Κεφάλαιο_09_Σηµειώσεις_03.pdf στο φάκελο Σηµειώσεις 1. Να µελετήσετε προσεκτικά την ύλη του βιβλίου σελ. 86,87 2. Να µελετήσετε προσεκτικά τις σηµειώσεις που σας δόθηκαν. 3. Να επαναλάβετε τις ασκήσεις και δραστηριότητες των παραδειγµάτων των σηµειώσεων και να χρησιµοποιήσετε το περιβάλλον ανάπτυξης προγραµµάτων Pascal Pame όπου χρειάζεται 4. Να λύσετε τις ασκήσεις στη σελίδα 4 των σηµειώσεων Ερωτήσεις Ασκήσεις βιβλίου Για ενδεικτικές απαντήσεις στις ερωτήσεις του βιβλίου µπορείτε να ανατρέξετε στον κατάλογο Ασκήσεις και να µελετήσετε το αρχείο Κεφάλαιο_09_Σχολικό_Βιβλίο_Απαντήσεις.pdf Ερωτήσεις Για να απαντήσετε στις παρακάτω ερωτήσεις να διαβάσετε καλά εκτός από το κεφάλαιο 9 του βιβλίου και τις σηµειώσεις που δόθηκαν. 1. Για ποιες λειτουργίες χρησιµοποιούνται οι εντολές read, readln, write, και writeln; 2. Πότε χρησιµοποιείται η δήλωση uses wincrt; Σε ποιο σηµείο του προγράµµατος γράφεται; 3. Πως συντάσσεται η εντολή read; 4. Ποιος είναι ο τρόπος λειτουργίας της εντολής read; 5. Πότε τα δεδοµένα που εισάγονται πρέπει να χωρίζονται µε κενό, πότε όχι και γιατί; 6. Έστω η εντολή read(x). Ποια από τις δύο περιπτώσεις εισαγωγής δεδοµένων είναι προβληµατική; a. Εισαγωγή πραγµατικού αριθµού αν το x έχει δηλωθεί σαν ακέραιος b. Εισαγωγή ακέραιου αριθµού αν το x έχει δηλωθεί σαν πραγµατικός 7. Πως συντάσσεται η εντολή readln; 8. Ποιος είναι ο τρόπος λειτουργίας της εντολής readln; 2
9. Τι συµβαίνει αν η εντολή readln δεν έχει παραµέτρους; 10. Ποια η διαφορά ανάµεσα στις εντολές read και readln; 11. Πως συντάσσεται η εντολή write; 12. Ποιος είναι ο τρόπος λειτουργίας της εντολής write; 13. Τι διαφορά έχουν οι παράµετροι της εντολής write από αυτές τις εντολής read; 14. Πως συντάσσεται η εντολή writeln; 15. Ποιος είναι ο τρόπος λειτουργίας της εντολής writeln; 16. Τι συµβαίνει αν η εντολή writeln δεν έχει παραµέτρους; 17. Γιατί είναι καλό να υπάρχει µια εντολή write πριν από κάθε εντολή read; 18. Ποια η διαφορά ανάµεσα στις εντολές write και writeln; 19. πως µπορούµε να εµφανίσουµε 5 κενές γραµµές στην οθόνη; 20. Τι αποτέλεσµα έχει η εντολή write(x:m) όπου x ακέραιος ή αλφαριθµητικό και m αριθµός; 21. Ποια επιπλέον µορφοποίηση µπορώ να κάνω στους πραγµατικούς αριθµούς; Πως θα γραφεί η αντίστοιχη εντολή; 22. Πως συντάσσεται η εντολή αντικατάστασης; Ποιος είναι ο τρόπος λειτουργίας της; 23. Μπορεί η ίδια µεταβλητή να υπάρχει και στο αριστερό και στο δεξί µέλος της εντολής αντικατάστασης; Αν ναι, εξηγείστε πως λειτουργεί π.χ. η εντολή x:=x+1; Ασκήσεις Φυλλάδια ασκήσεων Να λύσετε τις ασκήσεις των φυλλαδίων (6) που δόθηκε κατά τη διδασκαλία του 9 ου κεφαλαίου σύµφωνα µε τις υποδείξεις που δόθηκαν στην τάξη. Τις εκφωνήσεις και τις λύσεις των ασκήσεων θα τις βρείτε στο φάκελο Ασκήσεις http://eclass.sch.gr/modules/document/index.php?course=t13138&opendir=/5654efb9p 8Ob/5654f1bajZGM Ασκήσεις από το βιβλίο Να λύσετε από το βιβλίο τις ασκήσεις 4, 8, 9, 10στι σελίδες 89 και 90. 3
Ασκήσεις 1. Προσδιορίστε τα συντακτικά λάθη του ακόλουθου προγράµµατος: Ρrogram Εror (* 'Εxample ΒΕGΙΝ ΕΝD' *) Var Αlpha, Βeta, Rho : real; Αdd, Sub, Μult, Div : integer Const Υear :=1776; Βegin Μult:= 3.14; readln(div); ΑLΡha:=3; Βeta:=Αpha+1; Rho:=Βeta ΜΟD 3; writeln ('Value is', Αlpha:3:1); writeln ('gamma isn't' negative'); writeln (Μult:3:1); Υear:=Υear+1 ΕΝD 2. Όπως είναι γνωστό, οι γωνίες µετρούνται σε µοίρες (ένας κύκλος έχει 360 ), οι µοίρες διαιρούνται σε λεπτά (1 µοίρα έχει 60 λεπτά) και τα λεπτά σε δευτερόλεπτα (1 λεπτό έχει 60 δευτερόλεπτα). Γράψτε ένα πρόγραµµα το οποίο διαβάζει τα µεγέθη δυο γωνιών (καθένα εκφρασµένο σε µοίρες, λεπτά και δευτερόλεπτα) και υπολογίζει κι εµφανίζει το άθροισµα τους µε αντίστοιχη µορφή. 3. Ένας έµπορος αγόρασε σε τιµή χονδρικής εµπορεύµατα αξίας Κ.ρ. και τα πούλησε Α.ρ. Αν το ποσό Α προκύπτει από την καθαρή αξία Κ και το ποσοστό κέρδους Χ% του εµπόρου επί της καθαρής αξίας Κ, να γίνει πρόγραµµα που να υπολογίζει και να εµφανίζει: α) το κέρδος του εµπόρου, β) το εισπραχθέν ποσό Α. Τα δεδοµένα εισόδου να έχουν τη µορφή: Κ (µεταβλητή τύπου Longint) X (µεταβλητή τύπου Real, εάν Χ = 10% τότε πληκτρολογούµε 0.10) 4. Ένα εµπορικό κατάστηµα πουλά τα εµπορεύµατα του µε έκπτωση Ε% (real)..εδοµένων της αρχικής αξίας του εµπορεύµατος Κ και του ποσοστού έκπτωσης Ε% (µεταβλητή τύπου Real, π.χ. 0.25), να γραφεί πρόγραµµα που θα υπολογίζει και θα εµφανίζει το ποσό που θα πληρώσει ένας πελάτης για την αγορά εµπορευµάτων αξίας Κ (longint) και το ποσό της έκπτωσης (longint) που του αναλογεί. 5. Μια ναυτιλιακή εταιρεία µεταφέρει οικιακές συσκευές τυποποιηµένου µεγέθους και χρησιµοποιεί ειδικά µεταφορικά κιβώτια (containers) τα οποία χωρούν 1, 5, 20 ή 50 οικιακές συσκευές. Γράψτε ένα πρόγραµµα το οποίο να δέχεται ως δεδοµένο τον αριθµό των οικιακών συσκευών που πρόκειται να µεταφερθούν και υπολογίζει κι εµφανίζει τον απαιτούµενο αριθµό µεταφορικών κιβωτίων από κάθε µέγεθος, έτσι ώστε η µεταφορά να πραγµατοποιηθεί µε τον πλέον οικονοµικό τρόπο (τον ελάχιστο δυνατό αριθµό µεταφορικών κιβωτίων χωρίς αχρησιµοποίητο χώρο). Ένα παράδειγµα της εµφάνισης των αποτελεσµάτων για 78 οικιακές συσκευές έχει την εξής µορφή: 50: 1 20: 1 4
5: 1 1: 3 6. Υποθέτοντας ότι οι Αlpha και Βeta είναι µεταβλητές τύπου real µε τιµές - 567.932 και 0.0004 αντίστοιχα, ότι η DΕΚΑDΙΚΑ είναι µεταβλητή integer µε τιµή 2, κι ότι η Rho είναι µεταβλητή integer µε τιµή 436, περιγράψτε µε ακρίβεια το αποτέλεσµα των παρακάτω ή εξηγείστε γιατί υπάρχει λάθος: α. writeln (Rho); writeln (Rho+1); writeln (Rho+2); β. write (Rho); write (Rho+1); writeln (Rho+2); γ. write (Αlpha:9:3); write ('Βeta =' 7); writeln(βeta:10:5); writeln (Αlpha:9:2); write (Αlpha:9:1); write (Αlpha:9:0); write (Αlpha:9:6); write (Αlpha:9); write (Αlpha:9:-1); write (Αlpha:9:DΕΚΑDΙΚΑ); δ. write (Rho:5,2*Rho:5); writeln; writeln(βeta:10:5); ε. writeln (Αlpha:8:1, Rho:5); writeln ('Τolerance:', Βeta:8:5); στ. writeln ('Αlpha =', Αlpha:12:5); writeln ('Βeta =', Βeta:6:2, ' ':4, 'Rho =', Rho:6); writeln (Αlpha+4.0+Rho:15:3); ζ. write (Τolerance =' :8); write (Βeta:5:3); writeln; writeln; writeln (Rho:2, Αlpha:4:2); η. writeln ('Rho =':7, Rho:8:2); writeln('*********'); 5
θ. write (Αlpha:10); write; write (Βeta:10); 7. Υποθέτοντας ότι οι Α,Β,C είναι µεταβλητές integer, οι Χ,Υ,Ζ real και οι S,Τ µεταβλητές string, εξηγείστε ποιες τιµές εκχωρούνται (αν εκχωρούνται) στις µεταβλητές, ή εξηγείστε ποιο είναι το λάθος όταν εκτελούνται οι ακόλουθες εντολές: α. readln (Α, Β, C, Χ, Υ, Ζ) Τιµές που πληκτρολογούνται: 1 2 3 4 5.5 6.6 β) readln (Α, Β, C) readln ( Χ, Υ, Ζ) Τιµές που πληκτρολογούνται: 1 2 3 4 5 6 γ) read (Α, Χ) read (Β, Υ) read (C, Ζ) Τιµές που πληκτρολογούνται: 1 2.2 3 4.4 5 6.6 δ) read (Α, Β, C) readln ( Χ, Υ, Ζ) Τιµές που πληκτρολογούνται: 1 2.2 3 4.4 5 6.6 ε) read (Α) readln (Β, C) read (Χ,Υ) readln (Ζ) Τιµές που πληκτρολογούνται: 1 2 3 4 5.5 6.6 στ) readln (Α) read (Β, C) readln (Χ,Υ) read (Ζ) Τιµές που πληκτρολογούνται: 1 2 3 4 5.5 6.6 ζ) Εντολή Τιµές πουπληκτρολογούνται read (Α,Β) 1 2 3 readln; 4 5.5 6.6 read (C); 7 8.8 9.9 read (Χ); 10 11.11 12.12 readln; 13 14.14 15.15 readln (Υ); Pascal readln; Leibniz readln(ζ); Babbage readln (S); readln; readln(τ); 6