Η γλώσσα προγραμματισμού

PASCAL

Η γλώσσα PASCAL πήρε το όνομά της από το Γάλλο μαθηματικό και φιλόσοφο Blaise Pascal. Η πρώτη έκδοσή της παρουσιάστηκε το 1968 από τον Niklaus Wirth. Η Turbo Pascal κατασκευάστηκε το 1983 από την εταιρία Borland.

Μορφή Turbo Pascal προγράμματος

program όνομα προγράμματος;

var

δηλώσεις μεταβλητών;

begin

εντολές;

end.

 

Παράδειγμα

program greeting;

begin

write('H E L L O'); Εμφανίζει στην οθόνη H E L L O

readln;

end.

Κάθε εντολή της Pascal πρέπει να έχει στο τέλος (;)

Παρατηρήσεις

1. Το όνομα προγράμματος μπορεί να αποτελείται από λατινικά γράμματα, αριθμούς και την υπογράμμιση (Shift & -). Πρέπει ν' αρχίζει από γράμμα και δεν πρέπει να ξεπερνά τους 118 χαρακτήρες.

2. Οι εντολές του κυρίως προγράμματος μπαίνουν ανάμεσα σε begin και end. (Προσέξτε ότι το τελευταίο end του προγράμματος έχει στο τέλος τελεία).

3. Η εντολή readln μπαίνει στο τέλος των προγραμμάτων για να μπορούμε να δούμε τα αποτελέσματα στην οθόνη. Χωρίς αυτή η turbo pascal μας επαναφέρει στον editor (εκεί όπου γράφουμε το πρόγραμμα) χωρίς να προλάβουμε να δούμε τα αποτελέσματα.

Παράδειγμα

program absum;

var

a,b,sum: real; (* Δηλώσεις των μεταβλητών *)

begin

a:=10.75;

b:=20;

sum:=a+b;

writeln(sum);

readln;

end.

Όλες οι μεταβλητές ενός Pascal προγράμματος πρέπει να δηλώνονται. Με τη δήλωση μιας μεταβλητής, δεσμεύεται ο απαιτούμενος χώρος στη μνήμη του Η/Υ. Οι δηλώσεις των μεταβλητών γίνονται στο τμήμα δηλώσεων var (βλ. παρακάτω Δηλώσεις μεταβλητών).

Ονοματολογία μεταβλητών

Τα ονόματα των μεταβλητών πρέπει να ακολουθούν τους παρακάτω κανόνες:

α) Να αποτελούνται από 63 το πολύ χαρακτήρες. β) Μπορούν να περιέχουν λατινικά γράμματα, αριθμούς και την υπογράμμιση ( _ ). γ) Πρέπει ν' αρχίζουν από γράμμα. δ) Δεν πρέπει να είναι δεσμευμένες λέξεις π.χ. program, var, end κλπ. ε) Το όνομα του προγράμματος δεν πρέπει να έχει το ίδιο όνομα με κάποια μεταβλητή του προγράμματος. Στην περίπτωση αυτή εμφανίζεται το μήνυμα λάθους dublicate identifier.

Σωστά ονόματα: a, alpha, m2, Number_of_students

Λανθασμένα ονόματα: first+a, 2nd, begin, example 2

Ερωτήσεις

1) Μπορεί να χρησιμοποιηθεί μια μεταβλητή χωρίς να δηλωθεί; ........

2) Ποια από τα παρακάτω ονόματα μεταβλητών είναι λάθος και γιατί; a1, 2b, a1b2c3, a$, sum no, end

Δηλώσεις μεταβλητών (var)

To τμήμα δηλώσεων var μπαίνει πριν από το κυρίως πρόγραμμα (το οποίο αρχίζει με begin)var μεταβλητή : τύπος; Αν υπάρχουν πολλές μεταβλητές του ίδιου τύπου μπορούμε να τις δηλώσουμε στην ίδια γραμμή, χωρίζοντάς τες με κόμμα.

Παράδειγμα

var

aker:integer; x,y:real; name:string; epil:char;

a,b,c : integer; Προσέξτε ότι το όνομα της μεταβλητής χωρίζεται από τον τύπο της με (:)

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΤΗΣ TURBO PASCAL

Όνομα τύπου

real (πραγματικός)

integer (ακέραιος)

string (σειρά χαρακτήρων)

longint (ακέραιος)

Εύρος τιμών

 

-32768 .. 32767

Μέχρι 255 χαρακτήρες

-2147483648 .. 2147483648

Χώρος στη μνήμη

6 bytes

2 bytes

256 bytes

4 bytes

Ο ακέραιος τύπος integer: Δηλώνεται integer μια μεταβλητή που η τιμή της θα βρίσκεται μεταξύ του -32768 και του 32767 και θα είναι ακέραιος αριθμός. Σωστές τιμές: 1234, 0, -234 Λανθασμένες τιμές: 1.25 (είναι πραγματικός και όχι ακέραιος), 200000 (είναι μεγαλύτερος του 32767)

