ΕΡΩΤΗΣΕΙΣ 1. Να αναφέρετε μερικά από τα ιδιαίτερα χαρακτηριστικά της Pascal. 2. Ποιο είναι το αλφάβητο της Pascal; 3. Ποια είναι τα ονόματα-ταυτότητες και σε τι χρησιμεύουν; 4. Σε τι χρησιμεύει το συντακτικό της γλώσσας; 5. Σε τι χρησιμεύει η σημασιολογία; 6. Ποιοι είναι οι απλοί ή στοιχειώδεις τύποι δεδομένων; 7. Πότε χρησιμοποιείται ο πραγματικός τύπος; 8. Ποιες είναι οι πράξεις που μπορούν να γίνουν με μεταβλητές ή εκφράσεις λογικού τύπου; 9. Να εξηγήσετε τη σημασία των: 2000, '2000', etos, 'etos' στη γλώσσα Pascal. 10. Ποια είναι η δομή ενός προγράμματος Pascal; 11. Να εξηγήσετε πως λειτουργούν οι διαδικασίες read(parameter,parameter,...) και readln(parameter,parameter,...). Ποιες είναι οι ομοιότητες και ποιες οι διαφορές τους; 12. Να εξηγήσετε πως λειτουργούν οι διαδικασίες write(parameter,parameter,...) και writeln(parameter,parameter,...). Ποιες είναι οι ομοιότητες και ποιες οι διαφορές τους; 13. Να εξηγήσετε πως λειτουργούν οι διαδικασίες write(x:m) και writeln(x:m:n). Ποιες είναι οι ομοιότητες και ποιες οι διαφορές τους. 14. Ποιο θα είναι το αποτέλεσμα της εντολής write(3.14159265:10:3); 15. Ποια είναι τα αποτελέσματα των παρακάτω εντολών, αν αυτές εκτελούνται διαδοχικά x:=2; x:=2*x+4; y:=(4*x-1)*(5*x-4); 16. Να συμπληρώσετε τα κενά στους πίνακες που ακολουθούν: Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888 d= e= 4 read(f,g) 11.99 21 31 41 51 f= g= 5 read(x,a,d) 10 20 30 x= a= d= Περιεχόμενα μεταβλητών Εντολή Αποτελέσματα i=2 writeln(i) writeln('i=1',i) writeln('error=',i) writeln('error Message') la='name=' ty='ttttt' writeln(ty,' ',la) writeln(ty,la) writeln('language=',la) 17. Πως μπορεί να αλλάξει η σειρά εκτέλεσης των εντολών; 18. Πως επιτυγχάνεται η εκτέλεση ορισμένων εντολών υπό συνθήκες; ΚΛΕΙΝΑΥΤΑΚΗΣ ΠΑΥΛΟΣ 1/6
19. Να εξηγήσετε την παρακάτω εντολή και να την τροποποιήσετε ώστε να περιλαμβάνει και την περίπτωση εκείνη στην οποία ο αριθμός είναι περιττός. Να δώσετε παραδείγματα και τα αποτελέσματα της εκτέλεσης των εντολών. if arithm mod 2 = 0 then writeln('ο αριθμός είναι άρτιος'); 20. Να εξηγήσετε την παρακάτω εντολή και να δώσετε παραδείγματα και τα αποτελέσματα της εκτέλεσης της εντολής. if diairetis <> 0 then piliko:=diareteos div diairetis else writeln('διαίρεση με μηδέν δεν είναι επιτρεπτή'); 21. Να χρησιμοποιήσετε την εντολή if για τον έλεγχο της ηλικίας ενός ψηφοφόρου και να δώσετε το κατάλληλο μήνυμα ανάλογα με την περίπτωση, για ηλικία > 65, για ηλικία < 18 και για 18 < ηλικία < 65. Να κάνετε το ίδιο χρησιμοποιώντας όμως την εντολή case. 22. Να συγκρίνετε την εντολή case με την if και να δώσετε δύο παραδείγματα χρήσης της εντολής case. 23. Να γράψετε την επόμενη κωδικοποίηση χρησιμοποιώντας την εντολή case αντί της if: if n=5 then tm5:=tm5+1 else if n=15 then tm15:=tm15+1 else if n=25 then tm25:=tm25+1 24. Να γράψετε μία εντολή case η οποία ανάλογα με το χαρακτηρισμό της βαθμολογίας τυπώνει το αντίστοιχο μήνυμα. Αν ο χαρακτηρισμός=1 τύπωσε άριστα, 2 λίαν καλώς, 3 καλώς, 4 σχεδόν καλώς, 5 απορρίπτεται, αλλιώς λάθος χαρακτηρισμός. Να επαναλάβετε τα προηγούμενα με την εντολή if. 25. Σωστό ή Λάθος; i. Η έκφραση της εντολής case μπορεί να δώσει τιμές τύπου ακέραιου, πραγματικού ή λογικού. ii. Οι τιμές που παίρνουν οι ετικέτες στην εντολή case μπορεί να έχουν οποιαδήποτε σειρά, αλλά οι ετικέτες δεν επαναλαμβάνονται. iii. Όλες οι δυνατές τιμές της έκφρασης σε μια εντολή case πρέπει να περιλαμβάνονται στις λίστες τιμών των ετικετών. 26. Να δώσετε τη μορφή της εντολής επανάληψης while, να εξηγήσετε τη λειτουργία της και να δώσετε δύο δικά σας παραδείγματα. 27. Να δώσετε τη μορφή της εντολής επανάληψης repeat until, να εξηγήσετε τη λειτουργία της και να δώσετε δύο δικά σας παραδείγματα. 28. Να δώσετε τη μορφή της εντολής επανάληψης for, να εξηγήσετε τη λειτουργία της και να δώσετε δύο δικά σας παραδείγματα. 29. Να συγκρίνετε τις εντολές επανάληψης και να αναφέρετε ποιες είναι οι ομοιότητες και ποιες οι διαφορές τους. ΚΛΕΙΝΑΥΤΑΚΗΣ ΠΑΥΛΟΣ 2/6
30. Να δώσετε τα αποτελέσματα από την εκτέλεση των παρακάτω εντολών: arithmos:=1; while arithmos < 11 do arithmos:=arithmos+1; write(arithmos:5); 31. Να αλλάξετε τη σειρά των εντολών της προηγούμενης ερώτησης ώστε το αποτέλεσμα να είναι η εκτύπωση των αριθμών 1 έως και 10. 32. Να χρησιμοποιήσετε τις εντολές επανάληψης repeat until και for, ώστε να έχετε τα ίδια αποτελέσματα με την προηγούμενη ερώτηση. 33. Πόσες επαναλήψεις θα έχουμε από την εκτέλεση των παρακάτω εντολών; arithmos:=0; telos:=false; while not telos do arithmos:=arithmos+2; if arithmos > 100 then telos:=true; 34. Να χρησιμοποιήσετε τις εντολές επανάληψης repeat until και for, ώστε να έχετε τον ίδιο αριθμό επαναλήψεων με την προηγούμενη ερώτηση. 35. Να δώσετε τα αποτελέσματα από την εκτέλεση των παρακάτω εντολών και να εξηγήσετε τη διαφορά που υπάρχει στη χρήση των μεταβλητών athroisma και metritis: athroisma:=0; metritis:=0; while metritis < 10 do athroisma:=athroisma+metritis; writeln(metritis:10,athroisma:10); metritis:=metritis+1; Να τροποποιήσετε τον προηγούμενο κώδικα, ώστε να δίνει τα ίδια αποτελέσματα με τη χρήση των εντολών repeat until και for. 36. Να συγκρίνετε τη μορφή της διαδικασίας και του προγράμματος. 37. Τι είναι και σε τι χρησιμεύει μια διαδικασία; 38. Ποιες είναι οι τυπικές και ποιες οι πραγματικές παράμετροι μιας διαδικασίας; 39. Πως εκτελείται μια διαδικασία; 40. Ποιες είναι οι παράμετροι τιμών και ποιες οι παράμετροι μεταβλητών σε μια διαδικασία; Να δώσετε δύο παραδείγματα. 41. Τι είναι συνάρτηση οριζόμενη από το χρήστη και ποια είναι η διαφορά της από τη διαδικασία; 42. Να γράψετε μια συνάρτηση για το άθροισμα δύο αριθμών. 43. Να γράψετε μια συνάρτηση για το γινόμενο δύο αριθμών. ΚΛΕΙΝΑΥΤΑΚΗΣ ΠΑΥΛΟΣ 3/6
44. Να εξηγήσετε τι είναι τύπος δεδομένων. 45. Να δώσετε την περιγραφή του ακέραιου (integer) τύπου δεδομένων. 46. Να δώσετε την περιγραφή του πραγματικού (real) τύπου δεδομένων. 47. Να δώσετε την περιγραφή του λογικού (boolean) τύπου δεδομένων. 48. Να δώσετε την περιγραφή του τύπου δεδομένων χαρακτήρας (char). 49. Ποιες είναι οι κοινές ιδιότητες των τεσσάρων βασικών τύπων; Πως ονομάζονται γενικά οι τύποι με αυτές τις ιδιότητες; 50. Ποιοι τύποι δεδομένων ονομάζονται τακτικοί; Ποιοι από τους βασικούς τύπους είναι και ποιοι δεν είναι τακτικοί; Να αιτιολογήσετε την απάντησή σας. 51. Να αναφέρετε τις συναρτήσεις τακτικών τύπων και να εξηγήσετε με παραδείγματα τη λειτουργία τους. 52. Πως διακρίνονται οι απλοί από τους σύνθετους τύπους δεδομένων; Να δώσετε παραδείγματα απλών και σύνθετων τύπων δεδομένων. 53. Πως διακρίνονται οι σύνθετοι τύποι δεδομένων με δόμηση, από τους σύνθετους τύπους χωρίς δόμηση; Να δώσετε παραδείγματα σύνθετων τύπων με δόμηση και σύνθετων τύπων χωρίς δόμηση. ΑΣΚΗΣΕΙΣ 1. Δίνεται το παρακάτω τμήμα προγράμματος και μία συνάρτηση: function fun(b,d:integer):integer; fun:=(b+d) div 2; ================================ read(k); m:=2; a:=1; while a < 8 do if k mod m = 0 then x:=fun(a,m) else x:=a+m; writeln(m,a,x); a:=a+2; m:=m+1; Να γράψετε τος τιμές των μεταβλητών m, a, x όπως αυτές εκτυπώνονται σε κάθε επανάληψη, όταν για είσοδο δώσουμε την τιμή 10. 2. Να γράψετε συνάρτηση που θα δέχεται ως παράμετρο έναν ακέραιο και θα ελέγχει αν αυτός μπορεί να αποτελεί αύξοντα αριθμό μήνα (1-12). ΚΛΕΙΝΑΥΤΑΚΗΣ ΠΑΥΛΟΣ 4/6
3. Να σχηματίσετε τον πίνακα τιμών του παρακάτω προγράμματος. Τι θα εκτυπωθεί; program pinakas_timon; var a,b,c:integer; function ypologise(x,y:integer):integer; var z:integer; z:=abs(x-y); if z > 10 then z:=abs(z-y); ypologise:=z; procedure energeies(var k,n,m:integer); while k > n do k:=k-1-(k mod 5); n:=n+(n div abs(m+1)); m:=m+ypologise(k,n); a:=41; b:=27; c:=3; energeies(a,b,c); writeln(a,b,c); a:=a-38; b:=b+17; c:=c+22; energeies(b,c,a); writeln(a,b,c); end. 4. Να γράψετε υποπρόγραμμα που θα δέχεται έναν ακέραιο αριθμό και θα ελέγχει αν μπορεί να διαβαστεί και ανάποδα. 5. Σε έναν διαγωνισμό του ΑΣΕΠ εξετάζονται 1500 υποψήφιοι. Ως εξεταστικό κέντρο χρησιμοποιείται ένα κτήριο με αίθουσες διαφορετικής χωρητικότητας. Ο αριθμός των επιτηρητών που απαιτούνται ανά αίθουσα καθορίζεται αποκλειστικά με βάση τη χωρητικότητα της αίθουσας ως εξής: Χωρητικότητα Αριθμός Επιτηρητών Μέχρι και 15 θέσεις 1 Από 16 μέχρι και 23 θέσεις 2 Πάνω από 23 θέσεις 3 ΚΛΕΙΝΑΥΤΑΚΗΣ ΠΑΥΛΟΣ 5/6
Να δημιουργήσετε πρόγραμμα σε Pascal το οποίο: α) Για κάθε αίθουσα θα διαβάζει τη χωρητικότητά της, θα υπολογίζει και θα εμφανίζει τον αριθμό των επιτηρητών που χρειάζονται. Ο υπολογισμός του αριθμού των επιτηρητών να γίνεται από συνάρτηση που θα κατασκευάσετε για το σκοπό αυτό. β) Θα σταματάει όταν εξασφαλιστεί ο απαιτούμενος συνολικός αριθμός θέσεων. Σημείωση: Να θεωρήσετε ότι η συνολική χωρητικότητα των αιθουσών του κτηρίου επαρκεί για τον αριθμό των υποψηφίων. 6. Να γραφεί υποπρόγραμμα σε Pascal που θα δέχεται έναν ακέραιο αριθμό και θα επιστρέφει το πλήθος των ψηφίων του. 7. Να αναπτυχθεί πρόγραμμα σε Pascal, το οποίο θα εκτυπώνει το παρακάτω μενού επιλογών που αφορά έναν κύκλο: 1. Υπολογισμός Εμβαδού 2. Υπολογισμός Περιμέτρου 3. Υπολογισμός Διαμέτρου Δώστε επιλογή: Στη συνέχεια θα διαβάζει την επιλογή του χρήστη κι ακόμη έναν αριθμό που αντιστοιχεί στην ακτίνα του κύκλου (να πραγματοποιεί έλεγχο δεδομένων), και θα εκτυπώνει το αντίστοιχο αποτέλεσμα. Η εκτύπωση του μενού επιλογών να γίνει με διαδικασία και ο υπολογισμός κάθε επιλογής με ξεχωριστή συνάρτηση. Υποδείξεις: Αν ρ η ακτίνα ενός κύκλου τότε: α) το εμβαδόν του κύκλου υπολογίζεται από τον τύπο: πρ 2 β) η περίμετρος του κύκλου υπολογίζεται από τον τύπο: 2πρ γ) η διάμετρος του κύκλου υπολογίζεται από τον τύπο: 2ρ 8. Με την εκκίνηση μιας συσκευής κινητού τηλεφώνου ζητείται ο κωδικός πρόσβασης (pin) και ο χρήστης έχει τρεις ευκαιρίες για την εισαγωγή του. Να γραφεί το αντίστοιχο υποπρόγραμμα σε Pascal που εκτελεί το κινητό, ζητώντας μέχρι 3 φορές τον κωδικό πρόσβασης αν αυτός δεν εισαχθεί σωστά. 9. Να γραφεί υποπρόγραμμα σε Pascal που θα δέχεται δύο πραγματικούς αριθμούς και θα αντιμεταθέτει τις τιμές τους. 10. α) Εκατό (100) υποψήφιοι του ΑΣΕΠ διαγωνίζονται σε τρία μαθήματα για την κάλυψη θέσεων του Δημοσίου. Να γράψετε κύριο πρόγραμμα σε Pascal που θα κάνει τα παρακάτω: 1. Θα διαβάζει τα ονόματα των 100 υποψηφίων του ΑΣΕΠ και τη βαθμολογία καθενός υποψηφίου σε τρία διαφορετικά μαθήματα (Θεωρήστε ότι η βαθμολογία κάθε μαθήματος είναι από 1 έως 20). 2. Θα βρίσκει και θα τυπώνει τον ελάχιστο και τον μέγιστο βαθμό καθενός υποψηφίου στα τρία μαθήματα που εξετάστηκε. β) Να γράψετε υποπρόγραμμα σε Pascal, το οποίο να καλείται από το κύριο πρόγραμμα, για τον υπολογισμό και την εκτύπωση του μέσου όρου κάθε υποψηφίου στα τρία μαθήματα που διαγωνίστηκε. ΚΛΕΙΝΑΥΤΑΚΗΣ ΠΑΥΛΟΣ 6/6