ΔΟΜΗΜΕΝΟΣ  ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

 

ΗΜΕΡΟΜΗΝΙΑ

ΗΜΕΡΕΣ           

ΩΡΕΣ

 

Παραδόθηκε

18 ΣΕΠΤΕΜΒΡΗ

ΠΑΡΑΣΚΕΥΗ

3η

Ας Γνωριστούμε , εισαγωγή

 

21 ΣΕΠΤΕΜΒΡΗ

ΔΕΥΤΕΡΑ

4η,5η,6η

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

Αναγνωριστικά, Δεσμευμένες λέξεις ,ειδικά σύμβολα

Εμβαδόν ορθογωνίου,5Χ10

 

ΑΡΧΕΣ ΟΚΤΩΒΡΗ

 

 

Εμβαδόν ορθογωνίου, με read

Εμβαδόν Τριγώνου με read

Εμβαδόν κύκλου

Ασκ. Tb=(a+b+2*G)/4 με read

15 ΟΚΤΩΒΡΗ

ΠΕΜΠΤΗ

5η

Παράδειγμα εκτέλεσης βήμα –βήμα,

αναγνωριστικά

div-mod  S>H:M:S

23 ΟΚΤΩΒΡΗ

ΠΑΡΑΣΚΕΥΗ

6η,7η

Κελσίου-Φαρενάιτ

29 ΟΚΤΩΒΡΗ

ΠΕΜΠΤΗ

5η,6η,7η

Κεφ 1 θεωρία

Τυποποιημένες Συναρτήσεις, σταθερές με αναγνωριστικά, ασκ επιτόκιο

30 ΟΚΤΩΒΡΗ

ΠΑΡΑΣΚΕΥΗ

6η,7η

Μεγαλύτερος 2 αριθμών, με ίσους,

Παραλλαγή  με βαθμούς μαθητών

5 ΝΟΕΜΒΡΗ

ΠΕΜΠΤΗ

5η,6η,7η

Κεφ 2 θεωρία ,φωτοτυπία

,ασκ σε pascal

6 ΝΟΕΜΒΡΗ

ΠΑΡΑΣΚΕΥΗ

6η,7η

Τυποποιημένες Συναρτήσεις

Ασκ τεστ για σκορ?

12 ΝΟΕΜΒΡΗ

ΠΕΜΠΤΗ

4η,5η,7η

Κεφ 3 θεωρία

13 ΝΟΕΜΒΡΗ

ΠΑΡΑΣΚΕΥΗ

6η,7η

Hlikia,menu -if

19 ΝΟΕΜΒΡΗ

ΠΕΜΠΤΗ

4η,5η,7η

Κεφ 4 θεωρία

Y=1/x-1/(x-2)

20 ΝΟΕΜΒΡΗ

ΠΑΡΑΣΚΕΥΗ

6η,7η

Εμβαδόν Τριγώνου με τύπο του Ήρωνα

Τριψήφιος-απομόνωση των ψηφίων του

27 ΝΟΕΜΒΡΗ

ΠΑΡΑΣΚΕΥΗ

6η,7η

 

3 ΔΕΚΕΜΒΡΗ

ΠΕΜΠΤΗ

4η,5η,7η

διαγώνισμα

7,12,13 ΔΕΚΕΜΒΡΗ

 

 

κλειστό

17 ΔΕΚΕΜΒΡΗ

ΠΕΜΠΤΗ

4η,5η,7η

Εντολή while

Παρ. 10 φορές μπράβο

Απόφαση χρήστη

Άθροισμα αριθμών –χρήστη, 0

Μέσος όρος

 

18 ΔΕΚΕΜΒΡΗ

ΠΑΡΑΣΚΕΥΗ

6η,7η

επανάληψη

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

18 ΣΕΠΤΕΜΒΡΗ.

Εισαγωγή

Τα προγράμματα που γράφει ο προγραμματιστής σε μια γλώσσα προγραμματισμού υψηλού επιπέδου ονομάζονται πηγαία προγράμματα.

Τα πηγαία προγράμματα δεν είναι άμεσα  κατανοητά από τον Η/Υ. Για να γίνουν κατανοητά τα πηγαία προγράμματα  είναι απαραίτητα κάποια ειδικά μεταφραστικά προγράμματα που  δέχονται  σαν είσοδο το πηγαίο πρόγραμμα και το μετατρέπουν σε πρόγραμμα γλώσσας μηχανής που ονομάζεται αντικείμενο πρόγραμμα. Το μεταφραστικό πρόγραμμα για την Pascal το λέμε μεταγλωττιστή της Pascal (Pascal compiler)

 

πηγαίο πρόγραμμα

à

μεταγλωττιστής της Pascal

à

αντικείμενο πρόγραμμα

 

Το περιβάλλον της Turbo Pascal

Από το μενού Έναρξη επιλέξτε Προγράμματα και μετά TPW 1.5

Μετά από λίγο εμφανίζεται το παράθυρο της Turbo Pascal .

 

Αναλυτικά η δομή ενός προγράμματος Pascal περιγράφεται από το παρακάτω σχήμα:


Σχήμα 2.1 Δομή ενός προγράμματος Pascal.

21 ΣΕΠΤΕΜΒΡΗ

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

ΤΑ ΑΝΑΓΝΩΡΙΣΤΙΚΑ

Τα αναγνωριστικά διακρίνονται σε τρεις κατηγορίες:

α) Δεσμευμένα αναγνωριστικά ή δεσμευμένες λέξεις.

β) Τυποποιημένα αναγνωριστικά (προκαθορισμένα)

γ) Αναγνωριστικά που ορίζει ο προγραμματιστής ή απλά αναγνωριστικά .

Δεσμευμένες λέξεις λέμε όσες χρησιμοποιεί ο μεταφραστής (compiler) της γλώσσας με προκαθορισμένη, ειδική και αμετάβλητη σημασία

Τα τυποποιημένα αναγνωριστικά έχουν και αυτά προκαθορισμένη ειδική σημασία αλλά δεν δεσμεύονται από την Pascal.

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

Κανόνες γραφής των αναγνωριστικών:

Κάθε αναγνωριστικό πρέπει να υπακούει στους εξής κανόνες:

α) Να αποτελείται μόνο από γράμματα (λατινικού αλφάβητου), ψηφία και τον χαρακτήρα υπογράμμισης "_" .  ΠΡΟΣΟΧΗ !!! όχι παύλα "-" .