1) Όταν διαιρούμε τις τιμές δύο μεταβλητών ακέραιου τύπου, το αποτέλεσμα πρέπει να καταχωρείται σε μεταβλητή τύπου real.

2) Αν δηλώσουμε μία μεταβλητή τύπου integer και στη συνέχεια της δώσουμε π.χ. την τιμή 10.5 (η οποία δεν είναι ακέραιος αριθμός), κατά την εκτέλεση του προγράμματος θα εμφανιστεί το μήνυμα Type mismatch.

Σημείωση: Προσοχή στις πράξεις με ακέραιους. Π.χ. στον πολλαπλασιασμό δύο integer, μπορεί το γινόμενο, να ξεπερνά τα όρια του τύπου integer. Σ' αυτή την περίπτωση, το αποτέλεσμα θα είναι λανθασμένο, ακόμη κι αν η μεταβλητή του γινομένου δηλωθεί real ή longint. Για να έχουμε σωστό αποτέλεσμα, υπάρχουν δύο τρόποι:

α) η μία από τις δύο μεταβλητές που πολλαπλασιάζονται και η μεταβλητή του γινομένου να δηλωθούν τύπου longint ή real γιατί το γινόμενο integer * real δίνει αποτέλεσμα real και το γινόμενο integer * longint δίνει αποτέλεσμα longint.

β) Οι δύο μεταβλητές που πολλαπλασιάζονται ( π.χ. i και j ) να δηλωθούν integer, η μεταβλητή του γινομένου ( π.χ. ginomeno ) να δηλωθεί real και η εντολή καταχώρισης να είναι ως εξής:

ginomeno := 1.0 * i *j έτσι ώστε το γινόμενο 1.0 που θεωρείται real επί τους 2 ακέραιους να δίνει αποτέλεσμα real.

Ο πραγματικός τύπος real

O τύπος real χρησιμοποιείται για να καταχωρίσουμε στις μεταβλητές δεκαδικές τιμές ή ακέραιες τιμές που είναι έξω από τα όρια του longint.

Ο τύπος stringO τύπος string χρησιμοποιείται για μεταβλητές, η τιμή των οποίων είναι μια σειρά χαρακτήρων (γράμματα, ψηφία, σύμβολα). Μια μεταβλητή τύπου string καταλαμβάνει στη μνήμη χώρο 256 bytes αλλά η τιμή της μπορεί να είναι μέχρι 255 χαρακτήρες.

Σημείωση: Το ένα επιπλέον byte δεσμεύεται για να κρατηθεί εκεί το πραγματικό μήκος του string δηλ. πόσους πραγματικά χαρακτήρες πληκτρολογήσαμε για τιμή του string. Π.χ. έστω η μεταβλητή onoma είναι τύπου string και της δώσαμε την τιμή ΜΑΡΙΑ. Στη μνήμη δεσμεύτηκαν 256 bytes αλλά η τιμή της είναι 5 χαρακτήρες. Ο αριθμός 5 αποθηκεύεται στο ένα επιπλέον byte που κρατήθηκε στη μνήμη.

