ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal Δοµή προγράµµατος 1. Δοµή προγράµµατος program όνοµα_προγράµµατος(αρχείο_1, αρχείο_2,...αρχείο_ν); ΕΠΙΚΕΦΑΛΙΔΑ ΒΙΒΛΙΟΘΗΚΕΣ uses όνοµα_βιβλιοθήκης,όνοµα_βιβλιοθήκης; const όνοµα_σταθεράς_1 = τιµή_1; όνοµα_σταθεράς_1 = τιµή_2;... ΟΝΟΜΑΤΑ ΑΡΧΕΙΩΝ ΠΡΟΑΙΡΕΤΙΚΑ ΣΤΑΘΕΡΩΝ var όνοµα_µετ_1:τύπος; όνοµα_µετ_2,όνοµα_µετ_3:τύπος; ΜΕΤΑΒΛΗΤΩΝ type όνοµα_τύπου = ορισµός_τύπου... ΤΥΠΩΝ ΧΡΗΣΤΗ procedure.(*διαδικασία*) function.(*συνάρτηση*)... ΥΠΟΠΡΟΓΡΑ- ΜΜΑΤΩΝ ΚΥΡΙΟ ΠΡΟΓΡΑΜΜΑ begin end. εντολή_1; εντολή_2;... εντολή_ν; 1
1.1. Επικεφαλίδα Ένα πρόγραµµα Pascal ξεκινάει µε µια επικεφαλίδα που έχει την παρακάτω µορφή program όνοµα_προγράµµατος(αρχείο_1, αρχείο_2,...αρχείο_ν); Η επικεφαλίδα είναι η πρώτη γραµµή σε ένα πρόγραµµα και έχει την παρακάτω δοµή: - ξεκινάει µε τη λέξη program (δεσµευµένη λέξη της Pascal) - ακολουθεί το όνοµα του προγράµµατος - και στη συνέχεια µέσα σε παρενθέσεις ονόµατα αρχείων χωρισµένα µε κόµµα (,). - τελειώνει πάντα µε ; Η λίστα των αρχείων που ακολουθούν το όνοµα του προγράµµατος µπορεί να είναι προαιρετικά οι µονάδες εισόδου / εξόδου ή και τα αρχεία που πιθανόν χειρίζεται το πρόγραµµά µας. Παράδειγµα επικεφαλίδας program test_1(input, output); program test_2; Η επικεφαλίδα τελειώνει µε το χαρακτήρα ; (ελληνικό) Πρόσθετη πληροφορία Τα ονόµατα αρχείων που αναφέραµε στην επικεφαλίδα του προγράµµατος είναι στην πραγµατικότητα µεταβλητές (τύπου αρχείου). Προκειµένου ένα πρόγραµµα να µπορεί να διαβάσει δεδοµένα από ένα αρχείο ή να γράψει δεδοµένα σε ένα αρχείο θα πρέπει να δηλωθούν αντίστοιχες µεταβλητές στην επικεφαλίδα του προγράµµατος και στη συνέχεια να γίνει σύνδεση κάθε µεταβλητής µε το αρχείο που της αντιστοιχεί. Η είσοδος δεδοµένων από το πληκτρολόγιο και η έξοδος δεδοµένων στην οθόνη από ένα πρόγραµµα Pascal γίνεται διαβάζοντας και γράφοντας σε αντίστοιχα αρχεία. Αυτά τα αρχεία είναι τα input και output που δηλώσαµε στην επικεφαλίδα του πρώτου παραδείγµατος παραπάνω. Κατά την εκτέλεση ενός προγράµµατος Pascal οι µεταβλητές input και output είτε έχουν δηλωθεί στην επικεφαλίδα είτε όχι συνδέονται αυτόµατα µε το τερµατικό όπου εκτελείται το πρόγραµµα. Το αρχείο input ανοίγει για διάβασµα και τo output για γράψιµο. Στη συνέχεια οποιαδήποτε εντολή ανάγνωσης από το input διαβάζει από το πληκτρολόγιο και οποιαδήποτε εντολή εγγραφής στο output γράφει στην οθόνη. 1.2. Κύριο πρόγραµµα Μετά την επικεφαλίδα ακολουθεί ένα τµήµα δηλώσεων όπου δηλώνονται τα αντικείµενα που θα χρησιµοποιηθούν µέσα στο πρόγραµµά µας και στη συνέχεια ακολουθεί το κύριο πρόγραµµα ή σώµα. 2
- Το κύριο πρόγραµµα είναι το τµήµα εκείνο όπου δίνονται οι εντολές που πρέπει να εκτελέσει ο υπολογιστής σύµφωνα µε τον αλγόριθµο που λύνει το πρόβληµα. - Το κύριο πρόγραµµα ξεκινάει µε τη λέξη begin ακολουθούν οι εντολές του προγράµµατος και τελειώνει µε τη λέξη end ακολουθούµενη από τελεία (.) - Κάθε εντολή τελειώνει µε το χαρακτήρα ; (ελληνικό ερωτηµατικό). - Κάθε εντολή µπορεί να είναι απλή ή δοµηµένη. - Μια απλή εντολή δεν περιέχει άλλες εντολές και να αναπαριστά µια και µόνο λειτουργία. - Μια δοµηµένη εντολή αποτελείται από περισσότερες εσωτερικές εντολές Το κύριο πρόγραµµα τελειώνει πάντα µε τελεία (.) Σύνθετη εντολή (compound statement) Μια δοµηµένη εντολή είναι η σύνθετη εντολή. Είναι ένα πακέτο εντολών που περικλείεται µεταξύ των λέξεων begin και end (δεσµευµένες λέξεις). Μια σύνθετη εντολή χρησιµοποιείται ως µια απλή εντολή µε την έννοια ότι είτε θα εκτελεστούν όλες οι εντολές του πακέτου, είτε δεν θα εκτελεστεί καµιά. Το σύµβολο ; Το σύµβολο ; χρησιµοποιείται για να διαχωρίσει τις εντολές µεταξύ τους. Πρέπει υποχρεωτικά να ακολουθεί κάθε εντολή εκτός κι αν µετά την εντολή ακολουθεί end. Σ αυτή την περίπτωση το ; µπορεί να παραλείπεται ωστόσο συνίσταται να χρησιµοποιείται πάντα. Παράδειγµα προγράµµατος program domi(input,output); begin end. writeln( Το πρώτο µου πρόγραµµα ); writeln( ουλεύει ); 1.3. Βιβλιοθήκες Αµέσως µετά την επικεφαλίδα του προγράµµατος µπορούµε να δηλώσουµε µια λίστα µε ονόµατα βιβλιοθηκών (units στην Pascal) που περιέχουν συναρτήσεις που επιθυµούµε να χρησιµοποιήσουµε στο πρόγραµµά µας. Μια πολύ κοινή βιβλιοθήκη που χρησιµοποιούµε είναι η crt (ή wincrt) που περιέχουν συναρτήσεις για το χειρισµό του πληκτρολογίου και της οθόνης. Παράδειγµα δήλωσης βιβλιοθήκης uses crt,math; 3
1.4. Δηλώσεις (declarations) Μετά την επικεφαλίδα ακολουθεί το τµήµα δηλώσεων όπου δηλώνονται τα στοιχεία που χρησιµοποιούνται στο πρόγραµµα. Κάθε πρόταση δήλωσης τελειώνει µε το χαρακτήρα ; (ελληνικό ερωτηµατικό ή άνω τελεία στα αγγλικά) 1.1.1. Σταθερές (constants) Μια σταθερά (constant) είναι µια ποσότητα (δεδοµένο) που δεν αλλάζει η τιµή της. Επιπλέον κάθε σταθερά θα είναι κάποιου συγκεκριµένου τύπου. Στον παρακάτω πίνακα δίνονται παραδείγµατα σταθερών (όπως απεικονίζονται στην Pascal) µε τους τύπους τους. Σταθερά Τύπος 13 integer -234 integer 0.23 real -2.45 real 2.45e-8 a stathera real char string Πίνακας 1: Παραδείγµατα σταθερών Όταν στα προγράµµατα που γράφουµε χρησιµοποιούµε σταθερές, είναι ποιο βολικό να αναφερόµαστε σ αυτές όχι µε την τιµή τους αλλά µε κάποιο συµβολικό όνοµα. Για παράδειγµα αντί να γράφουµε τον αριθµό 3.141592653 (π ) για να υπολογίσουµε το εµβαδόν ενός κύκλου είναι προτιµότερο να γράφουµε Pi. Η Pascal µας επιτρέπει να ορίσουµε ένα όνοµα για κάθε σταθερά που χρησιµοποιούµε. Αυτό γίνεται στην περιοχή ορισµού σταθερών η οποία ακολουθεί αµέσως µετά την επικεφαλίδα και τη δήλωση των βιβλιοθηκών. Δεν είναι υποχρεωτικό να χρησιµοποιούµε ονόµατα για τις σταθερές. Συνεπώς η δήλωση σταθερών είναι προαιρετική. Ο ορισµός των σταθερών ξεκινάει µε τη λέξη const (δεσµευµένη) και στη συνέχεια παραθέτουµε τους ορισµούς για κάθε σταθερά οι οποίοι χωρίζονται µε ;. 4
Κάθε ορισµός σταθεράς αποτελείται από: - το όνοµα της σταθεράς - το σύµβολο = - την τιµή της σταθεράς - και το ; Παράδειγµα ορισµού σταθερών const Pi=3.141592653; max=100; min=-max; letter= a ; lesson= domimenos programmatismos ; Ο τύπος κάθε σταθεράς προσδιορίζεται αυτόµατα από την τιµή της. Το όνοµα µιας σταθεράς αναπαριστά µια τιµή η οποία έχει οριστεί στο τµήµα δήλωσης σταθερών. Αυτή η τιµή δεν µπορεί να αλλάξει κατά τη διάρκεια εκτέλεσης του προγράµµατος. Δηλαδή στο παραπάνω παράδειγµα το όνοµα max καθ όλη τη διάρκεια εκτέλεσης του προγράµµατος αναπαριστά την τιµή 100 και αυτό δεν αλλάζει. 1.1.2. Δηλώσεις τύπων (type declaration) Αµέσως µετά τον ορισµό σταθερών µπορεί να ακολουθεί ένα τµήµα µε δηλώσεις τύπων του χρήστη (θα δούµε περισσότερες λεπτοµέρειες.σε επόµενο κεφάλαιο. Παράδειγµα δήλωσης τύπων type Akaireos Fysikos Pshfio = integer = 1..MaxInt; = 0 9 ; 1.1.3. Δηλώσεις µεταβλητών (variable declaration) Μια µεταβλητή (variable) είναι µια ποσότητα που η τιµή της µπορεί να αλλάζει. Σε ένα πρόγραµµα χρησιµοποιούµε θέσεις µνήµης στις οποίες αποθηκεύουµε - τα δεδοµένα εισόδου - πιθανά ενδιάµεσα αποτελέσµατα των υπολογισµών - τα τελικά αποτελέσµατα Τα περιεχόµενα µιας θέσης µνήµης δηλαδή η τιµή της µπορούν να αλλάζουν κατά τη διάρκεια εκτέλεσης του προγράµµατος. 5
Στην Pascal (όπως και σε οποιαδήποτε άλλη γλώσσα προγραµµατισµού), µια µεταβλητή είναι µια θέση µνήµης που το περιεχόµενό (τιµή) της µπορεί να αλλάζει κατά τη διάρκεια εκτέλεσης ενός προγράµµατος. Για κάθε µεταβλητή που χρησιµοποιούµε σε ένα πρόγραµµα πρέπει δηλώσουµε - ένα όνοµα το οποίο θα χρησιµοποιούµε για να αναφερόµαστε στη θέση µνήµης στην οποία αντιστοιχεί η µεταβλητή και - έναν τύπο δεδοµένων ο οποίος και θα καθορίσει τι δεδοµένα µπορούν να αποθηκευτούν σ αυτή τη θέση µνήµης Η περιοχή δήλωσης των µεταβλητών σε ένα πρόγραµµα ακολουθεί τις δηλώσεις τύπων και ξεκινάει µε τη λέξη var (δεσµευµένη) και στη συνέχεια ακολουθούν οι δηλώσεις των µεταβλητών οι οποίες χωρίζονται µε ;. Κάθε δήλωση µεταβλητής αποτελείται από: - το όνοµα της µεταβλητής - το σύµβολο : - έναν τύπο δεδοµένων - το ; Αν έχουµε περισσότερες από µία µεταβλητές του ίδιου τύπου αυτές µπορούν να δηλωθούν µαζί γράφοντας τα ονόµατά τους χωρισµένα µε κόµµα (,) Παράδειγµα δήλωσης µεταβλητών var S:integer; pososto_forou,misthos,apodohes:real; onoma:string; OK:Boolean; Διαφορά σταθεράς - µεταβλητής Μια σταθερά όπως και µία µεταβλητή έχει ένα όνοµα και µια τιµή. Και τα δύο αντιστοιχούν σε µια θέση µνήµης (στην οποία αναφερόµαστε µε το όνοµά) το περιεχόµενο της οποίας είναι η τιµή. Η διαφορά µεταξύ σταθεράς και µεταβλητής είναι ότι κατά τη διάρκεια εκτέλεσης ενός προγράµµατος µπορούµε να αλλάξουµε το περιεχόµενο της θέσης µνήµης που αντιστοιχεί σε µια µεταβλητή αλλά δεν µπορούµε να κάνουµε το ίδιο µε το περιεχόµενο της θέσης µνήµης που αντιστοιχεί σε µια σταθερά. Δηλαδή κατά τη διάρκεια εκτέλεσης ενός προγράµµατος µπορούµε να αλλάξουµε την τιµή µια µεταβλητής αλλά όχι την τιµή µιας σταθεράς. 1.1.4. Δηλώσεις υποπρογραµµάτων Αµέσως µετά τη δήλωση των µεταβλητών ακολουθεί το τµήµα δήλωσης υποπρογραµµάτων από τον χρήστη (συναρτήσεις functions ή διαδικασίες procedures). Λεπτοµέρειες για τα υποπρογράµµατα σε επόµενο κεφάλαιο. 6