β) Να αρχίζει από γράμμα.   (όχι ψηφίο)

γ) Να μην είναι δεσμευμένη λέξη (αυτονόητο).

δ) Το πλήθος των χαρακτήρων (το μήκος) του αναγνωριστικού να μην  ξεπερνά ένα όριο που στην Turbo Pascal είναι αρκετά μεγάλο ώστε να μην μας προβληματίζει σχεδόν καθόλου. Είναι διαφορετικό σε διάφορες εκδόσεις (127 χαρακτήρες στην Turbo Pascal Ver.3 , 32 στην Ver4.0, 8 στην standard Pascal). Στην tpw v.1.5 είναι χωρίς περιορισμό αλλά σημαντικοί είναι οι πρώτοι 64. Πέραν των 64 απλώς αγνοούνται από τον compiler.

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

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

Παραδείγματα αναγνωριστικών μπορείτε να βρείτε σε όλα τα προγράμματα που ακολουθούν. Παρακάτω δίνουμε ενδεικτικά μερικά

N

I

number

arithmos_paidiwn

mesos_oros

X1

p200

plhthosEpityxiwn

 

Εντολή writeln

Εμφανίζει τις τιμές των παραστάσεων που ξεχωρίζουν με κόμμα.

Εντολή

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

writeln(10);

10

writeln( 2*3 , (10-7)*6 , 0 , 3*8 );

618024

writeln('ΓΙΑ ΧΑΡΑ');

ΓΙΑ ΧΑΡΑ

writeln('Α=',5*7);

A=35

writeln(-183.75)

-1.8375000000Ε+02

writeln

        αλλάζει γραμμή

 

Έξοδος (εμφάνιση) ακεραίων αριθμών

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

program TestWriteln1;

uses wincrt;

begin

  writeln(10);

  writeln( 10 , -5 );

  writeln( 10-8 );

  writeln( 2*3 , (10-7)*6 , 0 , 3*8 );

end.

 η οθόνη μετά την εκτέλεση του προγράμματος θα  είναι

 

10

10-5

2

618024

_    <-  ο οθονοδείκτης

 

 

program TestWriteln2;

uses wincrt;

begin

   writeln('Αυτό είναι το πρώτο μου πρόγραμμα');

   writeln('αυτή είναι η δεύτερη γραμμή');

   writeln('Α=',5*7);

   writeln('Β=',(20-30)*2);

end.

Τα ακριβή αποτελέσματα του προγράμματος στην ΟΘΟΝΗ θα είναι

Αυτό είναι το πρώτο μου πρόγραμμα

αυτή είναι η δεύτερη γραμμή

Α=35

Β=-20

_

 

 

Εντολή

Τυπώνει

1)

WriteLn(15)

15

2)

WriteLn(-10,15)

-1015

3)

WriteLn(10:5)

   10

4)

WriteLn(10:5,-7:6)

   10    -7

5)

WriteLn( (3+4)*6:4)

  42

6)

WriteLn(2147:2)

2147

 

 

Εντολή

Έξοδος.

1)

WriteLn(-15.7)

-1.5700000000E+01

2)

WriteLn(10E2 , 123.5)

~1.0000000000E+03~1.2350000000E+02

3)

WriteLn(10.250E15:8,10.5:10)

~1.0E+16~1.050E+01

4)

WriteLn(1.0:20)

~~~~1.0000000000E+00

5)

WriteLn(-246.287:15:2)

~~~~~~~~-246.29

6)

WriteLn(250.1:10:3)

~~~250.100

7)

WriteLn(1850.12:10:0)

~~~~~~1850

8)

WriteLn(12345678.15:5:1)

12345678.1

 

 

Εντολή

Δίνει έξοδο

1.

WriteLn('A');

A

2.

WriteLn('A',' ','B');

A~B

3.

WriteLn('A',',','B');

A,B

4.

WriteLn('A' : 5);

~~~~A

5.

WriteLn('A': 5,'B': 4);    

~~~~A~~~B

6.

WriteLn('''');

'

 

 

Εντολή

Δίνει έξοδο

1)

WriteLn('ABCDEFGH')

ABCDEFGH

2)

WriteLn('ABCDEFGH':15)

~~~~~~~ABCDEFGH

3)

WriteLn('ABCDEFGH':5)

ABCDEFGH

4)

WriteLn('12345':3,'ABCD':5)

12345~ABCD

5)

WriteLn('κι''αυτό')

κι'αυτό

6)

WriteLn('A','','B')

AB

7)

WriteLn('''')

'

 

 

·   

·  Να γραφεί πρόγραμμα που θα εμφανίζει  τα αρχικά του ονόματός σας σχηματίζοντάς τα μόνο με το χαρακτήρα '*' καταλαμβάνοντας 5 γραμμές και μέχρι πέντε στήλες για κάθε γράμμα π.χ. Κ Χ.

 

 program asterakia;

 uses wincrt;

 begin

  writeln(' *   *    *   * ');

  writeln(' *  *      * *  ');

  writeln(' * *        *   ');

  writeln(' *  *      * *  ');

  writeln(' *   *    *   * ');

 end.

 

 

1)         Προβλέψτε τι θα εμφανίσει το παρακάτω πρόγραμμα γράφοντας την έξοδό του στο χαρτί και επαληθεύστε το γράφοντας και τρέχοντάς το στην Pascal

program first;

uses wincrt;

begin

  writeln('Αυτό είναι το κείμενο');

  writeln('και αυτό ','είναι ','ένα κείμενο');

end.

Λύση:Τα ακριβή αποτελέσματα του προγράμματος στην ΟΘΟΝΗ θα είναι

Αυτό είναι το κείμενο

και αυτό είναι ένα κείμενο

1)         Προβλέψτε τι θα εμφανίσει το παρακάτω πρόγραμμα γράφοντας την έξοδο του στο χαρτί και επαληθεύστε το γράφοντας και τρέχοντάς το στην Pascal

program first;

uses wincrt;

begin

  writeln('Τα παρακάτω  είναι σταθερές');

  writeln(12,'  ',-302,'  ',0);

  writeln(12:5,-302:7,0:3);

  writeln((12+5):5,(2+3)+7:6,3-7:5);

  writeln(' ':10,15,' ':7,13,' ',-5);

  writeln('Αυτό είναι το ':20,10);