Μπορούμε στον τύπο string να δηλώσουμε πόσους το πολύ χαρακτήρες θα περιέχει η τιμή της μεταβλητής. Αυτό γίνεται με τη δήλωση string[n] όπου το n είναι ένας αριθμός από το 1 μέχρι το 255 και συμβολίζει το μέγιστο πλήθος των χαρακτήρων που μπορεί να δεχθεί η τιμή της μεταβλητής. Π.χ. αν δηλώσουμε μια μεταβλητή τύπου string[10], η τιμή της μπορεί να περιέχει το πολύ 10 χαρακτήρες. (Σ' αυτή την περίπτωση δεσμεύονται στη μνήμη 11 bytes.)

 

Βασικές εντολές της Pascal

Η εντολή clrscr

clrscr

Με την εντολή clrscr (clear screen) "καθαρίζουμε" την οθόνη.

Για να εκτελεσθεί απ' την Pascal η εντολή clrscr, πρέπει κάτω από τη γραμμή Program όνομα προγράμματος; να γράψουμε την εντολή uses crt; H crt είναι μία μονάδα (unit) της Pascal που περιέχει χρήσιμες εντολές της γλώσσας.

H εντολή καταχώρισης

Γενικός τύπος

μεταβλητή := σταθερά; ή

μεταβλητή := άλλη μεταβλητή; ή

μεταβλητή := παράσταση;

Υπολογίζεται η τιμή δεξιά του := και τοποθετείται στη μεταβλητή αριστερά του :=

Η τιμή στο 2ο μέλος, θα πρέπει να είναι του ίδιου τύπου με τη μεταβλητή στο 1ο μέλος. Μία εξαίρεση σ' αυτόν τον κανόνα είναι η εξής: μεταβλητή τύπου real := τιμή ακέραιου τύπου. Το αντίστροφο δεν γίνεται και εμφανίζεται το μήνυμα λάθους Type mismatch.

Παραδείγματα

1. a=2;

b:=3;

sum:=a+b;

Υπολογίζεται η παράσταση του 2ου μέλους 2+3 και η τιμή 5 καταχωρείται στη μεταβλητή sum.

2. a:=2;

b:=a;

To a παίρνει την τιμή 2 και το b την τιμή του a δηλ. το 2, άρα το b παίρνει την τιμή 2.

3. a:=1; Η μεταβλητή a παίρνει την τιμή 1

b:=2; Η μεταβλητή b παίρνει την τιμή 2

t:=a; H μεταβλητή t παίρνει την τιμή της a δηλ. 1

a:=b; Η μεταβλητή a παίρνει την τιμή της b δηλ. 2 (άρα χάνει την τιμή 1 που είχε)

b:=t; Η μεταβλητή b παίρνει την τιμή της t δηλ. 1 (άρα χάνει την τιμή 2 που είχε)

4. a:=5;

a:=a+1; Η μεταβλητή a παίρνει την τιμή που είχε δηλ. 5 + 1 δηλ. η νέα τιμή της a είναι 6.

5. s:='Η ΓΛΩΣΣΑ PASCAL';

Η μεταβλητή s παίρνει τιμή τη σειρά χαρακτήρων Η ΓΛΩΣΣΑ PASCAL.

Οι εντολές write και writeln

Με τις εντολές αυτές τυπώνονται (εμφανίζονται) στην οθόνη τα αποτελέσματα των προγραμμάτων κ.λ.π.

Μορφές της εντολής write

Εμφανίζει στην οθόνη την τιμή της μεταβλητής και στη συνέχεια δεν αλλάζει γραμμή εκτύπωσης.

Εμφανίζει στην οθόνη τις τιμές των μεταβλητών, όλες στην ίδια γραμμή χωρίς κανένα κενό (εκτός από τις μεταβλητές τύπου real που αν η τιμή τους είναι θετική αφήνεται ένα κενό για το πρόσημο +) και στη συνέχεια δεν αλλάζει γραμμή εκτύπωσης.

Εμφανίζει τη σειρά χαρακτήρων όπως είναι και στη συνέχεια δεν αλλάζει γραμμή εκτύπωσης.

Εμφανίζει τη σειρά χαρακτήρων όπως είναι και δίπλα (στην ίδια γραμμή χωρίς κανένα κενό) την τιμή της μεταβλητής και στη συνέχεια δεν αλλάζει γραμμή εκτύπωσης.

Μορφές της εντολής writeln

Εμφανίζει στην οθόνη την τιμή της μεταβλητής και στη συνέχεια αλλάζει γραμμή εκτύπωσης.

Εμφανίζει στην οθόνη τις τιμές των μεταβλητών, όλες στην ίδια γραμμή χωρίς κανένα κενό (εκτός από τις μεταβλητές τύπου real που αν η τιμή τους είναι θετική αφήνεται ένα κενό για το πρόσημο +) και στη συνέχεια αλλάζει γραμμή εκτύπωσης.

Εμφανίζει τη σειρά χαρακτήρων όπως είναι και στη συνέχεια αλλάζει γραμμή εκτύπωσης.

Εμφανίζει τη σειρά χαρακτήρων όπως είναι και δίπλα (στην ίδια γραμμή χωρίς κανένα κενό) την τιμή της μεταβλητής και στη συνέχεια αλλάζει γραμμή εκτύπωσης.

Αλλάζει απλώς η γραμμή εκτύπωσης. Χρησιμοποιείται συνήθως για να αφήσουμε μια κενή γραμμή.

Αλλαγή της γραμμής εκτύπωσης σημαίνει ότι μία επόμενη write ή writeln θα τυπώσει στην επόμενη γραμμή.

Παραδείγματα

1) writeln('PASCAL');

Εμφανίζεται στην οθόνη η λέξη PASCAL

2) a:=5;

writeln(a); (* Εμφανίζεται η τιμή της μεταβλητής a δηλ. 5. *)

x:=15; y:=10;

sum:=x+y;

writeln('Το άθροισμα του ',x, ' και του ',y,' είναι ',sum);

Εμφανίζεται στην οθόνη:

Το άθροισμα του 15 και του 10 είναι 25

________________________________________________________________________

Οι αριθμοί τύπου real τυπώνονται σε εκθετική μορφή:

x.xxxxxxxxxxΕxx όπου x: ψηφία

Π.χ. ο real 1.5000000000Ε+05 είναι ο αριθμός 150000 -5.0000000000E+00 είναι ο αριθμός -5

Για να εμφανιστούν σε δεκαδική μορφή μπορούμε στις εντολές write και writeln να χρησιμοποιήσουμε τη μορφή:

Πραγματική μεταβλητή:n:m

όπου n και m ακέραιοi αριθμoί.Σ'αυτή την περίπτωση, τυπώνεται η τιμή της μεταβλητής σε n θέσεις συνολικά (στις οποίες συμπεριλαμβάνεται το πρόσημο και η υποδιαστολή (.), με m δεκαδικά ψηφία. Αν η τιμή αποτελείται από λιγότερα ψηφία, αφήνονται από αριστερά ανάλογα κενά.

