Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς
Κεφάλαιο 5 Τμηματικός Προγραμματισμός Ασκήσεις 1. Τι είδους υποπρόγραμμα μπορείς να χρησιμοποιήσεις για τα παρακάτω προβλήματα στην Pascal (Γλωσσομάθεια); Procedure – P (Διαδικασία - Δ) ή Function – F (Συνάρτηση - Σ); Είναι λογικό πως σε κάποιες περιπτώσεις μπορεί να ταιριάζουν και τα δύο. A. Υπολογισμός και επιστροφή στο κύριο πρόγραμμα του μικρότερου από πέντε ακεραίους. B. Υπολογισμός και επιστροφή στο κύριο πρόγραμμα των δυο μικρότερων από πέντε ακεραίους . C. Έλεγχος και επιστροφή στο κύριο πρόγραμμα αν δυο αριθμοί είναι ίσοι. Αυτό που επιστρέφεται είναι μία boolean τιμή (True / False). D. Επιστροφή στο κύριο πρόγραμμα των πέντε πρώτων νικητών ενός διαγωνισμού. E. Διάβασμα τριών αριθμών και επιστροφή τους στο κύριο πρόγραμμα. F. Διάβασμα ενός αριθμού και επιστροφή του στο κύριο πρόγραμμα. G. Εμφάνιση τριών αριθμών. H. Εμφάνιση ενός αριθμού. 2. Ποια από τις ακόλουθες λειτουργίες δεν μπορεί να εκτελέσει μια function στην Pascal (συνάρτηση στην Γλωσσομάθεια); A. Υπολογισμός και επιστροφή στο κύριο πρόγραμμα του μέγιστου από δύο αριθμών. B. Υπολογισμός και επιστροφή στο κύριο πρόγραμμα του μέγιστου και του ελάχιστου από κάποιους αριθμούς. C. Υπολογισμός και επιστροφή στο κύριο πρόγραμμα του μέγιστου από κάποιους αριθμούς. D. Επιστροφή στο κύριο πρόγραμμα μιας λογικής τιμής (Boolean). 3. Αντιστοιχίστε τα στοιχεία της στήλης Α με τα στοιχεία της στήλης Β. Α Β 1. Procedure A. Υπολογισμός της λύσης της πρωτοβάθμιας εξίσωσης. (Διαδικασία) B. Διάβασμα αριθμών. 2. Function C. Εύρεση του μικρότερου από κάποιους αριθμούς. (Συνάρτηση) D. Εμφάνιση αριθμών. 4. Να γράψετε procedure στην Pascal (διαδικασία στην Γλωσσομάθεια) η οποία να διαβάσει πολλούς αριθμούς και να εμφανίσει το άθροισμα τους. Τέλος της εισαγωγής των αριθμών θεωρείται όταν ο χρήστης πληκτρολογήσει τον αριθμό μηδέν, ο οποίος δεν περιλαμβάνεται στα αποτελέσματα. Εννοείται πως το υποπρόγραμμα που κατασκευάσατε δεν είναι εκτελέσιμο. 5. Να γράψετε procedure στην Pascal (διαδικασία στην Γλωσσομάθεια) η οποία να διαβάσει πολλούς αριθμούς μέχρι ο χρήστης να πληκτρολογήσει τον αριθμό 0, ο οποίος δεν περιλαμβάνεται στα αποτελέσματα. Η διαδικασία θα επιστρέψει στο κύριο πρόγραμμα το πλήθος των θετικών και των αρνητικών αριθμών που δόθηκαν. Εννοείται πως το υποπρόγραμμα που κατασκευάσατε δεν είναι εκτελέσιμο.
Ο τμηματικός προγραμματισμός
1
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς
6. Να γράψετε procedure στην Pascal (διαδικασία στην Γλωσσομάθεια) η οποία να ανταλλάξει τα περιεχόμενα δύο μεταβλητών, οι οποίες θα δοθούν από το κύριο πρόγραμμα και θα επιστραφούν σε αυτό. (Δηλαδή αν Α= 5 και Β =7, τότε μετά το τέλος της διαδικασίας η Α = 7 και η Β= 5). Εννοείται πως το υποπρόγραμμα που κατασκευάσατε δεν είναι εκτελέσιμο. 7. Να γράψετε procedure στην Pascal (διαδικασία στην Γλωσσομάθεια) η οποία θα διαβάσει μια ακέραια τιμή από το 1 έως το 12 και ανάλογα με την τιμή θα εμφανίσει ολογράφως τον αντίστοιχο μήνα του έτους. Για παράδειγμα αν η τιμή ήταν το 1 θα εμφανίσει «Ιανουάριος». Εννοείται πως το υποπρόγραμμα που κατασκευάσατε δεν είναι εκτελέσιμο. 8. Να γράψετε function στην Pascal (συνάρτηση στην Γλωσσομάθεια) η οποία να υπολογίσει και να επιστρέψει στο κύριο πρόγραμμα την τέταρτη δύναμη ενός αριθμού. Εννοείται πως το υποπρόγραμμα που κατασκευάσατε δεν είναι εκτελέσιμο. 9. Να γράψετε function στην Pascal (συνάρτηση στην Γλωσσομάθεια) η οποία να υπολογίσει και να επιστρέψει στο κύριο πρόγραμμα την υποτείνουσα Κ ενός τετραγώνου με πλευρές Χ και Υ, χρησιμοποιώντας τον τύπο:
2 2 Εννοείται πως το υποπρόγραμμα που κατασκευάσατε δεν είναι εκτελέσιμο. 10. Να γράψετε function στην Pascal (συνάρτηση στην Γλωσσομάθεια) η οποία να υπολογίσει και να επιστρέψει στο κύριο πρόγραμμα το εμβαδόν Ε ενός ρόμβου με διαγώνιους x και y, χρησιμοποιώντας τον τύπο:
E
1 *x* y 2
Εννοείται πως το υποπρόγραμμα που κατασκευάσατε δεν είναι εκτελέσιμο. 11. Να γράψετε function στην Pascal (συνάρτηση στην Γλωσσομάθεια) η οποία να υπολογίσει και να επιστρέψει στο κύριο πρόγραμμα την τιμή της παρακάτω μαθηματικής παράστασης:
x y
x y *z 5
Εννοείται πως το υποπρόγραμμα που κατασκευάσατε δεν είναι εκτελέσιμο. 12. Να γράψετε function στην Pascal (συνάρτηση στην Γλωσσομάθεια) η οποία να υπολογίσει και να επιστρέψει στο κύριο πρόγραμμα την κινητική ενέργεια Ε ενός σώματος, χρησιμοποιώντας τον τύπο:
E
1 * m * v2 2
Εννοείται πως το υποπρόγραμμα που κατασκευάσατε δεν είναι εκτελέσιμο. 13. Να γράψετε function στην Pascal (συνάρτηση στην Γλωσσομάθεια) η οποία να υπολογίσει και να επιστρέψει στο κύριο πρόγραμμα πόσα ευρώ € αντιστοιχούν σε ένα ποσό Ο τμηματικός προγραμματισμός
2
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς σε δραχμές. Υπενθυμίζεται ότι 1 € ισοδυναμεί με 340.75 δραχμές. Εννοείται πως το υποπρόγραμμα που κατασκευάσατε δεν είναι εκτελέσιμο. 14. Να γράψετε function στην Pascal (συνάρτηση στην Γλωσσομάθεια) η οποία να υπολογίσει και να επιστρέψει στο κύριο πρόγραμμα την τιμή της μαθηματικής συνάρτησης:
3x 1, x 0 f ( x) 2 x 7,0 x 1 x ,1 x Εννοείται πως το υποπρόγραμμα που κατασκευάσατε δεν είναι εκτελέσιμο. 15. Να γράψετε ένα υποπρόγραμμα στην Pascal και στην Γλωσσομάθεια για τον υπολογισμό του παραγοντικού ενός θετικού, ακέραιου αριθμού Ν, ο οποίος θα δοθεί από το κύριο πρόγραμμα. (άσκηση 79 – Δομή Επανάληψης) Η άσκηση να υλοποιηθεί και με procedure (διαδικασία) και με function (συνάρτηση). Υπενθυμίζεται ότι το παραγοντικό ενός αριθμού Ν ισούται με το γινόμενο 1*2*3*…*Ν. Εννοείται πως το υποπρόγραμμα που κατασκευάσατε δεν είναι εκτελέσιμο. 16. Να γράψετε το καταλληλότερο υποπρόγραμμα στην Pascal και στην Γλωσσομάθεια (δηλαδή να επιλέξετε την function - συνάρτηση αν μπορεί να γίνει με αυτήν, διαφορετικά την procedure - διαδικασία), το οποίο θα δεχθεί από το κύριο πρόγραμμα έναν ακέραιο, θετικό αριθμό και θα επιστρέψει σε αυτό την λογική τιμή True ή False αν ο αριθμός αυτός ήταν διψήφιος ή όχι αντίστοιχα. Εννοείται πως το υποπρόγραμμα που κατασκευάσατε δεν είναι εκτελέσιμο. 17. Να γράψετε το καταλληλότερο υποπρόγραμμα στην Pascal και στην Γλωσσομάθεια (δηλαδή να επιλέξετε την function – συνάρτηση αν μπορεί να γίνει με αυτήν, διαφορετικά την procedure - διαδικασία) για τον υπολογισμό της ολικής αντίστασης δύο αντιστάσεων R1 και R2 που συνδέονται σε σειρά και παραλληλία. Το υποπρόγραμμα θα δεχθεί από το κύριο πρόγραμμα τις τιμές των αντιστάσεων R1 και R2 και θα επιστρέψει σε αυτό την ολική αντίσταση σε σειρά και σε παραλληλία. Υπενθυμίζονται οι τύποι από την Φυσική:
R R1 R2 και R
R1 R 2 R1 * R 2
Εννοείται πως το υποπρόγραμμα που κατασκευάσατε δεν είναι εκτελέσιμο.
Ο τμηματικός προγραμματισμός
3
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς 18. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL; program example; var a,b:integer; procedure diad(var c,d:integer); begin c:=0; d:=0; writeln(c); writeln(d); end; begin a:=10; b:=5; diad(a,b); writeln(a); writeln(b); end.
19. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL; program example; var a,b:integer; procedure diad(c,d:integer); begin c:=0; d:=0; writeln(c); writeln(d); end; begin a:=10; b:=5; diad(a,b); writeln(a); writeln(b); end.
Ο τμηματικός προγραμματισμός
4
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς 20. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL; program example; var a,b:integer; procedure diad(var c,d:integer); begin c:=c+d; d:=c+d; end; begin a:=6; b:=4; diad(a,b); if a>b then writeln(a,' ',b) else writeln(a*2,' ',b*2); end.
21. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL; program example; var a,b:integer; procedure diad(c,d:integer); begin c:=c+d; d:=c+d; end; begin a:=6; b:=4; diad(a,b); if a>b then writeln(a,' ',b) else writeln(a*2,' ',b*2); end.
Ο τμηματικός προγραμματισμός
5
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς 22. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL; program example; var a,b,c,i:integer; procedure diad(var x,y:integer); begin x:=y*y; y:=x+y; end; begin a:=2; b:=5; c:=7; for i:=1 to 3 do begin diad(c,a); writeln(a,' ',b,' ',c); end; end.
23. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL; program example; var a,b:real; procedure diad(var a,b:real); begin writeln(a:3:2,' ',b:3:2); a:=a/2; b:=a+b; end; begin a:=5; b:=10; diad(b,a); writeln(a:3:2,' ',b:3:2); end.
Ο τμηματικός προγραμματισμός
6
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς 24. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL; program example; var a,b:integer; procedure diad(var a,b:integer); begin writeln(a,' ',b); a:=a-b; end; begin a:=5; b:=10; diad(b,a); writeln(a,' ',b); end.
25. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL; program example; var a,b,c:integer; procedure diad(var c,d:integer); begin c:=c-d; end; begin a:=5; b:=10; c:=0; diad(a,b); writeln(a,' ',b,' ',c); end.
26. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL, αν ως τιμές εισόδου δοθούν οι αριθμοί 5, 7, 10; program example; var a,b,c:integer; procedure diad(var b,a,c:integer); begin a:=a+2; b:=b-3; c:=a+b; writeln(a,' ',b,' ',c); end; begin readln(a,b,c); diad(a,b,c); writeln(a,' ',b,' ',c); end.
Ο τμηματικός προγραμματισμός
7
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς 27. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL; program example; var z,w:integer; procedure diad(var w,z:integer); begin w:=w+z; z:=z+2; writeln(z); end; begin z:=1; w:=3; while z<=35 do begin diad(z,w); writeln(z); end; end.
28. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL; program example; var x,y:real; function S(a,b:real):real; begin if a<b then S:=a else S:=b; end; begin x:=10; y:=20; y:=S(x,y); writeln(y:3:2); end.
Ο τμηματικός προγραμματισμός
8
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς 29. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL για είσοδο δώσουμε την τιμή 10; Program Askisi; Var k,p,a,x:integer; Function Fun(b, d:integer): integer; Begin Fun:=(b+d) div 2; end; Begin readln(k); p:=2; a:=1; while a<8 do begin if k mod p = 0 then x:=Fun(a,p) else x:=a+p; writeln(p,' ',a,' ',x); a:=a+2; p:=p+1; end; end.
30. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL αν για είσοδο δώσουμε κάποιες από τις παρακάτω τιμές (οι τιμές θα δοθούν με την σειρά που σας αναγράφονται παρακάτω): 5, 3, 28, -2, 18, 16, 17 program example; var a,x,y:integer; function sinolo(x,y:integer):integer; begin if x<y then x:=x+ y mod x else x:= x - x div y; sinolo:=(x+y) div 2; end; begin a:=5; while a<10 do begin repeat readln(x); until (x>=1) and (x<=20); y:=sinolo(a,x)+1; writeln(a,' ',y,' ',x); if a>y then writeln(a); a:=a+2; end; end.
Ο τμηματικός προγραμματισμός
9
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς 31. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL; program example; var i,j,a,b,d:integer; function fun(x,y:integer):integer; begin fun:=y mod x; end; procedure diad(var b,a:integer); var c:integer; begin b:=b+1; a:=a+2; c:=fun(a,b); writeln(a,' ',b,' ',c); end; begin a:=4; b:=10; for i:=1 to 2 do for j:=1 to i do begin diad(a,b); a:=a+3; b:=b-4; end; d:=a div b; writeln(d); end.
Ο τμηματικός προγραμματισμός
10
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς 32. Τι θα εμφανίσει το παρακάτω πρόγραμμα PASCAL; Program Askisi; Var a,b,x:integer; Procedure Diad1 (var p, k, m:integer); Begin k:=k+1; p:=p+3; m:=k+p; end; Function Syn1(e, z:integer): integer; Begin z:=z+2; e:=e*2; Syn1:=e+z; end; Begin a:=1; b:=2; Repeat if a<=4 then Diad1(a,b,x) else x:=Syn1(a,b); writeln(a,' ',b,' ',x); Until x>11; writeln(x); end.
33. Δίνεται παρακάτω ένα πρόγραμμα με δύο υποπρογράμματα: program example; var a,b,apot1,apot2,oefe1:integer; procedure oef(b,a: integer; var oefe1:integer); begin oefe1:=b+a mod 3; end; function oefe2(a,b:integer):integer; var c,d:integer; begin c:=a-b*2; d:=b*3; oefe2:=c+d div 2; end; begin readln(a,b); apot1:=oefe2(b,a); oef(a,b,oefe1); apot2:=oefe1; writeln(apot1,' ',apot2); end.
Ο τμηματικός προγραμματισμός
11
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς A. Να γράψετε στο τετράδιο σας τις τιμές που θα εμφανιστούν κατά την εκτέλεση του προγράμματος που δόθηκε, αν ως τιμές εισόδου δοθούν οι αριθμοί: a=9 και b=2. B. Να ξαναγράψετε το πρόγραμμα, ώστε να επιτελεί την ίδια λειτουργία χρησιμοποιώντας procedure αντί function και function αντί procedure αφού πρώτα μετατρέψετε αντίστοιχα την procedure σε function και την function σε procedure. 34. Δίνεται παρακάτω ένα πρόγραμμα Pascal με μία function: Program Askisi; Var a,b,c:integer; Function Praxi(x,y:integer):integer; Begin if x>=y then Praxi:=x-y else Praxi:=x+y; end; Begin readln(a,b); c:=a+Praxi(a,b); writeln(c); end.
A. Να ξαναγράψετε το πρόγραμμα, ώστε να επιτελεί την ίδια λειτουργία χρησιμοποιώντας procedure αντί function. B. Να ξαναγράψετε το πρόγραμμα που δόθηκε αρχικά, ώστε να επιτελεί την ίδια λειτουργία χωρίς τη χρήση function. C. Να γράψετε στο τετράδιό σας τις τιμές που θα εμφανιστούν κατά την εκτέλεση του αρχικού προγράμματος που δόθηκε, αν ως τιμές εισόδου δοθούν οι αριθμοί: 1. α = 10 β=5 2. α = 5 β=5 3. α = 3 β=5 35. Να γράψετε τα ακόλουθα: A. Function - Συνάρτηση με όνομα Dinami - Δύναμη, η οποία θα δεχθεί από το κύριο πρόγραμμα έναν ακέραιο αριθμό και θα επιστρέψει σε αυτό την δύναμη του στον κύβο. B. Πρόγραμμα σε γλώσσα προγραμματισμού Pascal και Γλωσσομάθεια, το οποίο θα διαβάσει πολλούς ακέραιους αριθμούς και χρησιμοποιώντας την παραπάνω function - Συνάρτηση, θα εμφανίσει τις δυνάμεις τους στον κύβο. Η εισαγωγή των αριθμών σταματά όταν ο χρήστης πληκτρολογήσει το 0. 36. Να γράψετε τα ακόλουθα: A. Function – Συνάρτηση με όνομα Mikos – Μήκος, η οποία θα δεχθεί από το κύριο πρόγραμμα έναν ακέραιο, θετικό αριθμό που εκφράζει την ακτίνα ενός κύκλου και θα επιστρέψει σε αυτό το μήκος του αντίστοιχου κύκλου. Το μήκος του κύκλου δίνεται από την σχέση 2*π*R.
Ο τμηματικός προγραμματισμός
12
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς B. Function – Συνάρτηση με όνομα Embado, - Εμβαδό η οποία θα δεχθεί από το κύριο πρόγραμμα έναν ακέραιο, θετικό αριθμό που εκφράζει την ακτίνα ενός κύκλου και θα επιστρέψει σε αυτό το εμβαδόν του αντίστοιχου κύκλου. Το εμβαδόν του κύκλου δίνεται από την σχέση π*R2. C. Πρόγραμμα σε γλώσσα προγραμματισμού Pascal και Γλωσσομάθεια, που χρησιμοποιώντας τις παραπάνω συναρτήσεις, θα εμφανίσει τα μήκη και τα εμβαδά όλων των κύκλων με ακτίνες από 10 cm έως 150 cm με βήμα 10 cm. 37. Να γράψετε πρόγραμμα σε Pascal και Γλωσσομάθεια το οποίο θα διαβάσει δέκα χρηματικά ποσά σε δραχμές και με την χρήση συνάρτησης προηγούμενης άσκησης (άσκηση 13) να εμφανίσει την αντιστοιχία σε Ευρώ του κάθε ποσού σε δραχμές. 38. Να γράψετε τα ακόλουθα: A. Function - Συνάρτηση με όνομα Par - Παρ, που θα δεχθεί από το κύριο πρόγραμμα έναν ακέραιο, θετικό αριθμό και θα επιστρέψει σε αυτό το παραγοντικό του αριθμού. Υπενθυμίζεται ότι το παραγοντικό ενός αριθμού κ είναι το γινόμενο 1*2*3*..*κ και συμβολίζεται με κ!. (άσκηση 15) B. Πρόγραμμα σε γλώσσα προγραμματισμού Pascal και Γλωσσομάθεια, που θα διαβάσει δύο ακέραιους, θετικούς αριθμούς Ν και R και χρησιμοποιώντας την παραπάνω συνάρτηση, θα εμφανίσει το F:
F
N! R!( N R)!
39. Να γράψετε τα ακόλουθα: A. Procedure - Διαδικασία με όνομα Eisagogi_Num – Εισαγωγή_Αρ, η οποία θα διαβάσει δύο πραγματικούς αριθμούς τους οποίους θα τους επιστρέψει στο κύριο πρόγραμμα. B. Procedure – Διαδικασία με όνομα Eisagogi_Prax – Εισαγωγή_Πρ, η οποία θα διαβάσει το σύμβολο μίας πράξης την οποία θα την επιστρέψει στο κύριο πρόγραμμα. Να γίνει έλεγχος ορθότητας καταχώρισης των δεδομένων ώστε οι πράξεις να είναι μόνο το ‘+’, το ‘-‘, το ‘*’ και το ‘/’. C. Procedure – Διαδικασία με όνομα Ipologismos - Υπολογισμός, η οποία θα δεχθεί από το κύριο πρόγραμμα δύο αριθμούς και το σύμβολο μίας από τις τέσσερις βασικές πράξεις (‘+’, ‘-‘, ‘*’ ,‘/’) και θα επιστρέψει στο κύριο πρόγραμμα: 1. Εάν μπορούσε να γίνει η πράξη: την λογική τιμή True και το αποτέλεσμα της αντίστοιχης πράξης. 2. Εάν δεν μπορούσε να γίνει η πράξη: την λογική τιμή False. D. Procedure - Διαδικασία με όνομα Ektiposi - Εκτύπωση, η οποία θα δεχθεί από το κύριο πρόγραμμα μία πραγματική τιμή την οποία θα την εμφανίσει. E. Πρόγραμμα σε γλώσσα προγραμματισμού Pascal και Γλωσσομάθεια, το οποίο: 1. Χρησιμοποιώντας την procedure Eisagogi_Num – Διαδικασία Εισαγωγή_Αρ, θα διαβάσει δύο πραγματικούς αριθμούς. 2. Χρησιμοποιώντας την procedure Eisagogi_Prax – Διαδικασία Εισαγωγή_Πρ, θα διαβάσει το σύμβολο μιας πράξης. 3. Χρησιμοποιώντας την procedure Ipologismos - Υπολογισμός, θα εκτελέσει την αντίστοιχη πράξη με τους αριθμούς που διάβασε. 4. Χρησιμοποιώντας την procedure Ektiposi – Εκτύπωση θα εμφανίσει το αποτέλεσμα της πράξης. Σε περίπτωση που η πράξη δεν μπορεί να γίνει θα εμφανίσει το μήνυμα «Error».
Ο τμηματικός προγραμματισμός
13
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς 40. Να γράψετε τα ακόλουθα: A. Function – Συνάρτηση με όνομα Par - Παρ, η οποία θα δεχθεί από το κύριο πρόγραμμα έναν ακέραιο, θετικό αριθμό k και θα επιστρέψει σε αυτό το παραγοντικό του αριθμού. Υπενθυμίζεται ότι το παραγοντικό ενός αριθμού k (που συμβολίζεται με k!) είναι το γινόμενο 1*2*3*..*k και συμβολίζεται με k!. (άσκηση 15) B. Function – Συνάρτηση με όνομα dinami - Δύναμη, η οποία θα δεχθεί από το κύριο πρόγραμμα έναν πραγματικό θετικό αριθμό y και έναν ακέραιο θετικό αριθμό z και θα επιστρέψει στο κύριο πρόγραμμα την δύναμη του αριθμού y υψωμένου εις την z, δηλαδή το y^z. C. Πρόγραμμα σε γλώσσα προγραμματισμού Pascal και Γλωσσομάθεια, το οποίο αφού διαβάσει έναν πραγματικό θετικό αριθμό x και έναν ακέραιο, θετικό αριθμό Ν, χρησιμοποιώντας τις παραπάνω functions - συναρτήσεις, θα εμφανίσει το άθροισμα S:
S 1
x1 x 2 x 3 xN ....... 1! 2! 3! N!
41. Να γράψετε τα ακόλουθα: A. Function – Συνάρτηση με όνομα Par - Παρ, η οποία θα δεχθεί από το κύριο πρόγραμμα έναν ακέραιο, θετικό αριθμό k και θα επιστρέψει σε αυτό το παραγοντικό του αριθμού. Υπενθυμίζεται ότι το παραγοντικό ενός αριθμού k (που συμβολίζεται με k!) είναι το γινόμενο 1*2*3*..*k και συμβολίζεται με k!. (άσκηση 15) B. Function – Συνάρτηση με όνομα dinami - Δύναμη, η οποία θα δεχθεί από το κύριο πρόγραμμα έναν πραγματικό θετικό αριθμό y και έναν ακέραιο θετικό αριθμό z και θα επιστρέψει στο κύριο πρόγραμμα την δύναμη του αριθμού y υψωμένου εις την z, δηλαδή το y^z. C. Πρόγραμμα σε γλώσσα προγραμματισμού Pascal και Γλωσσομάθεια, το οποίο αφού διαβάσει έναν πραγματικό θετικό αριθμό x και έναν ακέραιο, θετικό αριθμό Ν, χρησιμοποιώντας τις παραπάνω functions - συναρτήσεις, θα εμφανίσει το άθροισμα S:
x1 x 3 x 5 x 7 xN S ....... 1! 3! 5! 7! N! 42. Να γράψετε τα ακόλουθα: A. Function - Συνάρτηση με όνομα Athroisma - Άθροισμα, η οποία θα δεχθεί από το κύριο πρόγραμμα έναν ακέραιο, θετικό, περιττό αριθμό x και θα επιστρέψει σε αυτό το άθροισμα των αριθμών 1+3+5+..+x. B. Function - Συνάρτηση με όνομα Ginomeno - Γινόμενο, η οποία θα δεχθεί από το κύριο πρόγραμμα έναν ακέραιο, θετικό, άρτιο αριθμό κ και θα επιστρέψει σε αυτό το γινόμενο των αριθμών 2*4*6*..*κ. C. Πρόγραμμα σε γλώσσα προγραμματισμού Pascal και Γλωσσομάθεια , το οποίο αφού διαβάσει έναν ακέραιο, θετικό, περιττό αριθμό Ν, χρησιμοποιώντας τις παραπάνω functions - συναρτήσεις, θα εμφανίσει το άθροισμα A:
1 1 3 1 1 3 5 1 1 3 5 7 1 1 3 5 7 ... N A * * * ...... * 3 2 * 4 5 2 * 4 * 6 7 2 * 4 * 6 *8 N 2 * 4 * 6 * .... * ( N 1)
Ο τμηματικός προγραμματισμός
14
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς 43. Να γράψετε τα ακόλουθα: A. Function – Συνάρτηση με όνομα MKD - ΜΚΔ, η οποία θα δεχθεί από το κύριο πρόγραμμα δύο ακέραιους, θετικούς αριθμούς α, β και θα επιστρέψει σε αυτό τον μέγιστο κοινό τους διαιρέτη. (άσκηση 43 – Δομή Επανάληψης) Υπενθυμίζεται ότι ο μέγιστος κοινός διαιρέτης μπορεί να βρεθεί ακολουθώντας την εξής μεθοδολογία : Ο ΜΚΔ των αριθμών α και β είναι ίδιος με τον ΜΚΔ των αριθμών: α-β και β, αν α > β α και β-α αν α < β. Η διαδικασία της αφαίρεσης επαναλαμβάνεται μέχρι ο α να γίνει ίσος με τον β. Τότε ο ΜΚΔ είναι ο α (ή ο β αφού είναι ίσοι).
α 25 10 5
Παράδειγμα β Σχόλια 15 Οι αρχικοί αριθμοί. Επειδή ήταν α > β τότε στην θέση του α μπήκε ο α-β. 5 Επειδή ήταν β > α τότε στην θέση του β μπήκε ο β-α. Οι αριθμοί έγιναν ίσοι, οπότε σταματάμε. οπότε ΜΚΔ=5
B. Πρόγραμμα σε γλώσσα προγραμματισμού Pascal και Γλωσσομάθεια, το οποίο θα διαβάσει δύο ακέραιους, θετικούς αριθμούς και χρησιμοποιώντας την παραπάνω function - συνάρτηση, θα εμφανίσει τον μέγιστο κοινό τους διαιρέτη. Το πρόγραμμα επαναλαμβάνει την παραπάνω διαδικασία μέχρι ένας από τους δύο αριθμούς είναι αρνητικός ή μηδέν. 44. Να γράψετε τα ακόλουθα: A. Procedure – Διαδικασία με όνομα Allagi - Αλλαγή, η οποία θα δεχθεί από το κύριο πρόγραμμα δύο ακέραιους, θετικούς αριθμούς, θα τους αντιμεταθέσει και θα τους επιστρέψει στο κύριο πρόγραμμα. B. Function - Συνάρτηση με όνομα Monos - Μονός, η οποία θα δεχθεί από το κύριο πρόγραμμα έναν ακέραιο, θετικό αριθμό και θα επιστρέψει στο κύριο πρόγραμμα την λογική τιμή Αληθής αν ο αριθμός αυτός ήταν μονός, διαφορετικά θα επιστρέψει Ψευδής. C. Πρόγραμμα σε γλώσσα προγραμματισμού Pascal και Γλωσσομάθεια, το οποίο: 1. Θα διαβάσει 2 ακέραιους θετικούς αριθμούς Κ, Λ. 2. Με την χρήση της procedure - διαδικασίας θα τους αντιμεταθέσει (εάν χρειάζεται) ώστε στην μεταβλητή Κ να περιέχεται ο μικρότερος και στην Λ ο μεγαλύτερος. 3. Με την χρήση της function - συνάρτησης, θα διαπιστώσετε εάν ο Κ ήταν μονός, οπότε θα τον αυξήσετε κατά 1 (και συνεπώς θα γίνει ζυγός), διαφορετικά θα τον αφήσετε ως είχε. 4. Θα εμφανίσει το πλήθος και το άθροισμα των ζυγών αριθμών που υπάρχουν ανάμεσα στους αριθμούς Κ και Λ. (Οι αριθμοί Κ και Λ συμπεριλαμβάνονται). 45. Σε ένα διαγωνισμό του ΑΣΕΠ εξετάζονται 1500 υποψήφιοι. Ως εξεταστικό κέντρο χρησιμοποιείται ένα κτίριο με αίθουσες διαφορετικής χωρητικότητας. Ο αριθμός των επιΟ τμηματικός προγραμματισμός
15
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς τηρητών που απαιτούνται ανά αίθουσα καθορίζεται αποκλειστικά με βάση τη χωρητικότητα της αίθουσας ως εξής: ΧΩΡΗΤΙΚΟΤΗΤΑ Μέχρι και 15 θέσεις Από 16 μέχρι και 23 θέσεις Πάνω από 23 θέσεις
ΑΡΙΘΜΟΣ ΕΠΙΤΗΡΗΤΩΝ 1 2 3
Να γίνει πρόγραμμα σε γλώσσα προγραμματισμού Pascal και Γλωσσομάθεια το οποίο: A. Για κάθε αίθουσα θα διαβάζει τη χωρητικότητα της, θα υπολογίζει και θα εμφανίζει τον αριθμό των επιτηρητών που χρειάζονται. Ο υπολογισμός του αριθμού των επιτηρητών να γίνεται από function – συνάρτηση που θα κατασκευάσετε για το σκοπό αυτό, B. Θα σταματάει όταν εξασφαλισθεί ο απαιτούμενος συνολικός αριθμός θέσεων. Σημείωση: Να θεωρήσετε ότι η συνολική χωρητικότητα των αιθουσών του κτιρίου επαρκεί για τον αριθμό των υποψηφίων. 46. Σε ένα παρκινγκ η χρέωση γίνεται κλιμακωτά, όπως φαίνεται στον παρακάτω πίνακα: ΔΙΑΡΚΕΙΑ ΣΤΑΘΜΕΥΣΗΣ ΚΟΣΤΟΣ ΑΝΑ ΩΡΑ Μέχρι και 3 ώρες 2 € Πάνω από 3 έως και 5 ώρες 1,5 € Πάνω από 5 ώρες 1,3 € A. Να κατασκευάσετε πρόγραμμα σε γλώσσα προγραμματισμού Pascal και Γλωσσομάθεια το οποίο: 1. Για κάθε αυτοκίνητο που στάθμευσε στο παρκινγκ να: i. Διαβάζει τον αριθμό κυκλοφορίας μέχρι να δοθεί το 0. Να θεωρήσετε ότι ο αριθμός κυκλοφορίας μπορεί να περιέχει τόσο γράμματα όσο και αριθμούς, ii. Διαβάζει τη διάρκεια στάθμευσης σε ώρες και τη δέχεται μόνο εφ' όσον είναι μεγαλύτερη από το 0, iii. Καλεί υποπρόγραμμα για τον υπολογισμό του ποσού που πρέπει να πληρώσει ο κάτοχος του, iv. Εμφανίζει τον αριθμό κυκλοφορίας και το ποσό που αναλογεί, 2. Εμφανίζει το πλήθος των αυτοκινήτων που έμειναν στο παρκινγκ μέχρι και δυο ώρες. B. Να κατασκευάσετε το υποπρόγραμμα που καλείται στο ερώτημα 1-iii. 47. Μία εταιρεία ενοικίασης αυτοκινήτων έχει νοικιάσει 30 αυτοκίνητα τα οποία κατηγοριοποιούνται σε οικολογικά και συμβατικά. Η πολιτική χρέωσης για την ενοικίαση ανά κατηγορία και ανά ημέρα δίνεται στον παρακάτω πίνακα. ΗΜΕΡΕΣ
ΟΙΚΟΛΟΓΙΚΑ
ΣΥΜΒΑΤΙΚΑ
1-7
30€ ανά ημέρα
40€ ανά ημέρα
8-16
20€ ανά ημέρα
30€ ανά ημέρα
Ο τμηματικός προγραμματισμός
16
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς από 17 και άνω
10€ ανά ημέρα
20€ ανά ημέρα
A.
Να αναπτύξετε πρόγραμμα σε γλώσσα προγραμματισμού Pascal και Γλωσσομάθεια το οποίο: 1. Για κάθε αυτοκίνητο το οποίο έχει ενοικιαστεί: i. Διαβάζει την κατηγορία του («ΟΙΚΟΛΟΓΙΚΑ» ή «ΣΥΜΒΑΤΙΚΑ») και τις ημέρες ενοικίασης. ii. Καλεί υποπρόγραμμα με είσοδο την κατηγορία του αυτοκινήτου και τις ημέρες ενοικίασης και υπολογίζει με βάση τον παραπάνω πίνακα τη χρέωση. iii. Εμφανίζει το μήνυμα “χρέωση” και τη χρέωση που υπολογίσατε. 2. Υπολογίζει και εμφανίζει το πλήθος των οικολογικών και των συμβατικών αυτοκινήτων. B. Να κατασκευάσετε το κατάλληλο υποπρόγραμμα του ερωτήματος Α.1.ii . Σημείωση: 1. Δεν απαιτείται έλεγχος εγκυρότητας για τα δεδομένα εισόδου και 2. Ο υπολογισμός της χρέωσης δεν πρέπει να γίνει κλιμακωτά. 48. Η αεροπορική εταιρεία Πανολυμπιακή Airlines ναυλώνει έναν μικρό αριθμό αεροσκαφών της σε άλλες εταιρείες, προς 20.000€ την ημέρα το κάθε αεροσκάφος για την πρώτη εβδομάδα (σύνολο εβδομάδας 140.000€). Για κάθε επιπλέον μέρα το κόστος ενοικίασης προσαυξάνεται κατά 5% σε σχέση με την προηγούμενη μέρα (δηλ. την 8η ημέρα υπάρχει προσαύξηση κατά 5%). Η Παναθηναϊκή Airlines λόγω του αυξημένου αριθμού των δρομολογίων της διαπραγματεύεται με την πρώτη την ενοικίαση ενός αεροσκάφους. Μπορεί να διαθέσει όμως ένα συγκεκριμένο κεφάλαιο για τη ναύλωση του αεροσκάφους. Να αναπτυχθεί πρόγραμμα σε PASCAL και Γλωσσομάθεια , το οποίο: A. Διαβάζει το κεφάλαιο που έχει διαθέσιμο η εταιρεία για την ναύλωση του αεροσκάφους. Θεωρήστε ότι το κεφάλαιο είναι πραγματικός αριθμός. B. Υπολογίζει και εμφανίζει για πόσες μέρες μπορεί η εταιρεία να έχει στη διάθεση της το ναυλωμένο αεροσκάφος. Ενδεχομένως, η Παναθηναϊκή Airlines να χρειαστεί το αεροσκάφος για x ημέρες ακριβώς. Για τον σκοπό αυτό το πρόγραμμα: C. Να διαβάζει τον αριθμό x των ημερών που το χρειάζεται η εταιρεία D. Να καλεί υποπρόγραμμα (που θα κατασκευάσετε) που θα υπολογίζει το κόστος ναύλωσης ενός αεροσκάφους αν η εταιρεία το χρειάζεται για x ακριβώς ημέρες. E. Εμφανίζει με κατάλληλο μήνυμα το αποτέλεσμα του υποπρογράμματος. Παρατήρηση: θεωρήστε ότι όλα τα δεδομένα είναι έγκυρα. 49. Μία εταιρεία εμπορίας και πώλησης ηλεκτρονικών υπολογιστών απασχολεί έναν αριθμό υπαλλήλων στον τομέα της πώλησης οθονών. Κάθε ένας από τους υπαλλήλους αυτούς αμείβεται με βασικό μισθό 1000 ευρώ που προσαυξάνεται κλιμακωτά ανάλογα με τις μηνιαίες πωλήσεις που πραγματοποιεί. Το bonus που αντιστοιχεί σε κάθε υπάλληλο με βάση τον αριθμό των οθονών που πούλησε, υπολογίζεται με βάση τον παρακάτω πίνακα: Αριθμός οθονών που πούλησε Ο τμηματικός προγραμματισμός
Bonus για κάθε οθόνη
17
Κέρος Α. Ιωάννης | Καθηγητής Πληροφορικής ΠΕ19 | 1ο ΕΠΑΛ Κιλκίς
B.
1-50
1.5 €
51-100
3€
101 και άνω
3.5€
Για παράδειγμα: Αν ένας υπάλληλος πούλησε 52 οθόνες σε ένα μήνα, το bonus που του αντιστοιχεί είναι: 50*1.5+2*3=75+6=81€ A. Να κατασκευάσετε πρόγραμμα σε PASCAL και Γλωσσομάθεια το οποίο: 1. Διαβάζει τα ονοματεπώνυμα πολλών υπαλλήλων και την ποσότητα των οθονών που πούλησε ο κάθε ένας και σταματά μόλις δοθεί ως ονοματεπώνυμο ο χαρακτήρας *. 2. Καλεί υποπρόγραμμα που δέχεται ως είσοδο τον αριθμό των οθονών που πούλησε ο κάθε υπάλληλος και επιστρέφει το bonus που του αντιστοιχεί. 3. Εμφανίζει τον συνολικό μισθό κάθε υπαλλήλου (βασικό μισθό και bonus). 4. Εμφανίζει το ποσοστό των υπαλλήλων με συνολικό μισθό μεγαλύτερο από 1200€. Να κατασκευάσετε το υποπρόγραμμα που καλείται στο ερώτημα Α-2.
Ο τμηματικός προγραμματισμός
18