end.

Λύση:Τα ακριβή αποτελέσματα του προγράμματος στην ΟΘΟΝΗ θα είναι

ΑΡΧΕΣ ΟΚΤΩΒΡΗ

Τα σχόλια αγνοούνται τελείως από τον  COMPILER. Είναι σαν να μην υπάρχουν.

Τα σχόλια οριοθετούνται από αριστερά με το ανοικτό  άγκιστρο "{" και από δεξιά με το κλειστό άγκιστρο  "}"

Τον ίδιο ρόλο έχουν και τα ειδικά  σύμβολα  (* και *) για την αρχή και το τέλος αντίστοιχα.

Παράδειγμα

{Αυτό είναι ένα σχόλιο}

 

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

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

 

Πίνακας 4.1 Τελεστών-προτεραιοτήτων

Τελεστές

προτεραιότητα

κατηγορία

@ , not

Πρώτη (υψηλή)

Ενικοί τελεστές

*,/,div,mod,and,shl,shr

Δεύτερη

Πολλαπλασιαστικοί τελεστές

+,-,or,xor

Τρίτη

Προσθετικοί τελεστές

=,<>,<,>,<=,>=,in

Τέταρτη (χαμηλή)

Συσχετιστικοί τελεστές

Την μεγαλύτερη προτεραιότητα έχουν οι ενικοί τελεστές ακολουθούν οι πολλαπλασιαστικοί μετά οι προσθετικοί και τέλος οι συσχετιστικοί με την μικρότερη προτεραιότητα.

Οι τελεστές της ίδιας κατηγορίας έχουν μεταξύ τους την ίδια προτεραιότητα.

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

οι πράξεις γίνονται μεταξύ στοιχείων του ίδιου τύπου και το αποτέλεσμα είναι επίσης του ίδιου τύπου.

Εξαίρεση  σ' αυτό τον κανόνα αποτελεί ο τελεστής της διαίρεσης (/) με ακέραια ορίσματα πού δίνει αποτέλεσμα Real.

Όταν σε ένα τελεστή από τους (+,-,/,*) το ένα όρισμα είναι ακέραιος και το άλλο πραγματικός αριθμός, τότε το αποτέλεσμα θα είναι πραγματικός

 

ΣΥΝΤΑΞΗ εντολής καταχώρησης

ΣΥΝΤΑΚΤΙΚΟ ΔΙΑΓΡΑΜΜΑ

Η σύνταξη της εντολής φαίνεται και στο παρακάτω συντακτικό διάγραμμα της εντολής

 

 

 

 


Ερμηνεία της σύνταξης:

Η εντολή καταχώρησης χαρακτηρίζεται από το ειδικό σύμβολο (:=) πριν από το οποίο υπάρχει μία μεταβλητή ενώ μετά απ' αυτό μπαίνει μια παράσταση.

Η τιμή της παράστασης θα πρέπει να είναι του ίδιου (ή συμβατού) τύπου με την μεταβλητή.

Συμβατός τύπος σημαίνει ότι είναι αυτόματα μετατρέψιμος, από την Pascal, στον τύπο της μεταβλητής.

( Π.Χ. Οι τύποι ακεραίων( integer, byte, shortint, longint, word) είναι μεταξύ τους συμβατοί, αρκεί η τιμή , της παράστασης, να βρίσκεται στο εύρος του τύπου της μεταβλητής. Οι τύποι πραγματικών είναι μεταξύ τους συμβατοί. Επιτρέπετε η μεταβλητή να είναι πραγματική και η τιμή της παράστασης ακέραιη, όχι όμως αντίστροφα. Επιτρέπεται επίσης η τιμή να είναι χαρακτήρα και η μεταβλητή string.

Δεν επιτρέπεται η μεταβλητή να είναι μεταβλητή τύπου αρχείου).

ΤΡΟΠΟΣ ΕΚΤΕΛΕΣΗΣ

Πρώτα υπολογίζεται η τιμή της παράστασης πού βρίσκεται μετά το (:=). Η τιμή αυτή αποδίδεται στην μεταβλητή πού υπάρχει πριν το (:=).

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

Παράδειγμα: Το πρόγραμμα που ακολουθεί υπολογίζει και τυπώνει το άθροισμα του 5 με το 10.

Program TEST_EKXWRHSHS;

Uses wincrt;

Var  A,B,C: Integer;

Begin

  A:=5;               { το Α παίρνει τιμή το 5 }

  B:=10;              { το Β παίρνει τιμή το 10 }

  C:=A+B;             { το C παίρνει τιμή το 15 }

  WriteLn('C=',C);

End.

ΑΠΟΤΕΛΕΣΜΑ:

C=15

Στην Turbo Pascal ένα πρόγραμμα που βρίσκει την απόσταση των 15 ποδιών σε μέτρα είναι το παρακάτω.

Program TEST_VAR;

Uses wincrt;

Begin

  writeln('τα 15 πόδια =',0.348*15,' μέτρα');

End.

Μια βελτίωση για την μετατροπή των 15 ποδιών σε μέτρα είναι το  παρακάτω

Program TEST_VAR;

Uses wincrt;

Var f,m: real;

Begin

  f:=15;

  m:=0.348*f;

  writeln('τα ',f:10:2,' πόδια =',m:10:1,' μέτρα');

End.

Το παρακάτω πρόγραμμα βρίσκει την απόσταση των ποδιών που δίνει ο χρήστης σε μέτρα .

Program TEST_VAR;

Uses wincrt;

Var f,m: real;

Begin

  writeln('Δώσε την απόσταση σε πόδια ');

  readln(f);

  m:=0.348*f;

  writeln('τα ',f:10:2,' πόδια =',m:10:1,' μέτρα');

End.

 

 Η πράξη εύρεσης του ακέραιου πηλίκου δύο ακέραιων αριθμών είναι η div 

παραδείγματα:

 

 

παράσταση

 

αποτέλεσμα

 

 

 

11 div 4

=

2

 

 

 

12 div 4

=

3

 

 

 

13 div 4

=

3

 

 

 

1 div 4

=

0

 

 

 

0 div 4

=

0

 

 

 

5 div (-2)

=

-2

 

 

 

-5 div (-2)

=

2

 

 

 

-10 div 4

=

-2

 

 

 