Π.χ. a:=12.5;

writeln(a:7:2);

Θα εμφανίσει στην οθόνη τον αριθμό 12.50 αφήνοντας όμως από αριστερά του αριθμού δύο κενά (το ένα είναι του πρόσημου που είναι το +).

Σημείωση: Αν η τιμή της μεταβλητής έχει περισσότερα ακέραια ψηφία από τον αριθμό n, τυπώνεται ολόκληρη (δηλ. το n αυξάνεται αυτόματα όσο χρειάζεται). Αν η τιμή της μεταβλητής έχει περισσότερα δεκαδικά ψηφία από τον αριθμό m τότε τα επιπλέον δεν εμφανίζονται.

Παράδειγμα

Δίνονται το όνομα, το επώνυμο, οι ώρες εργασίας και η αμοιβή ανά ώρα ενός υπαλλήλου. Να υπολογισθεί το ημερομίσθιό του και να τυπωθούν τα αποτελέσματα ως εξής:

ΠΕΤΡΟΥ ΙΩΑΝΝΗΣ

Ώρες εργασίας : 5

Αμοιβή ανά ώρα: 3000

Ημερομίσθιο : 15000

 

program misthodosia;

var onom,epon:string[20];

wres:integer; amoib, hmerom:longint;

begin

onom:='ΙΩΑΝΝΗΣ';

epon:='ΠΕΤΡΟΥ';

wres:=5;

amoib:=3000;

hmerom:=wres*amoib;

writeln(epon,' ',onom);

writeln('Ώρες εργασίας : ',wres);

writeln('Αμοιβή ανά ώρα: ', amoib);

writeln('Ημερομίσθιο : ',hmerom);

readln;

end.

Η εντολή readln

readln(μεταβλητή);

Η εντολή readln χρησιμοποιείται για να δώσουμε τιμή σε μια μεταβλητή την ώρα της εκτέλεσης του προγράμματος. Συνήθως πριν από την εντολή readln χρησιμοποιούμε την εντολή write έτσι ώστε να εμφανισθεί στην οθόνη ένα σχόλιο σχετικό με τη μεταβλητή που πρόκειται να πάρει τιμή από τη readln που ακολουθεί.

Παράδειγμα

program greetings;

var

onom:string[20];

begin

write('Πως σε λένε; ');

readln(onom);

writeln;

writeln('Γεια σου, ',onom);

readln;

end.

Η εντολή readln χωρίς μεταβλητές χρησιμοποιείται για να καθυστερήσουμε κάποιες φορές την εκτέλεση του προγράμματος μέχρι να πατηθεί το ENTER. δηλ. περιμένει μέχρι να πατηθεί το ENTER.

Ασκήσεις

  1. Δίνονται δύο αριθμοί. Να υπολογισθεί το άθροισμα και το γινόμενό τους.
  2. Δίνονται τρεις αριθμοί. Να υπολογισθεί ο μέσος όρος τους.
  3. Δίνονται οι κάθετες πλευρές ορθογωνίου τριγώνου. Να υπολογισθεί η υποτείνουσά του.
  4. Δίνονται οι πλευρές και το ύψος ενός τραπεζίου. Να υπολογισθεί το εμβαδό του.
  5. Να γραφεί πρόγραμμα μετατροπής των βαθμών fahreneit σε βαθμούς Κελσίου.
  6. Βαθμοί Κελσίου=5*(Βαθμοί fahreneit-32)/9

  7. Δίνεται ένα ποσό σε δρχ. Να μετατραπεί σε δολάρια και γερμανικά μάρκα
  8. Δίνεται η περιγραφή, η τιμή χωρίς Φ.Π.Α. και ο συντελεστής Φ.Π.Α. ενός προϊόντος. Να υπολογισθεί η τελική τιμή του προϊόντος.
  9. Δίνονται οι ημέρες που δουλεύει ένας εργάτης το μήνα και το ημερομίσθιό του (αμοιβή την ημέρα). Αν οι κρατήσεις του είναι το 20% των μηνιαίων αποδοχών του, να υπολογισθούν ο μικτός μηνιαίος μισθός του (πριν γίνουν οι κρατήσεις), οι κρατήσεις και ο καθαρός μηνιαίος μισθός του.
  10. Μια εταιρία φορολογείται με συντελεστή 30% επί των κερδών της. Αν δίνονται τα κέρδη της, να υπολογισθεί ο φόρος που θα πληρώσει και το ποσό που τελικά θα της μείνει.
  11. Δίνονται το κεφάλαιο που καταθέτει κάποιος στην τράπεζα για δύο χρόνια και το επιτόκιο. Να υπολογισθεί ο τόκος στο τέλος του 1ου χρόνου, ο τόκος στο τέλος του 2ου χρόνου και πόσο τελικά γίνεται το κεφάλαιο.

 

Η εντολή if

1η μορφή

if συνθήκη then εντολή;Αν ισχύει η συνθήκη τότε θα εκτελεσθεί η εντολή.

Παράδειγμα

readln(n);

if n>=10 then writeln('ΠΡΟΑΓΕΤΑΙ');

2η μορφή

if συνθήκη then εντολή1 else εντολή2;

Αν ισχύει η συνθήκη τότε θα εκτελεσθεί η εντολή1. Αν δεν ισχύει η συνθήκη τότε θα εκτελεσθεί η εντολή2.

Παράδειγμα

readln(n);

if n>=10 then writeln('ΠΡΟΑΓΕΤΑΙ') else writeln('ΑΠΟΡΡΙΠΤΕΤΑΙ');

3η μορφή

if συνθήκη then (* όχι ; *)

begin

εντολή; εντολή; ........

end;

Αν ισχύει η συνθήκη τότε θα εκτελεσθούν οι εντολές που βρίσκονται μεταξύ του begin και του end;

Παράδειγμα

readln(n);

if n>0 then

begin

writeln('ΘΕΤΙΚΟΣ ΑΡΙΘΜΟΣ');

r:=sqrt(n);

writeln('Τετραγωνική ρίζα=',r:7:2);

end;

4η μορφή

if συνθήκη then

begin

εντολή; εντολή; ........

end (* Προσοχή αυτό το end δεν έχει ; *)

else

begin

εντολή; εντολή; ........

end;

Αν ισχύει η συνθήκη τότε θα εκτελεσθούν οι εντολές που βρίσκονται μεταξύ του πρώτου begin .. end Αν δεν ισχύει η συνθήκη τότε θα εκτελεσθούν οι εντολές που βρίσκονται μεταξύ του δεύτερου begin .. end;

Παράδειγμα

program emvada;

uses crt;

var

epil,b,y,m,p:integer;

e:real;

begin

clrscr;

writeln('1. Εμβαδό τριγώνου - 2. Εμβαδό ορθογωνίου');

write('Επιλέξτε 1 ή 2 :'); readln(epil);

if epil=1 then

begin

write('Βάση τριγώνου:'); readln(b);

write('Ύψος τριγώνου:'); readln(y);

e:=b*y/2;

end

else

begin

write('Μήκος:'); readln(m);

write('Πλάτος:'); readln(p);

e:=m*p;

end;

writeln('Εμβαδό=',e:7:1);

readln;

end.

Ερώτηση: Αν ο χρήστης δώσει στη μεταβλητή epil την τιμή 3, ποιες εντολές θα εκτελεστούν;

Στη συνθήκη της if μπορεί να χρησιμοποιηθούν οι λογικοί τελεστές and και or. Σ' αυτή την περίπτωση κλείνουμε τις επιμέρους συνθήκες σε παρενθέσεις.

Παράδειγμα

readln(x); readln(y);if (x=0) and (y=0) then writeln('ΜΗΔΕΝ');

if (x=3) or (y=3) then writeln('ΛΑΘΟΣ');