Η πράξη εύρεσης του ακέραιου υπολοίπου δύο ακέραιων αριθμών είναι η mod 

παραδείγματα:

 

παράσταση

 

αποτέλεσμα

 

 

 

11 mod 4

=

3

 

 

 

12 mod 4

=

0

 

 

 

13 mod 4

=

1

 

 

 

1 mod 4

=

1

 

 

 

0 mod 4

=

0

 

 

 

5 mod (-2)

=

1

 

 

 

-5 mod (-2)

=

-1

 

 

 

-10 mod 4

=

-2

 

 

 

Ασκ.9.1

1) Να γράψετε πρόγραμμα που να τυπώνει:

Στη γραμμή 1  αυτό είναι το πρώτο μου πρόγραμμα

Στη γραμμή 2  το όνομά σας

Στη γραμμή 3  την ημερομηνία

program askhsh_9_1;

uses wincrt;

begin

  writeln('αυτό είναι το πρώτο μου πρόγραμμα');

  writeln('Χρίστος Κουσουλής');

  writeln('5/10/2009');

end.

6) Να γραφεί πρόγραμμα το οποίο θα διαβάζει το επώνυμο , τους βαθμούς τετραμήνων και γραπτού σ’ ένα μάθημα θα βρίσκει και θα εμφανίζει το τελικό βαθμό στο μάθημα από τη σχέση ΤΒ=(Τ1+Τ2+2Τ)/4 καθώς και το επώνυμό του

program bathmoi;

uses wincrt;

var t1,t2,gr:integer;

          tb:real; 

begin

    write('βαθμός Α΄ τετραμήνου:');

    readln(t1);

    write('βαθμός Β΄ τετραμήνου:');

    readln(t2);

    write('βαθμός Γραπτών:');

    readln(gr);

    tb:=(t1+t2+2*gr)/4;

    writeln('ο τελικός βαθμός=',tb:10:2);

    writeln;

    write('θα συνεχίσεις (Ν/Ο);');

end.

 

Το παρακάτω πρόγραμμα βρίσκει το εμβαδόν ενός κύκλου όταν του δώσουμε την ακτίνα του από τον τύπο  E = πR²

program Embadon;

var   R,E:real;

begin

  write('Δώσε την ακτίνα:');

  readln(R);

  E:=pi*sqr(R);       { ή  E:=3.14*R*R;}

  writeln('το εμβαδόν κύκλου με ακτίνα ',R:8:1,

' είναι ',E:10:2);

end.

 

 

15 ΟΚΤΩΒΡΗ

2)         Να εκτελεστεί βήμα –βήμα στο χαρτί και να απεικονισθεί η μνήμη και η οθόνη στο παρακάτω πρόγραμμα.

program ASKHSH;

uses wincrt;

var i,j,k:integer;

begin

  i:=5; j:=7; k:=10;

  writeln(i, i+1, i+j, i+j+k);

  k:=i+j;

  writeln(k);

  j:=j+1;

  writeln(j);

  i:=3*i+j;

  writeln(i);

end.

Λύση:Τα ακριβή αποτελέσματα του προγράμματος στην ΟΘΟΝΗ θα είναι

 

 

Ασκ.9.2

2) Να γράψετε πρόγραμμα στο οποίο να γίνεται η εισαγωγή των δεδομένων μήκος , πλάτος , ύψος έτσι , ώστε να υπολογίζονται και να τυπώνονται τα παρακάτω αποτελέσματα:

το εμβαδόν της βάσης είναι...........  τετρ. εκ.

το εμβαδόν της έδρας με διαστάσεις ………. , ……… είναι ……….. τετρ. εκ.

το εμβαδόν της έδρας με διαστάσεις ………. , ……….. είναι ……….. τετρ. εκ.

ο όγκος του παραλληλεπιπέδου είναι ……… κυβ. εκ.

 program parallhlepipedo;

uses wincrt;

 var m,p,y,eb,ed1,ed2,v:real;

begin

  writeln('δώσε το μήκος,το πλάτος και το ύψος του παραλληλεπιπέδου');

  readln(m,p,y);

  eb:=m*p;

  writeln('το εμβαδόν της βάσης είναι ',eb:8:1,' τετρ. εκ.');

  ed1:=m*y;

  writeln('το εμβαδόν της έδρας με διαστάσεις ',m:8:1,',',y:8:1,' είναι ',ed1:8:1,' τετρ. εκ.');

  ed1:=p*y;

  writeln('το εμβαδόν της έδρας με διαστάσεις ',p:8:1,',',y:8:1,' είναι ',ed2:8:1,' τετρ. εκ.');

  v:=eb*y;

  writeln('ο όγκος του παραλληλεπιπέδου είναι ',v:8:1,' κυβ. εκ.');

end.

 

ασκ.9.3

3) Να γράψετε πρόγραμμα το οποίο να διαβάζει έναν αριθμό και να τυπώνει το διπλάσιο και το τριπλάσιο του .Να γίνει η ίδια διαδικασία για τους 2 επόμενους απ’ αυτόν αριθμούς. Η μορφή της εκτύπωσης να είναι σύμφωνα με το παρακάτω υπόδειγμα:

8   16   24

9   18   27

10   20   30

program arithmoi;

uses wincrt;

var a:integer;

begin

  writeln('δώσε έναν αριθμό:');

  readln(a);

   writeln(a,' ',2*a,' ',3*a);

   writeln(a+1,' ',2*(a+1),' ',3*(a+1));

   writeln(a+2,' ',2*(a+2),' ',3*(a+2));

 

end.

 

4) Να γραφεί πρόγραμμα που θα διαβάζει 2 ακέραιες τιμές Α , Β και θα τυπώνει το ακέραιο πηλίκο και ακέραιο υπόλοιπο

 program ypoloipo_poiliko;

uses wincrt;

var a,b:integer;

    c,d:integer;

begin

  writeln('Δώσε 2 αριθμούς:');

    readln(a,b);

  c:=a mod b;

  d:=a div b;

  writeln('Το υπόλοιπο είναι ',c,' και το πηλίκο ',d,'.');

end.

·     Να γραφεί πρόγραμμα που διαβάζει τον χρόνο σε δευτερόλεπτα και θα βρίσκει τον ίδιο χρόνο σε hh:mm:sec

 

 program time;

    uses wincrt;

    var sec,h,m,s:longint;

    begin

      write('Δώσε χρόνο σε δευτερόλεπτα:');

      readln(sec);

      s:=sec mod 60;

      h:=sec div 3600;

      m:=  (sec div 60) mod 60;

      writeln(sec,'sec=',h:2,':',m:2,':',s:2)

    end.

 

23 ΟΚΤΩΒΡΗ

ασκ.9.9

·  Να γραφεί πρόγραμμα το οποίο θα μετατρέπει τους βαθμούς Κελσίου σε Φαρενάιτ  F=9/5 *c+32

·   

program fahrenheit;

uses wincrt;

var C:integer;

    F:real;

begin

  writeln('Δώστε τη θερμοκρασία σε βαθμούς Κελσίου.');

  readln(C);

  F:=9/5*C+32;

  writeln('Η θερμοκρασία αυτή στην κλίμακα ',

' Fahrenheit είναι ',F:0:2,'F.');

end.

 

29 ΟΚΤΩΒΡΗ

Κεφ 1 θεωρία

τυποποιημένες συναρτήσεις

βλπ φωτοτυπία.

Η ΣΥΝΘΕΤΗ ΕΝΤΟΛΗ

Εισαγωγή

Σε διάφορα σημεία ενός προγράμματος παρουσιάζεται η ανάγκη να ομαδοποιηθούν κάποιες εντολές ώστε να αποτελούν μια ενότητα. Ιδιαίτερα σε δομημένες εντολές όπου η Pascal αναφέρεται πάντα σε <εντολή> ενώ στην ουσία θέλουμε μια ομάδα εντολών.

Η Pascal χρησιμοποιεί τις δεσμευμένες λέξεις begin (αρχή) και end (τέλος) σαν ένα είδος παρενθέσεων που ομαδοποιούν μια σειρά εντολών ώστε συντακτικά να θεωρούνται μία εντολή και την ονομάζουμε σύνθετη εντολή.

       παράδειγμα

begin

   write('Δώσε αριθμό :');

   readln(a);

   writeln('Έδωσες τον αριθμό ',a);

end

ΣΥΝΤΑΞΗ

       Το συντακτικό διάγραμμα της σύνθετης εντολής είναι:

 

 

 

 

 

 


Ερμηνεία Σύνταξης

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

Μεταξύ των λέξεων αυτών γράφονται εντολές που ξεχωρίζουν με τον ειδικό χαρακτήρα ";" . Η τελευταία εντολή, πριν το end στην Turbo Pascal μπορεί να έχει τον χαρακτήρα ";" ενώ η πρότυπη Pascal δεν το επέτρεπε ( αυτό προκύπτει από την ύπαρξη στην Turbo Pascal της κενής εντολής ).

Παρατηρήστε ότι το τμήμα εντολών του προγράμματος είναι μια σύνθετη εντολή.

Εντολή if

α) if <λογική παράσταση> then <Εντολή>

β) if <λογική παράσταση> then <Εντολή1> else <Εντολή2>

 

 ΤΟ ΣΥΝΤΑΚΤΙΚΟ ΔΙΑΓΡΑΜΜΑ

       της εντολής if είναι:


 

ΕΡΜΗΝΕΙΑ ΣΥΝΤΑΞΗΣ

Η εντολή αρχίζει με την δεσμευμένη λέξη  if  και ακολουθούν κατά σειρά μια λογική παράσταση , η δεσμευμένη λέξη then και μια εντολή (εντολή 1).

Προαιρετικά ακολουθεί ακόμη η δεσμευμένη λέξη else και μια ακόμα εντολή (εντολή 2).

παραδείγματα διευκρινιστικά της σύνταξης.

if  a>0 then count:=count+1

 

if n=0 then

  begin

    writeln('το αποτέλεσμα είναι=', s);

    c:=c+1;

  end

  if x>0 then

     begin

       writeln('θετικός αριθμός.);

       t:=t+1;

     end

   else

     begin

       writeln('μη θετικός αριθμός.');

       a:=a+1;

     end

 

ΕΡΜΗΝΕΙΑ ΤΗΣ ΕΝΤΟΛΗΣ

Ο τρόπος με τον οποίο εκτελείται η εντολή

if  < λογική παράσταση >  then  <Εντολή>

 


περιγράφεται από το λογικό διάγραμμα

 

Λογικό διάγραμμα της εντολής

if  <λ.π.> then  <εντολή>

που σημαίνει ότι, αν η <λογική παράσταση> (λ.π.) είναι αληθής (τιμή true) τότε θα εκτελεστεί η εντολή που ακολουθεί το then . Αν όμως είναι ψευδής (τιμή false) η εντολή που ακολουθεί το then παραλείπεται.

Η δεύτερη μορφή της εντολής if περιγράφεται από το παρακάτω λογικό διάγραμμα.


Λογικό διάγραμμα της εντολής

If <λ.π.> then  <εντολή 1> else <εντολή 2>

 

που σημαίνει ότι αν η <λ.π.> είναι αληθής τότε θα εκτελεστεί η εντολή μετά το then (εντολή 1) ενώ αν η <λ.π.> είναι ψευδής θα εκτελεστή η εντολή μετά το else (εντολή 2).

 

Παραδείγματα σε PASCAL.

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

program Eisithrio;

uses wincrt;

var Hlikia:integer;

    TimhEisithrioy:real;

begin

  writeln('δώσε την ηλικία:');

  readln(Hlikia);

  if Hlikia<18  then

        TimhEisithrioy:=5

  else

        TimhEisithrioy:=10;

 writeln('η τιμή του εισιτηρίου = ', TimhEisithrioy:10:2);

end.

 

Στη σύνταξη της εντολής if φαίνεται ότι μια μόνο εντολή ακολουθεί το then ή το else. Αυτό σημαίνει ότι αν θέλω να εκτελεστεί ένας αριθμός από εντολές θα πρέπει να μπουν μέσα σε begin .. end ώστε να γίνουν μία σύνθετη εντολή.

παρακάτω είναι ολοκληρωμένο ένα πρόγραμμα για την εύρεση του πηλίκου του παραδείγματος 2.

program phliko;

uses wincrt;

var P,A,N:real;

begin

  writeln('δώσε τον αριθμητή:');

  readln(A);

  writeln('δώσε τον παρονομαστή:');

  readln(N);

  if N<>0 then

  begin

    P:=A/N;

    writeln('το πηλίκο=',P:10:2);

  end

  else

  begin

    writeln('ο παρονομαστής είναι μηδέν');

    writeln('δεν επιτρέπεται διαίρεση με μηδέν');

  end;

end.

 

3)         Να γραφεί πρόγραμμα  που θα διαβάζει το βαθμό ενός μαθητή σε ένα μάθημα και θα βρίσκει αν περνάει το μάθημα ( μεγαλύτερο ή ίσο του 10).