Ασκήσεις

  1. Να γραφεί πρόγραμμα που θα υπολογίζει το μέγιστο 2 ακέραιων αριθμών και θα τον τοποθετεί στη μεταβλητή max.
  2. Να γραφεί πρόγραμμα που θα υπολογίζει το μέγιστο 3 ακέραιων αριθμών και θα τον τοποθετεί στη μεταβλητή max.
  3. Δίνονται 2 θετικοί αριθμοί. Να υπολογισθεί η διαφορά τους έτσι ώστε να είναι πάντα θετική.
  4. Να γραφεί πρόγραμμα που θα δέχεται έναν ακέραιο αριθμό μεταξύ του 1 και του 9 και θα τον τυπώνει. Αν δε δοθεί αριθμός μεταξύ του 1 και του 9, το πρόγραμμα να τυπώνει "Λάθος αριθμός"
  5. Να γραφεί πρόγραμμα που θα δέχεται έναν ακέραιο αριθμό. Αν είναι μεγαλύτερος ή ίσος του 0 θα τυπώνεται η ένδειξη "ΘΕΤΙΚΟΣ ή ΜΗΔΕΝ" και θα υπολογίζεται η τετραγωνική του ρίζα ενώ αν είναι αρνητικός θα τυπώνεται η ένδειξη "ΑΡΝΗΤΙΚΟΣ" και θα υπολογίζεται το τετράγωνό του.
  6. Ένα προϊόν πωλείται ως εξής: α) για λιγότερα από 100 τεμάχια προς 1500 δρχ. το ένα β) για 100 και περισσότερα τεμάχια προς 1000 δρχ. το ένα. Να δοθεί ο αριθμός των τεμαχίων και να υπολογισθούν τα χρήματα που εισπράχθηκαν.
  7. Να γραφεί πρόγραμμα το οποίο θα βρίσκει πόσοι από τους 5 αριθμούς που δίνονται είναι θετικοί.
  8. Να δοθούν οι συντελεστές μιας δευτεροβάθμιας εξίσωσης και να υπολογισθούν οι ρίζες της (αν υπάρχουν).
  9. Μια εταιρία δίνει επίδομα στους υπαλλήλους της με βάση τον αριθμό παιδιών που έχουν. Για 1 παιδί 5%, για 2 παιδιά 10%, για 3 παιδιά 15% και για περισσότερα από 3 20%. Να δοθεί ο μισθός ενός υπαλλήλου και ο αριθμός παιδιών του και να υπολογισθεί το επίδομά του.
  10. Ένας πωλητής παίρνει ποσοστό 10% επί των πωλήσεων και δικαιούται bonus 10.000 δρχ. αν οι πωλήσεις του υπερβαίνουν τις 100.000 δρχ. Να δοθεί το ποσό των πωλήσεων και να υπολογισθούν τα χρήματα που θα πάρει ο πωλητής
  11. Η κεντρική θέρμανση ενός εργοστασίου ξεκινά αν η θερμοκρασία σε 3 διαφορετικά σημεία είναι (και στα 3 σημεία) μικρότερη των 15ο Κελσίου. Να δοθούν οι 3 θερμοκρασίες και να τυπωθεί μήνυμα ΟΝ ή OFF ανάλογα αν πρέπει να λειτουργήσει η θέρμανση ή όχι.
  12. Δίνεται ακέραιος. Να τυπώνεται η λέξη ΖΥΓΟΣ αν είναι ζυγός ή η λέξη ΜΟΝΟΣ αν είναι μονός.
  13. Ένας μαθητής παίρνει τρεις προφορικούς βαθμούς και ένα γραπτό. Να υπολογισθεί ο μέσος όρος βαθμολογίας του, στη συνέχεια να στρογγυλευθεί και να τυπωθεί η ένδειξη ΠΕΡΑΣΕ (αν ο μέσος όρος είναι μεγαλύτερος ή ίσος του 10) ή ΑΠΕΤΥΧΕ.
  14. Τα αυτοκίνητα που νοικιάζει ένα γραφείο χρεώνονται με 200 δρχ. το ΚΜ για τα πρώτα 100 ΚΜ και με 250 δρχ. το ΚΜ για τα επιπλέον ΚΜ. Στο ποσό αυτό προστίθεται πάγιο 5000 δρχ. Να δοθούν τα ΚΜ που διένυσε κάποιος και να υπολογισθεί η συνολική του χρέωση.
  15. Η εντολή repeat ... until

    repeat

    εντολή1; εντολή2; ...........

    until συνθήκη;

    Με την εντολή repeat, οι εντολές (μεταξύ του repeat και του until) επαναλαμβάνονται μέχρι η συνθήκη του until να γίνει αληθής (να ισχύσει).

    Παρατήρηση

    Οι εντολές εκτελούνται τουλάχιστον μία φορά, γιατί ο έλεγχος της συνθήκης γίνεται στο τέλος. Έτσι ακόμη και αν η συνθήκη ισχύει, οι εντολές θα εκτελεσθούν μια φορά και μετά θα συνεχισθεί η εκτέλεση με την εντολή που βρίσκεται κάτω απ' την until.

    Προσοχή Οι εντολές εκτελούνται όσο η συνθήκη δεν ισχύει.

    Παράδειγμα

    Να γραφεί πρόγραμμα στο οποίο θα δίνεται ένας αριθμός x και θα υπολογίζεται το τετράγωνό του. Η διαδικασία θα επαναλαμβάνεται μέχρι να δοθούν συνολικά 10 αριθμοί.

    program tetragona;

    var

    i:integer; x,t:longint;

    begin

    i:=0;

    repeat

    i:=i+1;

    write(i,'ος αριθμός:'); readln(x);

    t:=sqrt(x);

    writeln('Τετράγωνο=',t);

    until i=10;

    readln;

    end.

    Ασκήσεις

  16. Δίνονται Ν αριθμοί. Να βρεθεί ο μέσος όρος τους.
  17. Να διαβαστούν 2 αριθμοί και να τυπωθεί το άθροισμά τους. Η διαδικασία να επαναλαμβάνεται μέχρι να δοθεί α) σε έναν απ' τους δύο η τιμή 0 β) και στους δύο η τιμή 0
  18. Να διαβαστούν 10 αριθμοί στην ίδια θέση μνήμης α και να υπολογισθεί το γινόμενό τους.
  19. Δίνονται Ν αριθμοί. Να βρεθεί πόσοι είναι θετικοί, πόσοι αρνητικοί και πόσοι μηδέν.
  20. Να βρεθεί ο μεγαλύτερος και ο μικρότερος από Ν αριθμούς.
  21. Για Ν μαθητές δίνονται τα εξής στοιχεία: Ονοματεπώνυμο και αριθμός απουσιών. Να βρεθούν: α) Το ονοματεπώνυμο του μαθητή με τις περισσότερες απουσίες β)Το πλήθος των μαθητών που έχουν πάνω από 50 απουσίες γ) Ο μέσος όρος απουσιών.
  22. Δίνονται Ν αριθμοί μεταξύ του 1 και του 6. Να βρεθεί το πλήθος των άσσων, των 2ριών, των 3ριών, των 4ριων, των 5ριών και των 6ριών.
  23. Δίνεται το ενοίκιο που πληρώνει κάποιος σήμερα, το οποίο αυξάνεται κάθε 2 χρόνια κατά 15%. Να υπολογισθεί σε πόσα χρόνια θα διπλασιασθεί.
  24. Η εντολή for

    1η μορφή

    for μεταβλητή := τιμή1 to τιμή2 do

    begin

    εντολή1;

    εντολή2;

    .....

    end;

    H μεταβλητή αρχικά παίρνει την τιμή1, εκτελούνται οι εντολές μεταξύ του begin και του end, στη συνέχεια η μεταβλητή αυξάνεται κατά 1, εκτελούνται πάλι οι εντολές μεταξύ του begin και του end κ.ο.κ. μέχρι που η μεταβλητή παίρνει την τιμή2 και εκτελούνται για τελευταία φορά οι εντολές μεταξύ του begin και του end.

    Παρατηρήσεις

    Η μεταβλητή δεν πρέπει να είναι τύπου real ή string.

    H τιμή της μεταβλητής της for μπορεί να χρησιμοποιηθεί στις εντολές μέσα στη for, αλλά καλό είναι να μην αλλάζει μέσα στη for.

    Κατά την έξοδο από το βρόγχο της for, η μεταβλητή έχει την τιμή2.

    Aν η τιμή2 είναι μικρότερη της τιμής1, οι εντολές δεν θα εκτελεσθούν καμία φορά και θα συνεχισθεί η εκτέλεση με την εντολή που βρίσκεται κάτω απ' το end.

    Για μία μόνο εντολή, δεν χρειάζεται begin και end.

    Παράδειγμα

    Να γραφεί πρόγραμμα που να υπολογίζει το άθροισμα 10 ακέραιων αριθμών που δίνονται από το χρήστη.

    program athroisma;

    uses crt;

    var

    x,i,sum:integer;

    begin

    clrscr; sum:=0;

    for i:=1 to 10 do

    begin

    write(i,'ος αριθμός:'); readln(x);

    sum:=sum+x;

    end;

    writeln('Aθροισμα = ',sum); readln;

    end.

    2η μορφή

    for μεταβλητή := τιμή1 downto τιμή2 do

    begin

    εντολή1;

    εντολή2;

    .....

    end;

    H μεταβλητή αρχικά παίρνει την τιμή1, εκτελούνται οι εντολές μεταξύ του begin και του end, στη συνέχεια η μεταβλητή μειώνεται κατά 1, εκτελούνται πάλι οι εντολές μεταξύ του begin και του end κ.ο.κ. μέχρι που η μεταβλητή παίρνει την τιμή2 και εκτελούνται για τελευταία φορά οι εντολές μεταξύ του begin και του end. Η τιμή1 πρέπει να είναι μεγαλύτερη της τιμής2.

    Ασκήσεις

  25. Να υπολογισθούν: α) 1+2+3+...+Ν β) 1*2*3*...*Ν γ) 1*2+2*3+...+(Ν-1)*Ν
  26. Να εκτυπωθούν όλοι οι ζυγοί από το 2 έως το Ν
  27. Για Ν είδη δίνονται τα εξής στοιχεία: Κωδικός, ποσότητα, τιμή μονάδος και όριο ασφάλειας. Να βρεθεί η συνολική αξία (ποσότητα * τιμή μονάδος) των ειδών και να τυπωθούν οι κωδικοί των ειδών που η ποσότητα τους είναι κάτω από το όριο ασφάλειας.
  28. Για Ν αυτοκίνητα δίνονται ο αριθμός κυκλοφορίας και ο αριθμός ατυχημάτων. Να υπολογισθεί ο μέσος όρος ατυχημάτων και να βρεθεί ο αριθμός κυκλοφορίας του αυτοκινήτου με τα περισσότερα ατυχήματα
  29. Procedures (διαδικασίες) χωρίς παραμέτρους

    Οι Procedures είναι τμήματα του προγράμματος με αυτόνομη κατά κάποιο τρόπο εργασία. Όπως σε ένα κείμενο χωρίζουμε παραγράφους για να είναι πιο ευανάγνωστο, έτσι ένα πρόγραμμα Pascal μπορούμε να το χωρίσουμε σε procedures που η καθεμιά εκτελεί μία ανεξάρτητη εργασία.

    Procedures procedure όνομα διαδικασίας;

    var

    τοπικές μεταβλητές;

    begin

    εντολές;

    .............

    end;

    Οι τοπικές μεταβλητές που ορίζονται μέσα σε μια procedure ισχύουν μόνο μέσα σ' αυτή και καταστρέφονται μετά την έξοδο από την procedure.

    Για να καλέσουμε μια procedure χωρίς παραμέτρους από κάποιο σημείο του προγράμματός μας, γράφουμε απλώς το όνομά της.

    Οι procedures γράφονται πριν από το κυρίως πρόγραμμα και πριν από το σημείο που καλούνται.

    Παράδειγμα

    program add_subtract;

    var Οι μεταβλητές του κυρίως προγράμματος ονομάζονται ολικές μεταβλητές και ισχύουν σε όλο το πρόγραμμα

    a,b:real;

    epil:integer;

    procedure add;

    var Η μεταβλητή sum ισχύει μόνο μέσα στην add

    sum:real;

    begin

    sum:=a+b;

    writeln('Αθροισμα=',sum:5:1);

    end;

    procedure subtract;

    var Η μεταβλητή sub ισχύει μόνο μέσα στην substact

    sub:real;

    begin

    sub:=a-b;

    writeln('Διαφορά=',sub:5:1);

    end;

    procedure wait;

    begin

    write('Πατήστε enter για συνέχεια');

    readln;

    end;

    begin (* κυρίως προγράμματος *)

    write('1ος αριθμός: '); readln(a);

    write('2ος αριθμός: '); readln(b);

    repeat

    write('1. Πρόσθεση 2. Αφαίρεση : '); readln(epil);

    until (epil=1) or (epil=2);

    if epil=1 then add else subtract;

    wait;

    end.

    Ασκήσεις

  30. Να γραφεί πρόγραμμα το οποίο θα έχει τις επιλογές: 1. Εύρεση μεγίστου 3 αριθμών 2. Εύρεση ελαχίστου 3 αριθμών 3. Εύρεση μέσου όρου 3 αριθμών. Η κάθε επιλογή να είναι procedure χωρίς παραμέτρους. Οι 3 αριθμοί δίνονται στο κυρίως πρόγραμμα.
  31. Να γραφεί procedure η οποία θα υπολογίζει την υποτείνουσα ορθογωνίου τριγώνου. Οι πλευρές του τριγώνου δίνονται στο κυρίως πρόγραμμα
  32. Να γραφεί procedure που θα ανταλλάσσει τις τιμές 2 μεταβλητών. Οι τιμές δίνονται στο κυρίως πρόγραμμα.