program vathmos;

uses wincrt;

var x:integer;

begin

  writeln('Dwste ton vathmo tou mathiti');

  readln(x);

  if x>=10 then

  writeln('perna to mathima');

end.

 

 

4)         Να γραφεί πρόγραμμα  που θα διαβάζει τους βαθμούς ενός μαθητή  σε τέσσερα μαθήματα, θα βρίσκει τον μέσο όρο και αν αυτός είναι μεγαλύτερος ή ίσος του 14 να εμφανίζει "επιτυχόν" διαφορετικά 'Αποτυχόν'.

program o_mesos_oros;

uses wincrt;

var a,b,c,d:integer;

   s:real;

begin

   writeln('Dwste ton vathmo 4 mathimatwn');

   readln(a,b,c,d);

   s:=(a+b+c+d)/4;

   if s>=14 then

      writeln('επιτυχόν')

   else

      writeln('Αποτυχόν');

end.

 

 

5)         Συγκρίνετε τα παρακάτω τμήματα προγράμματος. (Είναι ισοδύναμα;) Δοκιμάστε με αρχική τιμή  A=0  , Α= -1

1)

2)

3)

if A<0 then

  A:=A+1;

if A>=0 then

  A:=A-1;

writeln(A);

 

if A>=0 then

  A:=A-1;

if A<0 then

  A:=A+1;

writeln(A);

if A<0 then

  A:=A+1

else

  A:=A-1;

writeln(A);

 

 

6)         Τι ακριβώς θα εμφανίσουν τα παρακάτω προγράμματα

program display1;

uses wincrt;

var a,b:integer;

begin

   a:=21;

   b:=3;

   writeln(a mod b);

   writeln(a div b);

end.

 

program display2;

uses wincrt;

var a,b:integer;

begin

   a:=21;

   b:=3;

if a>b then writeln(a mod b)

    else writeln(a div b)

end.

 

12 ΝΟΕΜΒΡΗ

Κεφ 3 θεωρία

30 ΟΚΤΩΒΡΗ

 

5) Να γραφεί πρόγραμμα το οποίο θα διαβάζει 2 ακέραιους αριθμούς και θα βρίσκει τον μεγαλύτερο

program max2;

uses wincrt;

var A,B:integer;

begin

  writeln(' Δώσε αρ.1');

  readln(A);

  writeln('Δώσε αρ.2');

  readln(B);

  if A>B then

      writeln('ο μεγαλύτερος είναι:',A)

  else

      writeln('ο μεγαλύτερος είναι:',B);

end.

 

program max2;

uses wincrt;

var A,B,Max:integer;

begin

  writeln('Δώσε αρ.1');

  readln(A);

  writeln('Δώσε αρ.2');

  readln(B);

  Max:=A;

  if B>A then

               Max:=B;

  writeln('ο μεγαλύτερος είναι:',Max);

end.

 

program test;

uses wincrt;

var a,b:real;

begin

  writeln('Δώστε δύο αριθμούς:');

  readln(a,b);

    if a>b then

    begin

       writeln('Ο ',a,' είναι μεγαλύτερος του ',b,'.')

    end

    else if a<b then

    begin

       writeln('Ο ',a,' είναι μικρότερος του ',b,'.')

    end

    else

       writeln('Οι αριθμοί αυτοί είναι ίσοι.')

end.

 

5 ΝΟΕΜΒΡΗ

Κεφ 2 θεωρία

13 ΝΟΕΜΒΡΗ

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

Ηλικία (Η)

Χαρακτηρισμός

Η<20

ΠΑΙΔΙ

20<=Η<40

ΝΕΟΣ

40<=Η<60

ΜΕΣΗΛΙΚΑΣ

60<=Η

ΗΛΙΚΙΩΜΕΝΟΣ

 

 

program XarakthrisnosHlikias;

uses wincrt;

var

    Hlikia:integer;

begin

  write('Δώσε την Ηλικία:');

  readln(Hlikia);

  if Hlikia < 20 then writeln(' ΠΑΙΔΙ ')

  else if Hlikia < 40 then writeln(' ΝΕΟΣ ')

  else if Hlikia < 60 then writeln(' ΜΕΣΗΛΙΚΑΣ ')

  else  writeln(' ΗΛΙΚΙΩΜΕΝΟΣ ')

end.

 

 

8)         Να γραφεί πρόγραμμα το οποίο θα εμφανίζει ένα μενού με επιλογές για τις τέσσερις βασικές πράξεις με ακέραιους αριθμούς.(1.πρόσθεση, 2. Αφαίρεση,3. πολλ/μος, 4. Διαίρεση). Ο χρήστης θα δίνει από το πληκτρολόγιο τον αριθμό της επιλογής για την πράξη που θέλει να εκτελεστή  και στην συνέχεια το πρόγραμμα θα του ζητά δύο αριθμούς και θα υπολογίζει και τυπώνει το αποτέλεσμα της πράξης.

 

ασκ.10.6

11) Να γραφεί πρόγραμμα πού θα εμφανίζει ένα μενού με επιλογές για τις 4 βασικές πράξεις ο χρήστης θα δίνει από το πληκτρολόγιο τον αριθμό της επιλογής για την πράξη πού θέλει και στη συνέχεια το πρόγραμμα θα του ζητά τους αριθμούς και θα εκτελεί την πράξη

 

Να γραφεί πρόγραμμα το οποίο θα βρίσκει αν ένα έτος είναι δίσεκτο.

program disekto;

uses wincrt;

var e:integer;

begin

  writeln('Δώστε το έτος:');

  readln(e);

  if ((e mod 4=0) and (e mod 100<>0)) or (e mod 400=0) then

      writeln('Το έτος αυτό είναι δίσεκτο.')

  else

      writeln('Το έτος αυτό δεν είναι δίσεκτο.');

end.

 

 

30/10/2009

 

10) να γραφεί πρόγραμμα το οποίο να διαβάζει το έτος και θα βρίσκει ποιο από τα παρακάτω μηνύματα θα εμφανίσει .

<είναι έτος ολυμπιακών αγώνων> 

<θα γίνουν οι ολυμπιακοί αγώνες τον επόμενο χρόνο>

 <έγιναν ολυμπιακοί αγώνες πέρυσι > 

<θα γίνουν ολυμπιακοί αγώνες σε 2 χρόνια>

program OA;

uses wincrt;

var m,etos:integer;

begin

  writeln('δώσε το έτος');

  readln(etos);

  m:=etos mod 4;

  if m=0 then writeln('είναι έτος ολυμπιακών αγώνων');

  if m=1 then writeln('έγιναν ολυμπιακοί αγώνες πέρυσι');

  if m=2 then writeln('θα γίνουν ολυμπιακοί αγώνες σε 2 χρόνια');

  if m=3 then writeln('θα γίνουν οι ολυμπιακοί αγώνες τον επόμενο χρόνο');

end.

 

13/11/2009

Πολλαπλή διακλάδωση με if

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

Τι γίνεται όμως αν έχω να επιλέξω μια από πολλές (>2) ομάδες εντολών. Η λύση δίνεται με κατάλληλο συνδυασμό πολλών εντολών if .

Μια γενική λύση μπορεί να είναι η ακόλουθη:

 

if <Λ.Π. 1> then <Εντολή 1>

else if <Λ.Π. 2> then <Εντολή 2>

else if <Λ.Π. 3> then <Εντολή 3>

...

...

else if <Λ.Π. Ν> then <Εντολή N>

[else <Εντολή >]

program XarakthrisnosBathmou;

uses wincrt;

var

    bathmos:integer;

begin

  write('Δώσε το βαθμό (1-20):');

  readln(bathmos);

  if bathmos >= 18 then writeln(' ΑΡΙΣΤΑ ')

  else if bathmos >= 15 then writeln(' ΠΟΛΥ ΚΑΛΑ ')

  else if bathmos >= 12 then writeln(' ΚΑΛΑ ')

  else if bathmos >= 10 then writeln(' ΜΕΤΡΙΑ ')

  else  writeln(' ΑΣΧΗΜΑ ');

end.

9)         Τι ακριβώς θα εμφανίσουν τα παρακάτω προγράμματα;

program display3;

uses wincrt;

var a,b:integer;

begin

  readln(a,b);

  if (a mod 2=0) or (b mod 2 = 0) then  writeln(a*b)

                                                else  writeln(a/b);

end.

 

program display4;

uses wincrt;

var  x:integer;

begin

  readln(x);

  if (x<0) or (x>20) then  writeln('λάθος')

  else  if x<=9 then writeln('απορρίπτεται')

  else writeln ('πέτυχε με βαθμό',x);

end.

 

με είσοδο:

 α) 10  4

 β) 10  5

 γ)   3  5

με είσοδο:

 α) 10 

 β)  7 

 γ)  13

 δ)  34 

19 ΝΟΕΜΒΡΗ

Κεφ 4 θεωρία

10)     Να γραφεί πρόγραμμα  για τον υπολογισμό της παράστασης

 

20 ΝΟΕΜΒΡΗ

11)     Να γραφεί πρόγραμμα που θα υπολογίζει το εμβαδόν τριγώνου από τις τρις πλευρές του(α, β, γ). Ο τύπος του Ήρωνα μας δίνει το εμβαδόν τριγώνου από τις πλευρές του.

          όπου      

πρέπει τα τ-α>0, τ-β>0, τ-γ>0

·  12) Να γραφεί  πρόγραμμα το οποίο θα διαβάζει ένα τριψήφιο ακέραιο αριθμό και θα εμφανίζει ένα – ένα τα ψηφία του

·  (παραλλαγή)Να γράψετε πρόγραμμα που να διαβάζει ένα τριψήφιο ακέραιο αριθμό και να τυπώνει ένα άλλο που έχει τα ψηφία του αντίστροφα. Π.χ. για τον αριθμός 123 να τυπώσει  321.

17 ΔΕΚΕΜΒΡΗ

εντολής  while

Συντακτικό διάγραμμα της εντολής  while

το συντακτικό διάγραμμα της εντολής while είναι


 

ΕΡΜΗΝΕΙΑ ΤΗΣ ΣΥΝΤΑΞΗΣ:

Η λέξη While (όσο) και η λέξη do (κάνε) είναι δεσμευμένες λέξεις της Pascal. Όπως βλέπουμε στο συντακτικό διάγραμμα της εντολής μεταξύ των ειδικών συμβόλων while και do υπάρχει  μια λογική παράσταση (συνθήκη). Η <εντολή> μετά το do είναι οποιαδήποτε εντολή της Pascal. Σχεδόν πάντα είναι μια σύνθετη εντολή (begin...end)  Θα δούμε γιατί παρακάτω). Την εντολή μετά το do  θα την λέμε εσωτερική εντολή της WHILE.

ΠΑΡΑΔΕΙΓΜΑΤΑ διευκρινιστικά της  ΣΥΝΤΑΞΗΣ

 

Ø   while a<>0 do

begin

  sum=sum+a;

  readln(a);

end

 

Ø   while i<>10 do

begin

  sum=sum+i;

  i:=i+1;

end

 

Ø   while Α<B do A := A - B;

 

Ø   while apanthsh = 'n' do

begin

  readln(a);

  s:=s+a

  write ('θα συνεχίσεις (n/o):');

  readln(apanthsh)

end;

ΕΡΜΗΝΕΙΑ ΤΟΥ ΤΡΟΠΟΥ ΕΚΤΕΛΕΣΗΣ

Το νόημα της εντολής while είναι να εκτελείται η εσωτερική εντολή (η εντολή μετά το do) ξανά και ξανά όσο η λογική παράσταση  είναι αληθής (true). Η εντολή ολοκληρώνεται μόνο όταν η λογική παράσταση βρεθεί ψευδής ( false ).

program Athroisma_me_while;

uses wincrt;

var                                           {δήλωση μεταβλητών}

A,                                          {Α για τους αριθμούς}

S :real;                                     {S για το άθροισμα  }