ΠΡΑΞΕΙΣ ΣΕ PASCAL

ΠΡΑΞΗ

PASCAL

Πρόσθεση

+

Αφαίρεση

-

Πολλαπλασιασμός

*

Διαίρεση

/

Ακέραια διαίρεση

a div b

Υπόλοιπο διαίρεσης

a mod b

Τετραγωνική ρίζα

sqrt(x)

Ύψωση στο τετράγωνο

sqr(x)

Ημίτονο x

sin(x) x σε rad, όχι σε μοίρες

Συνημίτονο x

cos(x) x σε rad, όχι σε μοίρες

Απόλυτη τιμή

abs(x)

Αποκοπή δεκαδικών

trunc(x) ή int(x) *

Δεκαδικό μέρος πραγματικού αριθμού

frac(x) **

Στρογγύλευση δεκαδικού αριθμού

round(x)

* Το αποτέλεσμα της trunc είναι longint, ενώ της int είναι real.** Π.χ. frac(12.57) = 0.57

 

 Βασικές λειτουργίες της Turbo Pascal

1. Εισαγωγή στην Turbo Pascal

Εισερχόμαστε στον editor της Turbo Pascal όπου μπορούμε να γράψουμε το πρόγραμμά μας.

Για να βγούμε από τον editor στο μενού, πατάμε F10, ενώ από το μενού για να εισέλθουμε πάλι στον editor πατάμε ESC.