begin

  s:=0;                             {Αρχική τιμή του αθροίσματος }

  write ('δώσε ένα αριθμό (0=τέλος):') ;

  readln(A);                        { διάβασμα του πρώτου αριθμού}

  while A<>0 do                    {αθροίζουμε όσο ο αριθμός που

                                        εξετάζουμε δεν είναι το 0}

  begin

    s:=s+A;         {νέο άθροισμα = παλιό άθροισμα + νέος αριθμός}

    write('Δώσε ένα αριθμό (0=τέλος) :');

    readln(A);                             {διάβασμα νέου αριθμού}

  end;

writeln ('το άθροισμα =', s:10:2)

end.

Το παρακάτω πρόγραμμα εμφανίζει τη λέξη "ΜΠΡΑΒΟ" 10 φορές

program mprabo;

uses wincrt;

var I:integer;           {μετρητής επαναλήψεων}

begin

  I:=0;             {αρχική τιμή του μετρητή 0}

  while I<10 do           {όσο ο μετρητής <10 }

  begin

    writeln('ΜΠΡΑΒΟ');      {εμφάνισε "ΜΠΡΑΒΟ"}

    I:=I+1;         {αυξάνει ο μετρητής κατά 1}

  end;

end.

Να βρεθεί ο μεγαλύτερος αριθμός Ν ώστε το άθροισμα 1+2+3+...+Ν<=1000

Μια λύση του προβλήματος είναι η παρακάτω.

program sum1000;

uses wincrt;

var sum,i:integer;           {άθροισμα, προσθετέος}

begin

  sum:=0;i:=1; {αρχική τιμή αθροίσματος, προσθετέου}

  while sum<=1000 do

  begin

    sum:=sum+i;           {υπολογισμός αθροίσματος}

    i:=i+1;                 {ο επόμενος προσθετέος}

  end;

  writeln('το ζητούμενο Ν=',i-2);

end. 

 Τυχαίοι αριθμοί

Πολλές φορές χρειαζόμαστε διάφορους αριθμούς είτε για να δοκιμάσουμε τη λύση ενός προβλήματος είτε να προσομοιάσουμε κάποια τυχαία συμβάντα. Η Turbo Pascal έχει τις τυποποιημένες συναρτήσεις random και random(m)  για την δημιουργία τυχαίων (ψευδοτυχαίων) αριθμών.

Η συνάρτηση random χωρίς όρισμα επιστρέφει ένα τυχαίο αριθμό μεταξύ 0 και 1 με το 0 να συμπεριλαμβάνεται αλλά όχι το 1. Ο τυχαίος αριθμός είναι τύπου real  στο διάστημα [0,1).

π.χ. με την εντολή

x:=random;

Η μεταβλητή x  θα πάρει μια τυχαία τιμή με 0 x < 1

Η συνάρτηση random(m) με όρισμα m ακέραιο επιστρέφει ένα τυχαίο ακέραιο αριθμό μεταξύ 0 και m-1. Ο τυχαίος αριθμός είναι ακέραιος (τύπου word) με 0 random(m) < m.

π.χ. με την εντολή

x:=random(100);

Η μεταβλητή x  θα πάρει μια τυχαία ακέραιη τιμή με 0 x 99

 

Γενικά αν θέλω ένα τυχαίο πραγματικό αριθμό x στο διάστημα [a,b) μπορώ να τον έχω με την εντολή

x:=(b-a)*random + a;

Αν θέλω ένα τυχαίο ακέραιο αριθμό x με  a x b μπορώ να τον έχω με την εντολή

x:= random(b-a+1)+a;

Το b-a+1 εκφράζει πόσες πιθανές τιμές θα έχουμε (εύρος) και το a την αρχή του διαστήματος των πιθανών τιμών.

π.χ. για να πάρω την τιμή της ρήψης ενός ζαριού έχω

    z:=random(6)+1

Κάθε φορά που καλείται η συνάρτηση έχουμε νέο τυχαίο αριθμό. Έτσι διαδοχικές κλήσης μας δίνουν μια σειρά τυχαίων αριθμών.

Όμως κάθε φορά που εκτελείται ένα πρόγραμμα από την αρχή, αυτή η σειρά θα είναι η ίδια εκτός αν καλέσουμε την διαδικασία randomize.

Η διαδικασία randomize δίνει τυχαία τιμή εκκίνησης στη γεννήτρια τυχαίων αριθμών με αποτέλεσμα να έχουμε τυχαία σειρά αριθμών με κάθε εκτέλεση του προγράμματος που καλεί τις συναρτήσεις random , random(M).

 

Το παρακάτω πρόγραμμα βρίσκει τον μέσο όρο των αριθμών που δίνει ο χρήστης μέχρι να δώσει τον αριθμό μηδέν

 

Program Mesos_Oros;

uses wincrt;

var   mo,a,s :real;

           n :integer;

begin

  n:=0;

  s:=0;

  writeln('δώσε αριθμό(0=Τέλος):');

  readln(a);

  while a<>0 do

  begin

    s:=s+a;

    n:=n+1;

    writeln('δώσε αριθμό(0=Τέλος):');

    readln(a);

  end;

 

  if n >0 then

    begin

      writeln('άθροισμα=',S:10:1);

      writeln('δώθηκαν ',n,' αριθμοί');

      mo:=s/n;

      writeln('μέσος όρος=',mo:10:1);

    end

  else writeln('Δεν δόθηκαν αριθμοί');

end.

Το παρακάτω πρόγραμμα βρίσκει τον κρυφό αριθμό.

 program test;

uses wincrt;

var

   x,k,i,found:integer;

begin

   write('Δώστε έναν αριθμό από το 1 έως το 100:');

   readln(x);

   clrscr;

   found:=0;

   i:=1;

   write('Δώστε τον αριθμό που πιστεύετε ότι είναι κρυμμένος:');

   readln(k);

   while (i<=6) and (found=0) do

    begin   

      if k=x then

         begin

           found:=1;

           writeln('Μπράβο, το βρήκατε!');

         end

      else if k<x then

 

         writeln('Δώστε μεγαλύτερο αριθμό.')

      else

         writeln('Δώστε μικρότερο αριθμό.');

      i:=i+1;

      write('Δώστε τον αριθμό που πιστεύετε ότι είναι κρυμμένος:');

      readln(k);

     end;

   if found=0 then

      writeln('Ο κρυμμένος αριθμός ήταν ο ',x,'!');

end.