2. Εκτέλεση προγράμματος (RUN)

Μόλις γράψουμε το πρόγραμμά μας, πρέπει να το εκτελέσουμε (RUN). Πατώντας το πλήκτρο F10 βγαίνουμε στο μενού. Με δεξί βελάκι επιλέγουμε RUN και πατάμε ENTER δύο φορές.

3. Αποθήκευση του προγράμματος (SAVE)

Βγαίνουμε με F10 στο μενού FILE (αν δεν είναι ήδη επιλεγμένο, χρησιμοποιούμε τα βελάκια για να το επιλέξουμε). και πατάμε ENTER. Επιλέγουμε με το κάτω βελάκι SAVE και πατάμε ENTER. Στο παράθυρο που εμφανίζεται πληκτρολογούμε το όνομα που θέλουμε να δώσουμε στο πρόγραμμά μας και πατάμε ENTER.

4. Άνοιγμα προγράμματος (OPEN)

Από το μενού FILE, επιλέγουμε OPEN πατάμε ENTER και στο παράθυρο που εμφανίζεται πατάμε πάλι ENTER. Εμφανίζεται νέο παράθυρο με όλα τα προγράμματα που υπάρχουν π.χ. στη δισκέτα. Επιλέγουμε με τα βελάκια αυτό που θέλουμε και πατάμε ENTER..

5. Έξοδος από την Turbo Pascal (QUIT)

Βγαίνουμε στο μενού FILE (με F10), επιλέγουμε με το κάτω βελάκι QUIT και πατάμε ENTER.