ΠΤΥΧΙΑΚΗ ΑΣΚΗΣΗ Τ. Ε. Ι. ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΠΤΥΧΙΑΚΗ ΑΣΚΗΣΗ Τ. Ε. Ι. ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ"

Transcript

1 ΠΤΥΧΙΑΚΗ ΑΣΚΗΣΗ Τ. Ε. Ι. ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΘΕΜΑ: «Η PROLOG ΩΣ ΓΛΩΣΣΑ ΑΝΑΚΤΗΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΑΠΟ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ» ΣΠΟΥΔΑΣΤΗΣ: ΖΑΡΠΑΣ ΝΙΚΟΛΑΟΣ Α.Μ. 220 ΥΠΕΥΘΥΝΟΣ ΚΑΘΗΓΗΤΗΣ: Dr. ΣΤΕΡΓΙΟΣ ΠΑΠΑΔΗΜΗΤΡΙΟΥ ΚΑΒΑΛΑ 2005

2 ΠΕΡΙΕΧΟΜΕΝΑ ΕΝΟΤΗΤΑ 1 ΓΝΩΡΙΜΙΑ ΜΕ ΤΗΝ PROLOG 1.1 ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ ΓΕΝΙΚΑ Η ΠΡΩΤΗ ΕΠΑΦΗ...5 ΕΝΟΤΗΤΑ 2 Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG 2.1 ΓΕΓΟΝΟΤΑ (FACTS) ΚΑΝΟΝΕΣ (RULES) ΣΥΝΤΑΞΗ ΕΝΟΣ ΚΑΝΟΝΑ ΠΩΣ ΕΡΜΗΝΕΥΟΝΤΑΙ ΟΙ ΚΑΝΟΝΕΣ ΣΥΝΔΥΑΣΜΟΣ ΓΕΓΟΝΟΤΩΝ ΚΑΙ ΚΑΝΟΝΩΝ ΣΥΜΠΕΡΑΣΜΑΤΙΚΑ ΣΥΝΘΕΤΟΙ ΟΡΟΙ (COMPLEX TERMS) ΑΝΤΙΚΕΙΜΕΝΑ ΤΗΣ PROLOG ΟΙ ΣΤΑΘΕΡΕΣ ΟΙ ΜΕΤΑΒΛΗΤΕΣ ΕΝΟΠΟΙΗΣΗ-ΤΑΥΤΟΠΟΙΗΣΗ ΤΕΛΕΣΤΕΣ...33 ΕΝΟΤΗΤΑ 3 Η PROLOG ΚΑΙ ΟΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ 3.1 ΑΝΑΖΗΤΗΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (Blind search) ΠΡΩΤΑ ΚΑΤΑ- ΒΑΘΟΣ ΑΝΑΖΗΤΗΣΗ (depth first search) ΠΡΩΤΑ ΠΛΑΤΟΣ- ΒΑΘΟΣ ΑΝΑΖΗΤΗΣΗ (depth first search)...45

3 3.1.2 ΕΥΡΙΣΤΙΚΗ ΜΕΘΟΔΟΣ ΑΝΑΖΗΤΗΣΗΣ ΠΡΩΤΑ- Ο- ΚΑΛΥΤΕΡΟΣ (Best first) ΑΝΑΡΡΙΧΗΣΗ ΛΟΦΟΥ ΠΡΟΣΟΜΕΙΩΜΕΝΗ ΑΝΟΠΤΗΣΗ Η ΕΥΡΙΣΤΙΚΗ ΜΕΘΟΔΟΣ IDA* ΟΠΙΣΘΟΔΡΟΜΗΣΗ (Backward chaining) ΚΑΙ ΕΜΠΡΟΣΘΙΟΔΡΟΜΗΣΗ (Forward chaining) ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ PROLOG ΣΧΕΣΙΑΚΕΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΚΛΕΙΔΙΑ ΤΡΟΠΟΙ ΕΡΩΤΑΠΑΝΤΗΣΕΩΝ SQL ΚΑΙ PROLOG ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ ΕΠΙΛΟΓΗ (SELECTION) ΠΡΟΒΟΛΗ (PROJECTION) ΚΑΡΤΕΣΙΑΝΟ ΓΙΝΟΜΕΝΟ (CARTESIAN PRODUCT) ΕΝΩΣΗ (UNION) ΔΙΑΦΟΡΑ (DIFFERENCE) ΤΟΜΗ (INTERSECTION) ΣΥΝΔΕΣΗ (JOIN) ΔΙΑΙΡΕΣΗ (DIVISION) ΜΕΘΟΔΟΙ ΑΝΑΠΑΡΑΣΤΑΣΗΣ ΓΝΩΣΗΣ ΛΟΓΙΚΗ ΚΑΝΟΝΕΣ ΠΑΡΑΓΩΓΗΣ ΣΗΜΑΣΙΟΛΟΓΙΚΑ ΔΙΚΤΥΑ ΠΛΑΙΣΙΑ ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΚΑΙ ΜΕΙΟΝΕΚΤΗΜΑΤΑ ΕΤΟΙΜΑ ΠΡΟΓΡΑΜΜΑΤΑ ΣΕ PROLOG ΜΗΧΑΝΙΣΜΟΣ ΑΝΑΚΤΗΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΜΗΧΑΝΙΣΜΟΣ ΕΠΕΞΗΓΗΣΗΣ ΕΡΩΤΗΣΗ ΕΠΙΤΕΥΞΗΣ ΣΤΟΧΟΥ ΔΙΑΔΙΚΑΣΙΑ ΕΞΟΔΟΥ ΔΙΑΔΙΚΑΣΙΑ ΚΑΘΑΡΙΣΜΟΥ ΜΙΑΣ ΒΑΣΗΣ ΠΡΟΣΠΕΛΑΣΗ ΔΕΔΟΜΕΝΩΝ ΜΕ ΦΥΣΙΚΗ ΓΛΩΣΣΑ.75

4 ΕΝΟΤΗΤΑ 1 Η PROLOG ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ ΓΕΝΙΚΑ. Η ΠΡΩΤΗ ΕΠΑΦΗ. 1

5 ΕΝΟΤΗΤΑ 1 - ΓΝΩΡΙΜΙΑ ΜΕ ΤΗΝ PROLOG 1.1 ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ Ιστορικά θα πρέπει να ξεκινήσει κανείς από τους χρόνους των αρχαίων Ελλήνων (Αριστοτέλης κ.ά.) όπου είχαν τεθεί φιλοσοφικά ερωτήματα για τη φύση της γνώσης και των διαδικασιών συλλογισμού. Αργότερα η προσπάθεια αυτή συστηματοποιήθηκε και τυποποιήθηκε στα τέλη του 19 ου αιώνα και τον 20 αιώνα από επιστήμονες όπως οι Frege, Boole, Russell, Tarski, Quine, Peano, Herbrand κ.α. Στα πλαίσια αυτά σημαντική υπήρξε η προσπάθεια στην κατεύθυνση της αυτόματης εξαγωγής συμπερασμάτων και αυτόματης απόδειξης θεωρημάτων. Στα 1930 ο Herbrand πρότεινε ένα μηχανικό τρόπο στην απόδειξη θεωρημάτων, που όμως ήταν πολύ αργός. Το όνομα αυτό αποδόθηκε, κατά τη διάρκεια ενός ταξιδιού με το τραίνο Παρίσι-Μασσαλία, από τη γυναίκα τού Philippe Roussel. Ο Ρ. Roussel και ο Michel Van Caneghem δούλεψαν μαζί με τον "πατέρα" της Prolog, τον Alain Colmerauer, στις πρώτες εκδόσεις της γλώσσας. Τα πρώτα βήματα για τη δημιουργία της Prolog έγιναν το 1971 και ο διερμηνευτής (iηterpreter) της Prolog γράφτηκε για πρώτη φορά σε Algol, σε ένα ΙΒΜ Ακολουθεί, μερικά χρόνια αργότερα, ένας διερμηνευτής γραμμένος σε 1101 TRAN. Την ίδια εποχή βρίσκεται στη Μασσαλία (την πατρίδα της Prolog) () Άγγλος Daνid Warren, με σκοπό τη βελτίωση των επιδόσεων της Prolog. Από αυτή την προσπάθεια θα γεννηθεί, το 1977, ο πρώτος μεταφραστής (compiler) της Prolog, γραμμένος εν μέρει σε FORTRAN και ο υπόλοιπος σε Prolog! Η σύνταξη της Prolog του Warren που ονομάζεται και Prolog του (Εδιμβούργου) ήταν διαφορετική από την αρχική Prolog της Μασσαλίας. Οι εκδόσεις της Prolog θ' ακολουθήσουν στη συνέχεια γεωμετρική πρόοδο (υπάρχει μάλιστα και μία ελληνική διάλεκτος). Η σύνταξη του Εδιμβούργου, όμως, που είναι και αυτή που υιοθετήσαμε, αρχίζει σιγά-σιγά να επιβάλλεται σαν πρότυπο. Από Ελληνικής πλευράς η ενασχόληση με την Prolog στο Ινστιτούτο Πληροφορικής και Τηλεπικοινωνιών του Ε.Κ.Ε.Φ.Ε "Δημόκριτος" έχει ιστορία περισσότερο από μια δεκαετία. Στα χρόνια αυτά η ερευνητική ομάδα Τεχνητής Νοημοσύνης τού Ινστιτούτου ήρθε σε επαφή με την Prolog από πολλές οπτικές γωνίες. Από τη μια μεριά ασχολήθηκε με την τεχνολογία υλοποίησης διερμηνέων της γλώσσας. Καρπός αυτής της δουλειάς υπήρξε η ανάπτυξη διαφόρων πειραματικών διερμηνέων οι οποίοι υλοποιήθηκαν αρχικά σε FORTRAN και ακολούθως σε C και έχουν τρέξει κάτω από λειτουργικά συστήματα MS-DOS, PRIMOS και UΝΙΧ. Η προσπάθεια αυτή συμπυκνώνεται στην ανάπτυξη του διερμηνέα της Δ-Ρrοlοg ο οποίος είναι υλοποιημένος σε γλώσσα C, τρέχει κάτω από MS-DOS και UΝIΧ. Ο διερμηνέας της Δ-Ρrοlοg έχει την επιπλέον δυνατότητα να τρέχει προγράμματα τα οποία είναι γραμμένα με Ελληνικούς χαρακτήρες. Από την άλλη μεριά η Prolog χρησιμοποιήθηκε. σαν εργαλείο για την ανάπτυξη αρκετών εφαρμογών (διδακτορικές διατριβές, διπλωματικές 2

6 ΕΝΟΤΗΤΑ 1 - ΓΝΩΡΙΜΙΑ ΜΕ ΤΗΝ PROLOG εργασίες κλπ.). Μεταξύ των εφαρμογών αυτών περιλαμβάνονται συστήματα επενεργασίας και κατανόησης της φυσικής Ελληνικής γλώσσας, έμπειρα συστήματα, χειρισμός και επεξεργασία συμβολικών παραστάσεων, διαχείριση χρονικών συμβάντων, υλοποίηση μεθόδων αναπαράστασης γνώσης κ.α. 1.2 ΓΕΝΙΚΑ Prolog, κατ' αρχήν, σημαίνει Programmer eη Logique. Η Prolog δεν είναι απλά μια ακόμα γλώσσα προγραμματισμού περισσότερο ή λιγότερο αποτελεσματική από τις πολλές άλλες που ήδη υπάρχουν, αλλά είναι η γλώσσα που εισάγει μια νέα αντίληψη στον προγραμματισμό. Είναι μια γλώσσα του Λογικού Προγραμματισμού που βασίζεται στη Λογική και σχεδιάστηκε για την επίλυση προβλημάτων από την περιοχή της Τεχνητής Νοημοσύνης, αλλά επηρεάστηκε σημαντικά τη γενικότερη εξέλιξη της επιστήμης των Υπολογιστών. Η ανάλυση ενός προβλήματος συνίσταται στον ορισμό κάποιων δομών δεδομένων και στην επινόηση ενός αλγορίθμου για την επίλυση του. Η γραφή ενός προγράμματος για την επίλυση ενός προβλήματος στις συμβατικές γλώσσες προγραμματισμού (Pascal, C, FORTRAN κ.λ.π ) είναι η διατύπωση ενός συνόλου εντολών (instructions) της αντίστοιχης γλώσσας οι οποίες εκτελούνται από τον Η/Υ. Ε είναι ο όρος «εντολή», που χρησιμοποιήθηκε για να εκφράζει την αντίληψη του προγραμματισμού κατά την οποία δίνεται έμφαση στη ροή του ελέγχου. Από την άλλη μεριά, η γραφή ενός προγράμματος Prolog συνίσταται στην περιγραφή των δεδομένων και των σχέσεων που τα διέπουν με τη βοήθεια προτάσεων ενός υποσυνόλου της λογικής πρώτης τάξης, που ονομάζονται προτάσεις Horn. Η προγραμματιστική αντίληψη που εισάγεται με την Prolog και γενικότερα με το λογικό προγραμματισμό είναι τέτοια ώστε αν θεωρήσουμε ότι (η εξίσωση στον Kowalski) Αλγόριθμος= λογική +έλεγχος Τότε ο προγραμματιστής οφείλει να περιγράψει μόνο τη λογική του προβλήματος ενώ ο έλεγχος αφήνετε στο σύστημα του λογικού προγραμματισμού. Ο κυριότερος σταθμός στην αυτόματη απόδειξη θεωρημάτων από προτάσεις της λογικής πρώτης τάξης υπήρξε η εργασία του Robinson (1965) με καρπό την "Αρχή της ανάλυσης" (Resolution principle). Η αρχή της ανάλυσης είναι μια γενίκευση του κανόνα συμπερασματολογίας «τρόπος σκέψης» (modus ponens) και βασίζεται στην ιδέα: Α Λ(~Α V Γ) ==> Γ Η αρχή αυτή, σε συνδυασμό με τη διαδικασία της ταυτοποίησης ατομικών τύπων, αποτελεί ένα πολύ ισχυρό και απλό στην υλοποίησή του μηχανισμού 3

7 ΕΝΟΤΗΤΑ 1 - ΓΝΩΡΙΜΙΑ ΜΕ ΤΗΝ PROLOG αυτόματης εξαγωγής συμπερασμάτων. Το 1969 ο Green χρησιμοποίησε ένα σύστημα εξαγωγής συμπερασμάτων γραμμένο σε Lίsp, σε μία εφαρμογή ερωταπαντήσεων (Question Answering System). Ακολούθησαν διάφορα Συστήματα Παραγωγής (Production Systems) με εφαρμογή στην Απόδειξη Θεωρημάτων (Theorem Proving), όπως των Roger και Moore (1972), του KowaIskl (1970) κ.ά. Με την απομόνωση των προτάσεων Horn που είναι υποσύνολο των προτάσεων της Λογικής Α' τάξης, (προτάσεις που περιλαμβάνουν το πολύ ένα θετικό ατομικό τύπο), η υλοποίηση μιας γλώσσας προγραμματισμού που να δέχεται, να ερμηνεύει και να μπορεί να εξάγει αυτόματα συμπεράσματα από τις προτάσεις αυτές. Με τη βοήθεια της αποδεικτικής διαδικασίας της αρχής της Ανάλυσης, ήταν πλέον μια υπόθεση ολίγου χρόνου. Η γλώσσα αυτή που ονομάστηκε Prolog (PROgrammlng Ιn LOGlc), αναπτύχθηκε από τη γαλλική ερευνητική ομάδα τεχνητής νοημοσύνης,του Alan Colmerauer, στο Πανεπιστήμιο Lumιny της Μασσαλίας, Οι πρώτες δημοσιεύσεις. γύρω από την Prolog εμφανίζονται κατά τα έτη Παράλληλα, η αλματώδης ανάπτυξη της τεχνολογίας των υπολογιστών οδήγησε τη χρήση τους σε νέες εφαρμογές όπως η κατανόηση φυσικής γλώσσας ή τα έμπειρα συστήματα, που απαιτούν "ιδιαίτερη νοημοσύνη". Η Τεχνητή Νοημοσύνη είναι ο κλάδος της επιστήμης των υπολογιστών που ασχολείται με αυτά τα θέματα, καθώς και με τα "εργαλεία" που χρειάζονται για την επίλυση και επεξεργασία των θεμάτων αυτών. Έτσι η Prolog είναι μια γλώσσα της Τεχνητής Νοημοσύνης, επί πλέον όμως δεν παύει να είναι και μια γλώσσα γενικής χρήσης (general purpose) και υπάρχουν αρκετές εφαρμογές σε συνεργασία με Τράπεζες Δεδομένων ακόμα και σε μηχανογραφικά συστήματα. Το βασικό της μειονέκτημα, που είναι ο σχετικά αργός μηχανισμός της συνεπαγωγής, φαίνεται ότι θα ξεπεραστεί από την ανάπτυξη της τεχνολογίας με τα παράλληλα υπολογιστικά συστήματα. Στη διάδοση της Prolog σημαντικό ρόλο έπαιξε η αναγγελία του προγράμματος των υπολογιστών της 5ης γενιάς, από τους Ιάπωνες το 1981: Το πρόγραμμα αυτό θα έχει σαν βασική υποδομή το Λογικό Προγραμματισμό, υλοποιημένο με Prolog ή με μια παρεμφερή προς αυτή γλώσσα. Η περιοχή του λογικού προγραμματισμού εξακολουθεί να παραμένει μια εξαιρετικά ενεργός ερευνητικά περιοχή. Σημαντική ερευνητική δραστηριότητα αφορά την ανάπτυξη παράλληλων γλωσσών λογικού προγραμματισμού. Η έρευνα στην κατεύθυνση αυτή έχει δώσει ήδη αρκετά χειροπιαστά αποτελέσματα. Άλλες ερευνητικές κατευθύνσεις αφορούν τη βελτίωση του ελέγχου του μηχανισμού απόδειξης της Prolog (μερικά αποτελέσματα αφορούν τη λεγόμενη έξυπνη οπισθοδρόμηση (intelligent backtracking), την εισαγωγή μηχανισμού καθυστέρησης της εκτέλεσης κάποιων κλήσεων (delay) κ.λ.π.), τη διεύρυνση του υποσυνόλου της λογικής που χρησιμοποιείται σαν γλώσσα προγραμματισμού, τον συνδυασμό του λογικού προγραμματισμού με άλλες προγραμματιστικές φιλοσοφίες όπως συναρτησιακό προγραμματισμό (functional programming), και προγραμματισμό προσανατολισμένο σε αντικείμενα (object-oriented 4

8 ΕΝΟΤΗΤΑ 1 - ΓΝΩΡΙΜΙΑ ΜΕ ΤΗΝ PROLOG programmlng) καθώς και η ανάπτυξη ενδιάμεσων για επικοινωνία με αλγοριθμικές γλώσσες προγραμματισμού και με βάσεις δεδομένων. Σημαντική είναι και η προσπάθεια συνδυασμού του λογικού προγραμματισμού με μεθοδολογίες προγραμματισμού με περιορισμούς (constraint programming) όπου παρέχεται στο χρήστη η δυνατότητα να ορίζει, με εξαιρετικά δηλωτικό τρόπο, περιορισμούς (constraints) που πρέπει να ισχύουν μεταξύ μεγεθών του προς επίλυση προβλήματος. Τέλος, σημαντική έρευνα γίνεται ώστε να αναπτυχθούν περιβάλλοντα λογικού προγραμματισμού, αυτόματης απόδειξης ορθότητας προγραμμάτων, μετασχηματισμού προγραμμάτων και αυτόματου προγραμματισμού. 1.3 Η ΠΡΩΤΗ ΕΠΑΦΗ Επειδή ο καλύτερος τρόπος για να καταλάβει κανένας μια γλώσσα προγραμματισμού είναι να γράψει ένα εύκολο πρόγραμμα. Για να γράψει κάποιος ένα πρόγραμμά στην Prolog δεν είναι απαραίτητο να γνωρίζει πολλά πράγματα από προγραμματισμό διότι δεν θα χρειαστεί να αποστηθίσουμε λέξεις-κλειδιά όπως FOR,WHILE, IF.. THEN κ.λ.π. Φτάνει μόνο να καταγράψουμε τη γνώση μας χωρίς περίπλοκες εντολές. Όπως για παράδειγμα ζώο(τίγρης). Εδώ δεν κάναμε κάτι το ιδιαίτερο απλά καταγράψαμε μια γνώση που έχουμε για την ιδιότητα του σκύλου ότι είναι ζώο. Αυτό ήταν το πρώτο μας πρόγραμμα στην Prolog. Τώρα θα εμπλουτίσουμε το πρόγραμμα μας: ζώο(τίγρης). ζώο(λεοπάρδαλη). ζώο(λιοντάρι). "Ωραία, και τώρα τι γίνεται; ", θ' αναρωτηθεί κανείς. "Ποια είναι τ' αποτελέσματα αυτού του προγράμματος; ". Το πρώτο αποτέλεσμα είναι ότι, χάρη στην Prolog, ο ηλεκτρονικός υπολογιστής γνωρίζει ότι ο τίγρης,η λεοπάρδαλη και το λιοντάρι είναι ζώα. Τώρα η Prolog περιμένει να περάσει τις εξετάσεις μ' ένα όμορφο ερωτηματικό:? Το πρώτο πράγμα που θα ρωτήσουμε την Prolog είναι να μας πει αν ο τίγρης, είναι. ζώο. Μετά από το ερωτηματικό. Θα γράψουμε :?ζώο(τίγρης). 5

9 ΕΝΟΤΗΤΑ 1 - ΓΝΩΡΙΜΙΑ ΜΕ ΤΗΝ PROLOG Και η Prolog θα μας απαντήσει: =ναι Το πρώτο πρόγραμμά μας δουλεύει. Καταφέραμε επιτέλους να πούμε σε έναν ηλεκτρονικό υπολογιστή ότι ο τίγρης, είναι ζώο (και όχι, Π.χ., μάρκα υπολογιστών), Τώρα θα τον ρωτήσουμε και πιο πολύπλοκο "Θέλω να μου δώσεις όλα τα ζώα που γνωρίζεις". Πώς, όμως, θα εκφράσουμε την έννοια του όλα; Θα χρησιμοποιήσουμε γι' αυτό μία μεταβλητή Χ. Θα ρωτήσουμε τον ηλεκτρονικό υπολογιστή?ζώο(χ) Και ο υπολογιστής μέσω της Prolog θα μας απαντήσει: Χ= τίγρης Χ= λεοπάρδαλη Χ= λιοντάρι Με την απάντηση του αυτή θα μας δώσει όλες τις "τιμές" του Χ, για τις οποίες η σχέση ζώο(χ) επαληθεύετε. Φυσικά δεν περιμένουμε να μας απαντήσει Χ= ελέφαντας και αυτό γιατί δεν υπάρχει στην βάση γνώσης μας ότι ζώο(ελέφαντας). Δηλαδή δεν γνωρίζει η Prolog πώς ο ελέφαντας είναι ζώο. Αν ας πούμε προσθέσουμε μέσα στο πρόγραμμα μας ζώο(βιβλίο). η Prolog στην ερώτηση,? ζώο(βιβλίο) θα μας απαντούσε καταφατικά =ναι Η γλώσσα Prolog αναπτύσσεται μέσα στον εσωτερικό της κόσμο, ο οποίος; αποτελείται από γεγονότα. Ένα γεγονός μπορεί να αντιπροσωπεύει μία σχέση, μια πληροφορία ή ένα δεδομένο. Αυτά τα γεγονότα όμως, δεν αντανακλούν αναγκαστικά στην εξωτερική πραγματικότητα. παρά μόνο στο βαθμό που επιθυμεί ο προγραμματιστής. Ας δώσουμε, τώρα, μερικά άλλα παραδείγματα γεγονότων, τα οποία θα μπορούσαμε να προγραμματίσουμε στην Prolog. 6

10 ΕΝΟΤΗΤΑ 1 - ΓΝΩΡΙΜΙΑ ΜΕ ΤΗΝ PROLOG φίλος ( σπύρου, κώστας ). αγαπάει ( γιάvνης, μαρία ). κοστίζει ( χρυσαφί, πολύ ). είναι ( ομάδα, ολυμπιακός ). αγαπάει (σπύρος, αλέξανδρο ). κωδικός( πελάτη, 12123). ημερομηνία ( λήξης, 12, σεπτεμβρίου, 1989). δίνει( βιβλιοπώλης, βιβλίο, πελάτη). βρέχει. Ένα γεγονός στην Prolog, λοιπόν, έχει ένα όνομα και διάφορα αντικείμενα. Έτσι όταν γράφουμε : φίλος ( σπύρου, κώστας ). εκφράζουμε ένα γεγονός, το οποίο εκφράζει μία σχέση μεταξύ διαφόρων παραμέτρων. Το όνομα της σχέσης θα το ονομάσουμε κατηγόρημα (predicate), Οι παράμετροι της σχέσης ονομάζονται και αντικείμενα ή όροι (terms) αυτής της σχέσης. Ας πάρουμε το εξής πρόγραμμα: αγαπάει ( νίκος, σοφία). αγαπάει( δημήτρης, ελένη). έξυπνο(κουτάβι). έξυπνο(δελφίνι). χιονίζει. Το πρόγραμμα αυτό αποτελείται από πέντε γεγονότα, (δηλαδή από πέντε σχέσεις). Τα δύο πρώτα αντιστοιχούν στο κατηγόρημα αγαπάει και δέχονται δυο όρους, τα δύο επόμενα υλοποιούν το κατηγόρημα έξυπνο και αφορούν έναν όρο. Το τελευταίο γεγονός είναι ένα γεγονός χωρίς όρους και αντιστοιχεί στο κατηγόρημα χιονίζει. Όταν, για να εκφράσουμε τη γνώση ότι το ποτήρι είναι ασημένιο, καταγράφουμε στο πρόγραμμά μας το γεγονός, Π.χ. ασήμι ( ποτήρι).αναφερόμαστε σ' ένα συγκεκριμένο αντικείμενο. Δηλαδή σ' ένα συγκεκριμένο ποτήρι ή μία συγκεκριμένη κατηγορία ποτηριών. Έχουμε να κάνουμε με μια σταθερά (γι' αυτό και χρησιμοποιήσαμε σαν πρώτο γράμμα της λέξης το μικρό 'π'). Αν όμως, γράφαμε ασήμι(ποτήρι) Θα σήμαινε ότι οτιδήποτε αντικείμενο (ακόμα κι ένα δέντρο) είναι φτιαγμένο από ασήμι. Αυτό οφείλεται στο ότι χρησιμοποιήσαμε μία. μεταβλητή (κεφαλαίο «Π»). 'Έτσι, αν ρωτούσαμε? ασήμι(δέντρο), 7

11 ΕΝΟΤΗΤΑ 1 - ΓΝΩΡΙΜΙΑ ΜΕ ΤΗΝ PROLOG η Prolog θα μας απαντούσε καταφατικά (κάτι που δεν θα ήταν σύμφωνο με τις δικές μας γνώσεις). Υπάρχουν φυσικά και περιπτώσεις όπου, μέσα σ' ένα γεγονός, χρειάζεται να χρησιμοποιήσουμε κάποια μεταβλητή. Τώρα,θα υποθέσουμε ότι τα αντικείμενα, στα οποία αναφερόμαστε με τη βοήθεια κατηγορημάτων, απεικονίζονται από σταθερές. Στη συνέχεια θα δούμε μερικούς κανόνες για την σύνταξη των διαφόρων γεγονότων στη Prolog: Το όνομα του κατηγορήματος, όπως και το όνομα των αντικειμένων του πρέπει να αρχίζει πάντα από μικρό γράμμα (να είναι, δηλαδή, σταθερά). Στο εσωτερικό ενός ονόματος επιτρέπεται να τοποθετούμε το σύμβολο _ (κάτω παύλα = underscore) για να ενώνουμε δύο διαφορετικές λέξεις (τηλέφωνο_ φίλου, έχει_ μόνο κλπ.). Οι όροι του γεγονότος (όταν υπάρχουν) τοποθετούνται μέσα σε παρένθεση και διαχωρίζονται (όταν είναι περισσότεροι του ενός) με κόμματα. Η εκφώνηση ενός γεγονότος τελειώνει πάντοτε με τελεία. Οι μεταβλητές, τις οποίες για την ώρα θα χρησιμοποιήσουμε. μόνο κατά τη διάρκεια των ερωτήσεων, αρχίζουν πάντα με κεφαλαίο γράμμα. Ας εξετάσουμε κι ένα δείγμα συντακτικών λαθών που θα μπορούσαμε να είχαμε κάνει κατά τη γραφή των γεγονότων Φρούτο (μήλο) Φρούτο (μήλο) Λείπει η τελεία. Το όνομα του κατηγορήματος δεν αρχίζει με κεφαλαίο. Φρούτο (μήλο αχλάδι ) Λείπει το κόμμα μεταξύ των αντικειμένων. 1821(επανάσταση) έχει πάρει (βιβλίο) Το όνομα δεν αρχίζει με γράμμα. Το όνομα του κατηγορήματος αποτελείται από δύο λέξεις,χωρίς να μεσολαβεί η κάτω παύλα. Εννοείται ότι οι διάφορες διάλεκτοι της Prolog δεν ακολουθούν πάντα την ίδια σύνταξη και αναγνωρίζουν (συνήθως) μόνο λατινικούς χαρακτήρες. 8

12 ΕΝΟΤΗΤΑ 1 - ΓΝΩΡΙΜΙΑ ΜΕ ΤΗΝ PROLOG 9

13 ΕΝΟΤΗΤΑ 2 Η PROLOG ΩΣ ΓΛΩΣΣΑ ΓΕΓΟΝΟΤΑ (FACTS)... ΚΑΝΟΝΕΣ (RULES)... ΣΥΝΘΕΤΟΙ ΟΡΟΙ (COMPLEX TERMS).. ΑΝΤΙΚΕΙΜΕΝΑ ΤΗΣ PROLOG. ΕΝΟΠΟΙΗΣΗ-ΤΑΥΤΟΠΟΙΗΣΗ.. ΤΕΛΕΣΤΕΣ 10

14 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG 2.1 Γεγονότα (facts) Η απλούστερη μορφή πρότασης (clause) στην Prolog είναι το γεγονός (fact) κωδικοποιούμε πρωταρχικές γνώσεις γύρω από το πρόβλημα που θέλουμε να επιλύσουμε, τις γνώσεις δηλαδή που δεν παράγονται από άλλες. Για παράδειγμα, με ένα γεγονός μπορούμε να δηλώσουμε στην Prolog ότι δύο αντικείμενα συνδέονται μεταξύ τους με σχέση (relationship). Ας πάρουμε ένα παράδειγμα για να κατανοήσουμε καλύτερα τις τεράστιες δυνατότητες της Prolog. Είναι Κυριακή βράδυ και θέλουμε να καταγράψουμε τα αποτελέσματα των ποδοσφαιρικών αγώνων του τελευταίου μήνα : ποιος έπαιξε εναντίον ποιού, ποιο είναι το αποτέλεσμα του αγώνα κλπ. Είναι πρωταρχικό στην Prolog, πριν αρχίσουμε το γράψιμο οποιουδήποτε προγράμματος, να βρούμε ποιο είναι το όνομα του γεγονότος που επιθυμούμε να εκφράσουμε. Το γεγονός σ' αυτή την περίπτωση είναι ότι η ομάδα α έπαιξε εναντίον της ομάδας β και έφερε το αποτέλεσμα γ. Αν Π.χ. ο Παναθηναϊκός κέρδισε εκτός έδρας τον Ολυμπιακό με 2-0, θα μπορούσαμε να γράψουμε το εξής γεγονός: έπαιξε(ολυμπιακός, παναθηναϊκός, 0, 2). Το έπαιξε ονομάζεται κατηγόρημα (predicate) ενώ τα ολυμπιακός και παναθηναϊκός αποτελούν τα ορίσματα (arguments). Ο αριθμός των oρισμάτων που αντιστοιχεί σε κάποιο κατηγόρημα ονομάζεται τάξη (arity) του κατηγορήματος αυτού. Η συγκεκριμένη διάταξη των oρισμάτων δεν παίζει κανένα ρόλο αρκεί να ακολουθείται με συνέπεια για όλες τις σχέσεις με το ίδιο κατηγόρημα. Το κατηγόρημα μαζί με τα ορίσματα που περιλαμβάνει ονομάζεται ατομικός τύπος (atomic formula). Στην πρόταση ομάδα (ολυμπιακός) ο ολυμπιακός έχει την ιδιότητα (property) ομάδα Υπάρχουν, όμως, χίλιοι-δύο άλλοι τρόποι στην Prolog για να εκφράσουμε το ίδιο γεγονός που περιγράψαμε πιο πάνω αγώνας (ολυμπιακός, παναθηναϊκός, 0, 2) ή κέρδισε (παναθηναϊκός, ολυμπιακός, 2, 0) ή παναθηναϊκός (ολυμπιακός, 2, 0) ή ολυμπιακός (έχασε, 2, Ο, παναθηναϊκός) ή νίκη (εκτός έδρας, παναθηναϊκός, 2, 0, ολυμπιακός). κλπ. Άρα καταλήγουμε στα εξής συμπεράσματα: Ένα σύνολο από γεγονότα είναι ένα πρόγραμμα Prolog. Ένα γεγονός περιλαμβάνει έναν και μόνο ατομικό τύπο. Ένας ατομικός τύπος αποτελείται από ένα κατηγόρημα τάξης και μεγαλύτερο ή ίσο του μηδενός και από κ ορίσματα. Ένα όρισμα μπορεί να είναι ένα άτομο. 11

15 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG Η Prolog δεν μας επιβάλλει κανέναν από τους παραπάνω ή τους υπόλοιπους δυνατούς τρόπους. Εμείς Θα πρέπει να διαλέξουμε τον τρόπο που μας αρέσει και που αντιπροσωπεύει καλύτερα το γεγονός. Ας μην ξεχνάμε, όμως, ότι οι απαντήσεις της Prolog αποτελούνται από τα αντικείμενα, με τα οποία κατασκευάσαμε τα γεγονότα μας. Αν είχαμε δηλαδή ένα γεγονός του τύπου: κέρδισε(παναθηναϊκός, 2). Δεν θα είμαστε, στη συνέχεια, σε θέση να μάθουμε ούτε ποιόν κέρδισε ο παναθηναϊκός, ούτε το ακριβές σκορ του αγώνα. Ας διαλέξουμε, λοιπόν, το συμβολισμό: αγώνας(ολυμπιακός, παναθηναϊκός, 0, 2). Αξίζει να παρατηρήσουμε ότι αυτό το γεγονός δεν είναι το ίδιο με : αγώνας (παναθηναϊκός, ολυμπιακός:, 2, 0), γιατί, ενώ το πρώτο εκφράζει ότι ο παναθηναϊκός κέρδισε τον ολυμπιακός εκτός έδρας, το δεύτερο εκφράζει ότι ο παναθηναϊκός έπαιξε στο γήπεδό του.ας καταγράψουμε, λοιπόν, μερικά από τα ποδοσφαιρικά αποτελέσματα του τελευταίου μήνα: αγώνας(ολυμπιακός, παναθηναϊκός, 0, 2). αγώνας(ολυμπιακός, αεκ, 3, 3). αγώνας (ολυμπιακός, άρης, 0,0 ). αγώνας(παναθηναϊκός, ολυμπιακός, 1, 1). αγώνας(παναθηναϊκός, άρης, 5, 0). αγώνας(άρης, αεκ, 1, 0). αγώνας(αεκ, παναθηναϊκός, 0, 0). αγώνας(αεκ, ολυμπιακός, 2, 1). Είμαστε τώρα σε θέση να ρωτήσουμε την Prolog. Στην πρώτη ερώτηση που Θα υποβάλουμε, θα επαληθεύσουμε το αποτέλεσμα ενός αγώνα:? αγώνας(άρης, αεκ, 1, Ο). =ναι και συνεχίζουμε:? αγώνας(αεκ, άρης, Ο, Ο). =όχι 12

16 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG Πράγματι, η Prolog δεν γνωρίζει τέτοιον αγώνα. Μπορούμε, όμως, να ρωτήσουμε ποιοι ήταν οι αντίπαλοι της αεκ. Επειδή θέλουμε να μάθουμε όλους τους αντιπάλους της, θα χρησιμοποιήσουμε μία μεταβλητή. Δεν είμαστε,φυσικά αναγκασμένοι να ονομάζουμε τη μεταβλητή μας Χ. Ας την ονομάσουμε Αντίπαλος. Πράγματι, η Prolog τη θεωρεί μεταβλητή, γιατί το όνομά της αρχίζει με κεφαλαίο γράμμα (το Α). Επιθυμούμε, ακόμα, να μάθουμε το αποτέλεσμα του κάθε αγώνα της αεκ με τους διαφόρους αντιπάλους της. Θα χρησιμοποιήσουμε γι' αυτό το σκοπό δύο άλλες μεταβλητές : Σκορ_αεκ και Σκορ-αντιπάλου και θα ρωτήσουμε? αγώνας(αεκ, Αντίπαλος, Σκορ_αεκ, Σκορ-αντιπάλου). Μ' άλλα λόγια: "Ποια είναι τα γεγονότα που συμπεριλαμβάνουν το αντικείμενο αεκ και ποια είναι τα άλλα τρία αντικείμενο που το ακολουθούν ;" Η Prolog Θα μας απαντήσει: Αντίπαλος = παναθηναϊκός Σκορ_αεκ=0 Σκορ-αντιπάλου=0 Αντίπαλος= ολυμπιακός Σκορ_αεκ=2 Σκορ-αντιπάλου=1 Μας παρουσιάζει, δηλαδή,τα αποτελέσματα όλων των αγώνων της αεκ στην έδρα της.αν, τώρα,θέλουμε να μάθουμε τα αποτελέσματα όλων των αγώνων εκτός έδρας της αεκ θα ρωτήσουμε :? αγώνας(αντίπαλος, αεκ, Σκορ-αντιπάλου, Σκορ_αεκ ). και θα πάρουμε Αντίπαλος= ολυμπιακός Σκορ-αντιπάλου=3 Σκορ_αεκ=3 Αντίπαλος= άρης Σκορ-αντιπάλου=1 Σκορ_αεκ=0 Ας υποθέσουμε τώρα ότι θέλουμε να μάθουμε όλες τις ισοπαλίες. Μια ισοπαλία χαρακτηρίζεται από το ίδιο σκορ των δυο αντιπάλων.επειδή,όμως δεν γνωρίζουμε εκ των προτέρων ποιο μπορεί να είναι το σκορ της κάθε ισοπαλίας,θα χρησιμοποιούμε την ίδια και μόνο μεταβλητή (την οποία θα ονομάσουμε, π.χ.,χ)και θα ρωτήσουμε :?αγώνας (ομάδα1, ομάδα2, Χ, Χ). 13

17 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG Δηλαδή : «Πες μου ποιες είναι οι ομάδες (ομάδα1 και ομάδα2 ), για τις οποίες το σκορ (Χ) είναι το ίδιο». Χρησιμοποιήσαμε δυο μεταβλητές για τις ομάδες,γιατί θέλουμε να μάθουμε όλες τις ομάδες που έφεραν ισοπαλία.δεν γνωρίζουμε, δηλαδή,εκ, των προτέρων τα ονόματα αυτών των ομάδων.η Prolog θα μας απαντήσει με τέσσερις λύσεις : ομάδα1=ολυμπιακός ομάδα2=αεκ Χ=3 ομάδα1=ολυμπιακός ομάδα2=άρης Χ=0 ομάδα1=παναθηναικός ομάδα2=ολυμπιακός Χ=1 ομάδα1=αεκ ομάδα2= παναθηναϊκός Χ=0 Μας απάντησε. δηλαδή. με όλες τις ισοπαλίες τού μήνα, δείχνοντας μας και το ισόπαλο σκορ του αγώνα. Ο προσεκτικός αναγνώστης θα παρατήρησε ότι η ερώτηση αγώνας (ομάδα1, ομάδα2, Χ, Χ) δεν είναι το ίδιο πράγμα με την ερώτηση αγώνας (ομάδα1, ομάδα2, Χ, Υ). Με την πρώτη ερώτηση την αναγκάζουμε να εντοπίσει τα γεγονότα όπου η τρίτη παράμετρος (το σκορ της γηπεδούχου) είναι ίδια με την τέταρτη (το σκορ της επισκέπτριας). Αντίθετα, αν είχαμε χρησιμοποιήσει δύο διαφορετικές μεταβλητές, η Prolog θα μας είχε υποδείξει όλα τα σκορ. Μέσα σ' αυτά θα εμφανίζονταν, φυσικά, και τ' αποτελέσματα όπου το Χ ισούται με το Υ. Με άλλα λόγια η δεύτερη ερώτηση (Χ και Υ) είναι πιο γενική από την πρώτη (μόνο Χ). Τώρα ας υποθέσουμε ότι είμαστε οπαδοί του άρη και θέλουμε να δούμε όλες. τις ισοπαλίες του άρη εκτός έδρας. Επειδή δεν γνωρίζουμε εκ των προτέρων τον αντίπαλό του, θα χρησιμοποιήσουμε μία μεταβλητή Υ και θα ρωτήσουμε? αγώνας(υ, άρης, Χ, Χ). Με άλλα λόγια, "Δώσε μου το όνομα της ομάδας Υ που έπαιξε στην έδρα της (πρώτη παράμετρος του γεγονότος) εναντίον του άρη και που έφερε το ίδιο σκορ με τον άρη (Χ)". Η Prolog θα μας απαντήσει με μία μόνο λύση: Υ =ολυμπιακός Χ =0 14

18 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG Μήπως ο άρης έχει φέρει ισοπαλία στην έδρα του;? αγώνας(άρης, ομάδα, Χ, Χ). =όχι Υπάρχει κανένας αγώνας όπου η αεκ να μην έχει καταφέρει να βάλει κανένα, τέρμα παίζοντας στην έδρα της;? αγώνας( άεκ, ομάδα, 0, Χ). Εδώ ζητάμε από την Prolog να μας βρει μία ομάδα (που αντιπροσωπεύεται από τη μεταβλητή ομάδα) που να έχει παίξει εκτός έδρας εναντίον τής άεκ και να έχει φέρει το σκορ Χ. Το σκορ της άεκ δεν είναι μεταβλητή, δεδομένου ότι το γνωρίζουμε (0). Η Prolog θα μας απαντήσει: ομάδα= παναθηναϊκός Χ=0 Πράγματι, στον αγώνα της εναντίον του παναθηναϊκού η αεκ είχε φέρει ισοπαλία (0-0),χωρίς να έχει πετύχει κανένα τέρμα. Πέρα από όσα είδαμε ως εδώ,όμως η Prolog μας δίνει τη δυνατότητα να διατυπώνουμε και σύνθετες ερωτήσεις.π.χ. «Ποια είναι η ομάδα που κέρδισε με 1-0 στην έδρα της την αεκ και ηττήθηκε με 5-0 εκτός έδρας από τον παναθηναϊκό».για να εκφράσουμε το και στην Prolog,χρησιμοποιούμε το σύμβολο (,). Έτσι θα γράψουμε:?αγώνας (Χ, αεκ, 1, 0), αγώνας (παναθηναϊκός, Χ,5,0) η Prolog θα συμβουλευτεί το πρόγραμμα μας και θα προσπαθήσει να εντοπίσει τα δυο γεγονότα που ικανοποιούν την ερώτηση μας.η απάντηση της θα είναι : Χ= άρης Η εξαγωγή συμπερασμάτων με βάση τη γνώση που περιλαμβάνει ένα πρόγραμμα γίνεται υποβάλλοντας ερωτήσεις στο πρόγραμμα αυτό. Μια απλή ερώτηση περιλαμβάνει μια κλήση (call) κάποιας πρότασης του προγράμματος μας. Ο ατομικός τύπος μιας ερώτησης μπορεί να περιλαμβάνει μεταβλητές στις θέσεις αγνώστων ορισμάτων τα οποία ζητάμε να μάθουμε υποβάλλοντας την ερώτηση.τα ονόματα των μεταβλητών ξεκινούν με κεφαλαίο χαρακτήρα ή _ Ένα πρόγραμμα μπορεί να δώσει όλες τις δυνατές απαντήσεις σε μια ερώτηση που υποβάλλουμε. 15

19 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG 2.2 Οι κανόνες (rules) Διαπιστώσαμε ότι η λειτουργία της Prolog στηρίζεται σε μία μεθοδική εξέταση μιας ολόκληρης βάσης δεδομένων (που καμιά φορά ονομάζουμε και βάση γεγονότων). Παίρνοντας υπ' όψη της μία αρχική ερώτησή μας, η Prolog αρχίζει να τη συγκρίνει με κάθε ένα από τα γεγονότα που της δηλώσαμε. Όταν καταφέρει και ενοποιήσει την ερώτησή μας μ' ένα γεγονός, τότε δίνει τη λύση (δηλαδή το αποτέλεσμα των ενοποιήσεών της) και συνεχίζει μέχρι να εξαντλήσει όλα. Τα γεγονότα Σύνταξη ενός κανόνα Ο προγραμματισμός της Prolog, όμως, δεν περιορίζεται στη διατύπωση απλών γεγονότων. Η γλώσσα Prolog μας δίνει τη δυνατότητα να εκφράσουμε με έναν ή πολλούς κανόνες, τις γνώσεις που διέπουν ένα συγκεκριμένο πρόβλημα. Ας πάρουμε ένα συγκεκριμένο παράδειγμα. Επιθυμούμε να συμβολίσουμε το γενεαλογικό δέντρο μίας οικογένειας: Η Δανάη και ο Άλκης είναι αδέρφια και οι γονείς τους ονομάζονται Αγησίλαος και Σάρα. Ο Άλκης παντρεύτηκε μοναχοκόρη του Μενέλαου και της Κλειώς, τη Λουίζα. Τα δυο παιδία τους ονομάζονται Νίκος και Αλέξανδρος. Αν επιθυμούμε να προγραμματίσουμε τα οικογενειακά γεγονότα θα γράψουμε: πατέρας (δανάη, αγησίλαος) πατέρας (άλκης, αγησίλαος) πατέρας (λουίζα, μενέλαος) πατέρας (νίκος, άλκης) πατέρας (άλκης, αγησίλαος) πατέρας (αλέξανδρος, άλκης) μητέρα (δαναή, σάρα) μητέρα (άλκης, σάρα) μητέρα (λουίζα, κλειώ) μητέρα (νίκος, λουίζα) μητέρα (αλέξανδρος, λουίζα) γιαγιά (νίκος, σάρα) γιαγιά (αλέξανδρος, σάρα) γιαγιά (νίκος, κλειώ) γιαγιά (αλέξανδρος, κλειώ) αδέρφια(δανάη, άλκης) αδέρφια(νίκος, αλέξανδρος) 16

20 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG Προσέχοντας, βέβαια, να μην χρησιμοποιούμε κεφαλαία στη θέση των κύριων ονομάτων, γιατί αλλιώς η Prolog θα τα ερμηνεύσει σαν μεταβλητές. Το ότι γράφουμε: γιαγιά(αλέξανδρος, σάρα). σημαίνει ότι η γιαγιά του Αλέξανδρου ονομάζεται Σάρα. Αν τώρα γράφαμε γιαγιά(αλέξανδρος, σάρα). αυτό θα σήμαινε ότι όλος ο κόσμος έχει μία γιαγιά πού τη λένε Σάρα. Θα ήταν δηλαδή σαν να γράφαμε γιαγιά (Χ, σάρα). Αν κάναμε το λάθος και γράφαμε γιαγιά(αλέξανδρος, Σάρα). αυτό θα σήμαινε το ίδιο πράγμα με το γιαγιά(αλέξανδρος, Χ). Δηλώνει ότι όλος ο κόσμος είναι η γιαγιά του Αλέξανδρου. Ας κάνουμε τώρα μερικές ερωτήσεις στην Prolog για να επαληθεύσουμε τα διάφορα γεγονότα. ποια είναι τα παιδιά του Αλκη;?πατέρας (Παιδί, άλκης) Παιδί =νίκος Παιδί= Αλέξανδρος Ποια είναι τα αδέρφια?αδέρφια (Χ, Υ) X=νίκος Y=αλέξανδρος Να όμως η πρώτη γνωστή παγίδα της Prolog.Αν τώρα ρωτήσουμε :?αδέρφια(αλέξανδρος, Χ) =όχι η Prolog θα μας πληροφορήσει ότι δεν βρήκε κανένα Χ που να εκπληρώνει αυτή τη σχέση. Πράγματι, στο πρόγραμμά μας είχαμε γράψει αδέλφια(νίκος, αλέξανδρος). 17

21 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG Όταν η Prolog προσπαθήσει να ενοποιήσει την παραπάνω ερώτηση, θα αποτύχει. Για την Prolog, το γεγονός ότι ο Νίκος είναι ο αδελφός του Αλέξανδρου δεν είναι το ίδιο πράγμα με το γεγονός ότι ο Αλέξανδρος είναι αδελφός του Νίκου. Το ίδιο πρόβλημα θα προκύψει όταν ρωτήσουμε?αδέλφια(άλκης, Υ). όπου και πάλι η Prolog δεν θα βρει καμία λύση. Δεν υπάρχει, δηλαδή, στη Prolog καμία πληροφορία που να εξηγεί ότι η αδελφική σχέση είναι συμμετρική. Για την ώρα, η μόνη λύση είναι να προσθέσουμε τα δύο αυτά γεγονότα αδέλφια(άλκης, δανάη). αδέλφια(αλέξανδρος, νίκος). Σ' αυτό το σημείο πρέπει ν' αναρωτηθούμε αν είναι πράγματι ανάγκη vα προγραμματίσουμε όλα αυτά τα γεγονότα. Όταν Π.χ. γράφουμε το γεγονός παππούς (νίκος, μενέλαος). δεν θα ήταν πιο έξυπνο (και κομψό, από λογική άποψη) να υποδείξουμε στη' Prolog γιατί ο Μενέλαος είναι παππούς του Νίκου; Ας προσπαθήσουμε να της το πούμε, λοιπόν: «Ο μενέλαος είναι ο παππούς του νίκου διότι η κόρη του μενέλαου είναι η μητέρα του νίκου.» «Ο παππούς του νίκου λέγεται μενέλαος διότι η μητέρα του νίκου είναι η λουίζα και ο πατέρας της λουίζας είναι ο μενέλαος.» Άρα: παππούς (νίκος, μενέλαος) μητέρα (νίκος, λουίζα) πατέρας (λουίζας, μενέλαος) Αυτό, όμως, ισχύει για όλες τις οικογένειες. Πράγματι, σε κάθε οικογένεια,ο πατέρας της μητέρας κάποιου είναι και ο παππούς του τελευταίου (η Prolog, αν και εξελιγμένη γλώσσα, δεν ασχολείται με τα σύγχρονα επιτεύγματα της τεχνητής γονιμοποίησης). Θα μπορούσαμε, δηλαδή, να γράψουμε αυτό τον κανόνα, αντικαθιστώντας με μεταβλητέ ς τα συγκεκριμένα ονόματα και να γράψουμε. Π.χ. αντί νίκος Ν, αντί λουίζα Λ και αντί μενέλαος Μ. Στη θέση της λέξης διότι θα μπορούσαμε να βάλουμε το οποιοδήποτε "συνώνυμό" του όταν, εάν κ.λπ. Έτσι, θα είχαμε: παππούς(ν, Μ) όταν μητέρα(ν, Λ) και πατέρας(λ, Μ). 18

22 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG Μ' άλλα λόγια, ο παππούς του Ν λέγεται Μ όταν (ή διότι, ή εάν) η μητέρα του Ν είναι η Λ και ο πατέρας της. Λ είναι ο Μ. Αντί των τριών συνωνύμων όταν, διότι, εάν), στη γλώσσα προγραμματισμού Prolog θα χρησιμοποιήσουμε ένα και μόνο συμβολισμό το :- Όσο για το και, θα το αντικαταστήσουμε απλώς με το γνωστό κόμμα,. Άρα το παραπάνω,που είναι και ο πρώτος κανόνας, γραφτεί στην πραγματικότητα: παππούς(ν, Μ) :- μητέρα(ν, Λ), πατέρας(λ, Μ). Οι κανόνες, όπως και τα γεγονότα, τελειώνουν πάντα με μία τελεία. Με τον ίδιο τρόπο ανακαλύπτουμε ένα σωρό άλλους "οικογενειακούς" κανόνες: γιαγιά(χ, γ) ; πατέρας(χ, Ζ), μητέρα(ζ, Υ). Μ' άλλα λόγια, «η γιαγιά ενός Χ είναι η Υ όταν αυτός ο Χ έχει έναν πατέρα λένε Ζ και η μητέρα αυτού του τελευταίου ονομάζεται Υ». 'Ένας άλλος κανόνας θα ήταν Π.χ. γιαγιά(ενός, Γ) :- μητέρα(ενός, Μ), μητέρα(μ, Ρ). Χρησιμοποιώντας έναν κανόνα,λύνουμε και το πρόβλημα που προέκυψε με το κατηγόρημα αδέρφια.δυο άτομα Χ και Υ είναι αδέρφια (μη ετεροθαλή ), όταν έχουν την ίδια μητέρα και τον ίδιο πατέρα.αυτός ο κανόνας θα εκφραζόταν στην Prolog : αδέρφια( Χ,Υ):- πατέρας (Χ, Ζ), πατέρας(χ, Μ), μητέρα (Χ, Μ), μητέρα (Υ, Μ). Εκφράσαμε το γεγονός ότι πρέπει να έχουν τον ίδιο πατέρα, χρησιμοποιώντας την ίδια μεταβλητή Ζ. Το ίδιο κάναμε και για την μητέρα, χρησιμοποιώντας τη μεταβλητή Μ. Με λίγη παρατηρητικότητα, επαληθεύουμε ότι ο κανόνας αδέλφια έγινε τώρα συμμετρικός. Αν, δηλαδή, ανταλλάξουμε το Χ με το Υ, ο κανόνας παραμένει ο ίδιος, δεδομένου ότι το όνομα των μεταβλητών δεν παίζει κανένα ρόλο στην Prolog. Λύσαμε έτσι το πρόβλημα της συμμετρικότητας για το συγκεκριμένο κατηγόρημα, το οποίο αντιμετωπίζαμε,όταν χρησιμοποιούσαμε μόνο γεγονότα. (Στην πραγματικότητα, ο ορισμός αυτός της αδελφικής 19

23 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG σχέσης έχει ένα μειονέκτημα καθότι δεν αποκλείει τη δυνατότητα ο Χ να είναι ίδιος με τον Υ, να είναι δηλαδή ο αδελφός τού εαυτού του! Το μειονέκτημα αυτό θα αρθεί όταν θα εξετάσουμε την άρνηση). Χάρη στους κανόνες, αποφύγαμε επίσης να γράψουμε με λεπτομέρειες ποιος είναι ο παππούς του καθενός, ποια είναι η γιαγιά, ποια είναι τ' αδέλφια κ.λ.π, Οι κανόνες που παρουσιάστηκαν έχουν γενική μορφή και ισχύουν (ευτυχώς) και για πιο...γόνιμες οικογένειες. Παρατηρούμε ότι εκφράσαμε κάθε κανόνα, συνδυάζοντας ένα σύνολο από σχέσεις. Το πρώτο σκέλος ενός κανόνα, η σχέση δηλαδή που προηγείται του :-, ονομάζεται αριστερό σκέλος. Το αριστερό σκέλος ενός κανόνα,prolog αποτελείται πάντα από μία και μοναδική σχέση. Μετά από το ':-' ( πού σημαίνει όταν) συναντούμε το δεξιό σκέλος του κανόνα. Το δεξιό σκέλος αποτελείται πάντα από μία ή περισσότερες σχέσεις, συνεζευγμένες μεταξύ τους με το σύμβολο, (που σημαίνει και) Πώς ερμηνεύονται οι κανόνες Όταν γράφουμε έναν κανόνα είναι σαν να δηλώνουμε στην Prolog ορισμένες πληροφορίες-συνθήκες. Πότε π.χ. ο Χ είναι ο παππούς του Υ, ποια είναι η γιαγιά του Χ κ. τ.λ Το ίδιο κάναμε όταν δηλώναμε ορισμένα μεμονωμένα γεγονότα, όπως ότι ο πατέρας της Λουίζας είναι ο Μενέλαος, ότι το μήλο είναι φρούτο κ. ο. κ Σε γενική μορφή βλέπουμε,λοιπόν,ότι ένα πρόγραμμα Prolog αποτελείται από δηλώσεις, είτε πρόκειται για γεγονότα είτε για κανόνες. Η άποψη ότι η Prolog μπορεί να ειδωθεί σαν ένα σύνολο δηλώσεων ονομάζεται δηλωτική ερμήνευση.η δηλωτική ερμηνεύση δεν είναι όμως και η μοναδική για να καταλάβουμε τι σημαίνει ένας κανόνας.ας δούμε, για παράδειγμα, τον εξής κανόνα : γιαγιά(χ, Υ) μητέρα (Χ, Ζ) μητέρα(ζ, Υ) Ο κανόνας αυτός μπορεί να ερμηνευθεί στα ελληνικά και μ' έναν άλλο τρόπο. Είναι σαν να λέμε στην Prolog: "Για να βρεις ποια είναι η γιαγιά του Χ, βρες τη μητέρα του Χ (την οποία θα ονομάσεις Ζ) και ύστερα βρες τη μητέρα της Ζ". Εξηγήσαμε στην Prolog τη διαδικασία που θα πρέπει να ακολουθήσει, αν ποτέ χρειαστεί να βρει τη γιαγιά μας (εννοούμε το όνομα της γιαγιάς μας, φυσικά). Περιγράψαμε, δηλαδή, μία διαδικαστική ερμήνευση του κανόνα μας. Το ίδιο θα συμβεί και αν ερμηνεύσουμε διαδικαστικά τα διάφορα γεγονότα: του προγράμματός μας. Όταν Π.χ. γράφουμε το γεγονός πατέρας(λουίζα, μενέλαος). είναι σαν να λέμε το εξής: "Αν ψάχνεις να βρεις ποιος είναι ο πατέρας της λουίζας, μην πηγαίνεις πιο μακριά: είναι ο μενέλαος". 20

24 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG Συμπεραίνουμε ότι ένα πρόγραμμα Prolog ερμηνεύεται κατά δύο τρόπους: δηλωτικά ή διαδικαστικά. Ένας προγραμματιστής, ο οποίος έχει συνηθίσει άλλες γλώσσες προγραμματισμού, θα προτιμήσει ίσως τη διαδικαστική ερμηνεία. Οι περισσότερες γλώσσες προγραμματισμού ερμηνεύονται κατά ένα διαδικαστικό τρόπο. Η Prolog είναι ίσως η μόνη γλώσσα που μπορεί να ερμηνευτεί και με τους δύο τρόπους. Η διαφοροποίηση δηλωτικός / διαδικαστικός ίσως φανεί λίγο λεπτή στον αναγνώστη. Ας προσπαθήσουμε να την εξηγήσουμε με έναν απλό τρόπο: Αν θέλουμε να δείξουμε σε κάποιον το δρόμο, θα του πούμε Π.χ. "Πάρε τον πρώτο δρόμο αριστερά και μετά από εκατό μέτρα θα περάσεις απέναντι και στα δεξιά θα δεις ένα περίπτερο. Προχώρα καμιά εκατοστή μέτρα και στρίψε πάλι αριστερά". Παρατηρούμε ότι η εξήγηση που δίνουμε είναι διαδικαστική. Εκφράζουμε, δηλαδή, τη διαδικασία των εντολών ("πάρε", "στρίψε", "προχώρα"), την οποία θα πρέπει να ακολουθήσει ο συνομιλητής μας. Αν θέλουμε τώρα να εξηγήσουμε σε κάποιο διαβάτη ποιο είναι το δημαρχείο, Θα του πούμε: "Το δημαρχείο είναι εκείνο το αναπαλαιωμένο κτήριο. Έχει μία σημαία στον τρίτο όροφο. Η είσοδός του είναι από το πίσω μέρος, απέναντι από το παντοπωλείο". Εδώ δεν του εξηγούμε πως θα πάει αλλά του δίνουμε, ορισμένες πληροφορίες, οι οποίες θα του είναι χρήσιμες για να εντοπίσει το δημαρχείο. Η εξήγηση μας είναι δηλωτική, γιατί δεν χρησιμοποιούμε εντολές (πάρε, στρίψε κ. τ. λ ) αλλά δηλώσεις (είναι, βρίσκεται κ. τ.λ ). Η ανθρώπινη γλώσσα λειτουργεί και με τους δυο αυτούς τρόπους : Στρίψε δεξιά.θα δεις ένα περίπτερο στο δεξί σου χέρι.εκεί θα πάρεις το πρώτο στενό και θα βρεις το δημαρχείο είναι το κτίριο με τη σημαία στον τρίτο όροφο Η Prolog πλησιάζει αυτό τον τρόπο σκέψης και μας επιτρέπει, με την ίδια σύνταξη, και τους δύο τρόπους έκφρασης. Είμαστε σε θέση, χάρη στην Prolog, να ερμηνεύσουμε το πρόγραμμά μας με δύο διαφορετικούς τρόπους. Με τις ίδιες εντολές η Prolog μας επιτρέπει δηλωτικό ή διαδικαστικό προγραμματισμό Εκτός.από τη δηλωτική/διαδικαστική ερμηνεία υπάρχει κι ένας άλλος τρόπος για να διαβαστεί ένας κανόνας στην Prolog. Ας πάρουμε για παράδειγμα τον εξής κανόνα: θνητός(χ) :- άνθρωπος(χ). Αυτός ο κανόνας ερμηνεύεται: "Κάποιος Χ είναι θνητός όταν είναι άνθρωπος". Η τελευταία πρόταση είναι ισοδύναμη με την: "Αν ο Χ είναι άνθρωπος τότε είναι θνητός" που αντιστοιχεί στο διάβασμα του κανόνα από τα δεξιά προς τα αριστερά ερμηνεύοντας το σύμβολο :- με τη λέξη τότε. Ας πάρουμε τέλος δύο κανόνες που υλοποιούν το κατηγόρημα παίρνω: παίρνω(αδιάβροχο) :- βρέχει παίρνω(αδιάβροχο) :- χιονίζει. Χρησιμοποιήσαμε δύο κανόνες για να εκφράσουμε ότι υπάρχουν δύο περιπτώσεις (λογικό ή) στις οποίες πρέπει να πάρουμε αδιάβροχο: όταν βρέχει ή 21

25 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG όταν χιονίζει. Η Prolog μας επιτρέπει να συγχωνεύσουμε τους δύο προηγούμενους κανόνες σ' έναν, χρησιμοποιώντας το σύμβολο του λογικού ή που είναι το ; (ελληνικό ερωτηματικό) : παίρνω(αδιάβροχο) :- (βρέχει; χιονίζει). Η συγχώνευση σ' αυτή την περίπτωση ήταν δυνατή καθότι τ' αριστερά σκέλη των δύο κανόνων είναι όμοια. Οι παρενθέσεις ορίζουν το πεδίο του λογικού ή. Θα έπρεπε όμως να υπογραμμίσουμε ότι η χρήση του λογικού ή στο δεξιό σκέλος του ίδιου κανόνα, όπως επίσης και το διάβασμα του κανόνα από τα δεξιά προς τ' αριστερά (με τη βοήθεια του αν τότε) αποπροσανατολίζουν τον αρχάριο προγραμματιστή και περιπλέκουν τη λογική του προγράμματος. Όσο μας αφορά, στη συνέχεια θα χρησιμοποιήσουμε εναλλάξ τη δηλωτική ερμηνεία (με τη βοήθεια του όταν) όταν θα αναλύουμε τη διατύπωση ενός κανόνα, και τη διαδικαστική ερμηνεία όταν θα εξετάζουμε τη διαδικασία απόδειξης της Prolog. Για να εκφράσουμε το λογικό ή θα χρησιμοποιούμε διαφορετικούς κανόνες Συνδυασμός γεγονότων και κανόνων Μπορούμε, φυσικά, να συνδυάσουμε κανόνες και γεγονότα για να εκφράσουμε πιο πολύπλοκα δεδομένα. Ας υποθέσουμε, για παράδειγμα, πως γνωρίζουμε ότι το μήλο, το αχλάδι και όλα τα εσπεριδοειδή είναι φρούτα. Η πρώτη λύση είναι να γράψουμε: φρούτο(μήλο). φρούτο(αχλάδι). φρούτο( εσπεριδοειδή). Μ' ένα τέτοιο πρόγραμμα θα είχαμε τον εξής διάλογο:? φρούτο(μήλο). =ναι? φρούτο(φρούτο). Φρούτο= μήλο Φρούτο= αχλάδι Φρούτο= εσπεριδοειδή?φρούτο(πορτοκάλι). =όχι Η Prolog νομίζει ότι τα εσπεριδοειδή είναι ένα μοναδικό είδος φρούτων και δεν μπορεί να συμπεράνει ότι το πορτοκάλι είναι και αυτό ένα φρούτο, γιατί δεν έχει καμιά πληροφορία γι' αυτό. 22

26 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG Η λύση είναι να χρησιμοποιήσουμε έναν κανόνα, ο οποίος θα υποδεικνύει στην Prolog ότι, εκτός των φρούτων μήλο και αχλάδι, ένα οποιοδήποτε αντικείμενο Χ μπορεί να θεωρηθεί φρούτο, όταν ανήκει στην κατηγορία των εσπεριδοειδών. Έτσι, έχουμε το πρόγραμμα: φρούτο(μήλο). φρούτο(αχλάδι). φρούτο(χ) :- εσπεριδοειδή (Χ). εσπεριδοειδή(πορτοκάλι). εσπεριδοειδή (μανταρίνι). Το πρόγραμμά μας υλοποιεί δύο κατηγορήματα : Το κατηγόρημα φρούτο και το κατηγόρημα εσπεριδοειδή. Το πρώτο αποτελείται από δύο γεγονότα και έναν κανόνα, ενώ το δεύτερο μόνο από δύο γεγονότα. Ποια είναι όμως η διαφορά από το να γράφαμε: φρούτο(μήλο). φρούτο(αχλάδι). φρούτο(πορτοκάλι). φρούτο(μανταρίνι). Η διαφορά είναι σημαντική. Εννοείται ότι, κατ' αρχήν, και στις δύο περιπτώσεις η Prolog θα ήξερε να μας απαντήσει σωστά για τα τέσσερα φρούτα. Στην πρώτη όμως περίπτωση, θα είχαμε τα εξής πλεονεκτήματα: α) Η Prolog είναι ικανή να μας απαντήσει και σε ερωτήσεις που αφορούν τα εσπεριδοειδή, πράγμα που δεν είναι δυνατό στη δεύτερη περίπτωση. β) Αν προσθέσουμε κι ένα άλλο γεγονός στα εσπεριδοειδή (Π.χ. λεμόνια), η Prolog θα έχει αυτομάτως μάθει ότι πρόκειται για φρούτο. Αυτό οφείλεται στη γενικότητα του κανόνα που θέσαμε. Τα δύο γεγονότα και ο κανόνας που αντιστοιχούν στο κατηγόρημα φρούτο μπορούν, φυσικά, να ερμηνευτούν και με διαδικαστικό τρόπο: "Αν προσπαθείς να αποδείξεις ότι ένα αντικείμενο είναι φρούτο, τότε θα πρέπει ν' αποδείξεις ότι είναι ή μήλο ή αχλάδι, εκτός κι αν καταφέρεις ν' αποδείξεις ότι ανήκει στα εσπεριδοειδή" Συμπερασματικά Ένα πρόγραμμα Prolog εκτός από γεγονότα μπορεί να περιλαμβάνει και κανόνες.οι κανόνες ορίζουν νέες σχέσεις με τη βοήθεια άλλων σχέσεων που έχουν ήδη ορισθεί. 23

27 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG Ένας κανόνας έχει τη μορφή : Α:-Β1,.,Βκ. Το Α ονομάζεται κεφαλή (head) του κανόνα και αποτελεί το αποτέλεσμα της εφαρμογής του κανόνα ενώ τα Β1,,Βκ αποτελούν το σώμα (body) Του κανόνα και περιλαμβάνει τις συνθήκες (κλήσεις) που πρέπει να ισχύουν για να αληθεύει η κεφαλή, η κεφαλή χωρίζεται από το σώμα με το συμβάν «:-» που διαβάζεται «αν».τα Α,Β1,,Βκ είναι ατομικοί τύποι. 2.3 Σύνθετοι Όροι Όπως είδαμε μέχρι τώρα τα ορίσματα ενός κατηγορήματος μπορεί να είναι άτομα, αριθμοί ή μεταβλητές. Τα άτομα, οι αριθμοί και οι μεταβλητές ονομάζονται απλοί όροι (simple terms). Εκτός από τους απλούς όρους είναι δυνατόν στην Prolog να συνδυάσουμε σχετικές μεταξύ τους πληροφορίες και να κατασκευάσουμε πιο πολύπλοκες συντακτικές δομές. Οι δομές αυτές ονομάζονται σύνθετοι όροι (compound terms) και έχουν τη μορφή: φ(η,, τκ ) όπου το φ ονομάζεται συναρτησιακό σύμβολο (functor) τάξης κ. Τα ορίσματα τ1,..,τκ είναι και αυτά απλοί ή σύνθετοι όροι Οι απλοί και οι σύνθετοι όροι ονομάζονται απλά όροι (terms). Οι σύνθετοι όροι βοηθούν στην οργάνωση των δεδομένων σε ένα πρόγραμμα γιατί επιτρέπουν να χειριστούμε σαν μια απλή οντότητα μια ομάδα από σχετικές μεταξύ τους πληροφορίες. Ας δούμε τώρα ένα παράδειγμα χρήσης συνθέτων όρων. Ζητάμε να κωδικοποιήσουμε σε ένα πρόγραμμα τον παρακάτω πίνακα που περιέχει μισθολογικά στοιχεία των υπαλλήλων μιας εταιρείας. Διαλέγουμε να κωδικοποιήσουμε κάθε γραμμή του πίνακα με ένα γεγονός της μορφής: στοιχεία _ υπαλλήλου ( όνομα( όνομα( Όνομα),επώνυμο( Επώνυμο), πατρώνυμο( Πατρών ) ),. διεύθυνση( οδός( Οδός), αριθμός( Αριθμός), πόλη(πόλη),τκ(τκ), τηλ (Τηλ) ), μισθός( βασικός( Βασικός), κρατήσεις(κρατήσεις), επιδόματα( Επιδόματα) ) ). 24

28 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG Το πρόγραμμα είναι: ΟΝΟΜΑΤΕΠΩΝΥΜΟ ΔΙΕΥΘΥΝΣΗ ΜΙΣΘΟΣ Όνομα Επώνυμο Πατρών. Οδός Αριθμ Πόλη Τ.Κ Τηλέφωνο Βασικός Κρατ(%) Επίδ(%) ό Νίκος Νικολάου Μηνάς Ερμού 33 Αθήνα Γιώργος Γεωργίου Νίκος Φωκά 29 Αθήνα Αντώνης Αντωνίου Πέτρας Ρήγα 15 Πάτρα στοιχεία _ υπαλλήλου ( όνομα(όνομα( νίκος),επώνυμο(νικολάου), πατρώνυμο(μηνάς) ), διεύθυνση ( οδός( ερμού), αριθμός( 33 ), πόλη( αθήνα), τκ( 12345), τηλ( ), μισθός( βασικός( 55000), κρατήσεις(20), επιδόματα( 35 ) ) ). στοιχεία _ υπαλλήλου ( όνομα( όνομα( γιώργος), επώνυμο( γεωργίου), πατρώνυμο( νίκος) ), διεύθυνση( οδός( Φωκά),αριθμός( 29), πόλη( αθήνα), τκ( 34231), τηλ( ) ), μισθός( βασικός( 59500),κρατήσεις( 25), επιδόματα( 38 ) ) ). στοιχεία _ υπαλλήλου ( όνομα( όνομα( αντώνης). επώνυμο( αντωνίου), πατρώνυμο( πέτρος) ), διεύθυνση ( οδός( ρήγα),αριθμός( 15), πόλη( πάτρα), τκ( ), τηλ( ) ), μισθός( βασικός ( 65000),κρατήσεις ( 19), επιδόματα( 40 ) ) ). Με βάση το πρόγραμμα αυτό η ερώτηση "Ποια είναι τα επώνυμα των υπαλλήλων που μένουν στην Αθήνα;" διατυπώνεται:? στοιχεία _ υπαλλήλου ( όνομα(_,επώνυμο( Επών ),_), διεύθυνση (_,_πόλη( αθήνα)_,_),_). ενώ η ερώτηση "Ποια είναι τα τηλέφωνα των υπαλλήλων που μένουν στην Αθήνα;" διατυπώνεται:? στοιχεία _ υπαλλήλου (_.διεύθυνση (_,_πόλη( αθήνα),_,τηλ(τ) ),_). 25

29 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG Ακόμη, η ερώτηση "Ποια είναι τα στοιχεία της διεύθυνσης του υπαλλήλου με επώνυμο Γεωργίου;" διατυπώνεται σε Prolog? στοιχεία _ υπαλλήλου ( όνομα(_,επώνυμο( γεωργίου ),_),Δ,_). Η απάντηση σ' αυτή την ερώτηση δίνει σαν τιμή της μεταβλητής Δ το σύνθετο όρο διεύθυνση(οδός(φωκά), αριθμός(29), πόλη(αθήνα), τκ(34231), τηλ( )). Ένας σύνθετος όρος μπορεί να παρασταθεί σχηματικά με ένα δέντρο. Οι κόμβοι του δέντρου αυτού είναι τα συναρτησιακά σύμβολα του σύνθετου όρου ενώ τα παιδιά του κάθε κόμβου είναι οι υποόροι που περιλαμβάνει ο σύνθετος όρος. 2.4 ΑΝΤΙΚΕΙΜΕΝΑ ΤΗΣ PROLOG Στις προηγούμενες ενότητες είδαμε ότι ένα πρόγραμμά Prolog αποτελείται από γεγονότα και κανόνες, δηλαδή, σε τελευταία ανάλυση, από σχέσεις. Μια σχέση είναι ένα κατηγόρημα,το οποίο συνδέει ένα σύνολο αντικειμένων τα οποία ονομάσαμε και όρους του κατηγορήματος π.χ. η σχέση αγαπάει(νίκος, σοφία). αποτελείται από το κατηγόρημα αγαπάει και συνδέει δύο αντικείμενα νίκος και σοφία, που είναι, στη συγκεκριμένη περίπτωση, σταθερές. Τα αντικείμενα που μπορούν να παίξουν το ρόλο παραμέτρων μιας σχέσης είναι: οι σταθερές, οι μεταβλητές. Σε μια πρώτη φάση θα προσπαθήσουμε να εξετάσουμε τι εννοούμε λέγοντας σταθερά και τι μεταβλητή, καθώς και πώς τις γράφουμε στην Prolog. Τα αντικείμενα μίας γλώσσας μπορούμε να τα διαχειριστούμε μέσω των εντολών της. Έτσι, Π.χ., η Basic επεξεργάζεται (μεταξύ άλλων) strings, η Pascal πίνακες, η LISP λίστες κλπ. Για να γίνει αυτό, κάθε γλώσσα διαθέτει προκαθορισμένες εντολές (LΕΤ, WHILE, CDR κλπ), με τη βοήθεια των οποίων ο προγραμματιστής θα υλοποιήσει τον αλγόριθμο. Στην Prolog θα μιλήσουμε για προκαθορισμένα (προσηλωμένα, προκατασκευασμένα) κατηγορήματα, δηλαδή για προκαθορισμένες σχέσεις. Τα προκαθορισμένα κατηγορήματα θα μπορούσαμε να τα ονομάσουμε και εντολές, στο βαθμό που ανήκουν στο στάνταρ λεξιλόγιο της Prolog. Έχουν, δηλαδή, υλοποιηθεί εκ των προτέρων από την εταιρία που ανέπτυξε τη διάλε- 26

30 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG κτο. Η χρήση των προκαθορισμένων κατηγορημάτων γίνεται συνήθως για δύο λόγους (που λίγο-πολύ, ισχύουν σε όλες τις γλώσσες προγραμματισμού): Η χρήση τους είναι συχνή και κοινή σε πολλές εφαρμογές (π.χ. εντολές εισόδου/εξόδου). Η υλοποίησή τους απαιτεί πληροφορίες που αφορούν την εσωτερική δομή της γλώσσας ή του υπολογιστή. Πλεονέκτημα των προκαθορισμένων εντολών είναι ότι βελτιώνουν ένα πρόγραμμα, προσφέροντας του τυποποιημένες και ταχύτερες (στο βαθμό που η υλοποίηση τους έγινε από κάποιον έμπειρο τεχνικό της εταιρίας) λειτουργίες. Όσο πιο πολλές προκαθορισμένες λειτουργίες προσφέρονται στον προγραμματιστή, τόσο πιο ισχυρά και ευέλικτα θα είναι τα προγράμματά του. Υπάρχει όμως και η άλλη όψη του νομίσματος. Η πληθώρα των προκαθορισμένων εντολών δυσχεραίνει συχνά το πέρασμα του πηγαίου κώδικα σ' ένα διαφορετικό υπολογιστή, που χρησιμοποιεί διάλεκτο της γλώσσας, η οποία δεν διαθέτει αναγκαστικά το ίδιο σύνολο εντολών. Τα προκαθορισμένα κατηγορήματα που θέτει στη διάθεσή μας η Prolog, για να διαχειριζόμαστε αντικείμενα της (σταθερές και μεταβλητές), όπως Π.χ. να κάνουμε μία αριθμητική πράξη, να εξετάζουμε την κατάσταση μίας μεταβλητής κλπ. Η ιδιαιτερότητα της Prolog, όμως, μας επιβάλλει να παρουσιάσουμε πιο αναλυτικά τις ιδιότητες και τις ιδιομορφίες των προκαθορισμένων κατηγορημάτων της ΟΙ ΣΤΑΘΕΡΕΣ Οι σταθερές εκφράζουν ένα συγκεκριμένο αντικείμενο. Οι σταθερές χωρίζουν σε δυο τάξεις : Στα άτομα και στους ακεραίους. Ένα άτομο, αρχίζει πάντα με μικρό γράμμα και δεν περιλαμβάνει στο εσωτερικό του κανέναν ειδικό χαρακτήρα(όπως το κενό ή οι μη-αλφαριθμητικοί χαρακτήρες). Χρησιμοποιώντας όμως τα απλά εισαγωγικά, είμαστε σε θέση να χρησιμοποιήσουμε ότι είδους χαρακτήρα επιθυμούμε στο εσωτερικό ενός ατόμου. Επίσης επιτρέπεται η χρήση του χαρακτήρα '_' (underscore) στο εσωτερικό ενός ατόμου. Ας δούμε μερικά παραδείγματα ατόμων : μαρία πέτρος_ και _ μαρία γιάννης α ήρθε σήμερα α173 ένα_ σπίτι 27

31 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG και μερικά παραδείγματα μη-ατόμων: 2034ih δεν αρχίζει από γράμμα α-β υπάρχει το '-' ενδιάμεσα Πέτρος από κεφαλαίο (είναι μεταβλητή) Όσο για τη δεύτερη κατηγορία σταθερών, που είναι οι ακέραιοι, έχουμε ίδιο ορισμό με αυτόν που βρίσκουμε στις περισσότερες γλώσσες προγραμματισμού: Ο ή 7 ή 999 Υπάρχουν μερικές Prolog που μπορούν να διαχειριστούν και αρνητικούς ακέραιους, καθώς και πραγματικούς αριθμούς. Αυτό εξαρτάται από τον υπολογιστή και την έκδοση της Prolog που έχετε στη διάθεσή σας. Η Prolog διαχειρίζεται επίσης και χαρακτήρες αλλά τους αντιμετωπίζει συνήθως σαν ASCII κώδικες (μικροί ακέραιοι) Οι μεταβλητές Οι μεταβλητές παίζουν το ρόλο των άδειων δοχείων που μπορούν να γεμίσουν και να ξαναδειάσουν κατά τη διάρκεια της εκτέλεσης ενός προγράμματος Prolog. Για να συμβολίσουμε ότι ένα αντικείμενο είναι μεταβλητή στην Prolog, αρκεί το πρώτο γράμμα του να είναι κεφαλαίο ή ο χαρακτήρας '_'. χ Πέτρος Ποιος Γιατί Α _Β _ αβγ _43 Μια ενδιαφέρουσα περίπτωση μεταβλητής είναι η ανώνυμη μεταβλητή. Χρησιμοποιούμε την ανώνυμη μεταβλητή για να εκφράσου με στην Prolog ότι, σ' ένα συγκεκριμένο σημείο της σχέσης; δεν μας ενδιαφέρει με τι θα γίνει η ενοποίηση, δεδομένου ότι δεν πρόκειται να τη χρησιμοποιήσουμε στη συνέχεια. Ας δούμε ένα συγκεκριμένο παράδειγμα. Έστω το ακόλουθο πρόγραμμα: γυναικά (νίκος, σοφία) γυναίκα( δημήτρης, ελένη ) γυναίκα (αλέξης, νεφέλη) γυναίκα (αλέξανδρος, δανάη) πλούσια( ελένη) πλούσια(δανάη) 28

32 ΕΝΟΤΗΤΑ 2 - Η ΣΥΝΤΑΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗΝ PROLOG πλούσιος( Χ):- γυναίκα (Χ, Υ ), πλούσια(υ). Ο τελευταίος κανόνας εκφράζει την πληροφορία ότι κάποιος είναι πλούσιος, όταν και η γυναίκα του είναι πλούσια. Με αυτό το πρόγραμμα έχουμε τον εξής διάλογο:? γυναικά(δημήτρης, Ποια). Ποια =ελένη? πλούσιος(μίδας). Μίδας= δημήτρης Μίδας= αλέξανδρος 2.5 ΕΝΟΠΟΙΗΣΗ-ΤΑΥΤΟΠΟΙΗΣΗ Ας προσπαθήσουμε, τώρα, να εκφράσουμε έναν κανόνα που να μας υποδεικνύει πότε κάποιος είναι παντρεμένος: παντρεμένος(χ) :- γυναικά(χ, Υ). με την έννοια ότι κάποιος είναι παντρεμένος, όταν έχει μια σύζυγο. Ας προσπαθήσουμε, τώρα, να συγκρίνουμε τη μεταβλητή Υ του κανόνα πλούσιας και τη μεταβλητή Υ του κανόνα παντρεμένος. Η πρώτη Υ εμφανίζεται δύο φορές, στο βαθμό που, αν βρούμε τη σύζυγο του Χ, πρέπει επίσης να επαληθεύσουμε στη συνέχεια ότι η ίδια Υ είναι πλούσια. Αντίθετα, στον κανόνα παντρεμένος, η Υ εμφανίζεται μόνο και μόνο για να εκφράσου με ότι δεν μας ενδιαφέρει ποια θα είναι η γυναίκα του και ότι δεν πρόκειται να χρησιμοποιήσουμε τη σταθερά, με την οποία δεσμεύτηκε, στη συνέχεια του κανόνα. Αυτή είναι η κλασική περίπτωση της ανώνυμης μεταβλητής, που συμβολίζεται με το '_' μόνο του. Έτσι, ο τελευταίος κανόνας θα γραφτεί σωστότερα: παντρεμένος(χ) :- γυναικά(χ, - ). Αυτό, φυσικά, δεν είναι αναγκαίο αν και μερικές Prolog εδώ θα παραγάγουν μήνυμα προειδοποίησης, (Warning). Πρέπει, όμως, να καταλάβουμε ότι, χρησιμοποιώντας ανώνυμες μεταβλητές όπου μπορούμε, διευκολύνουμε αισθητά τη διαδικασία ενοποίησης της Prolog. Αν στην προκειμένη περίπτωση είχαμε χρησιμοποιήσει μια κλασική επώνυμη μεταβλητή Υ στον κανόνα και ρωτούσαμε:? παντρεμένος(δημήτρης). 29

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

Διαβάστε περισσότερα

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

Διαβάστε περισσότερα

Κεφάλαιο 1. Εισαγωγή

Κεφάλαιο 1. Εισαγωγή Κεφάλαιο 1 Εισαγωγή Η λέξη Prolog προκύπτει ως συντομογραφία από τις γαλλικές λέξεις «PROgrammation en LOGique» ή κατ αντιστοιχία στην Αγγλική «PROgramming in LOGic» που σημαίνει «προγραμματισμός σε λογική».

Διαβάστε περισσότερα

Κεφάλαιο 2 Λογικός προγραμματισμός Υπολογισμός με λογική

Κεφάλαιο 2 Λογικός προγραμματισμός Υπολογισμός με λογική Κεφάλαιο 2 Λογικός προγραμματισμός Υπολογισμός με λογική Σύνοψη Το κεφάλαιο αυτό χωρίζεται σε δύο ενότητες. Στην πρώτη ενότητα επιχειρείται μια ιστορική αναδρομή στη λογική και τον λογικό προγραμματισμό,

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

Διαβάστε περισσότερα

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

Διαβάστε περισσότερα

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός 7 Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός Σχεσιακή Άλγεβρα H Σχεσιακή Άλγεβρα (relational algebra) ορίζει ένα σύνολο πράξεων που εφαρμόζονται σε μία ή περισσότερες σχέσεις

Διαβάστε περισσότερα

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός

Διαβάστε περισσότερα

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού. Κεφάλαιο 6 6.1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία σημαντικά στάδια : Σον ακριβή προσδιορισμό του προβλήματος Σην ανάπτυξη του αντίστοιχου αλγορίθμου

Διαβάστε περισσότερα

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

Διαβάστε περισσότερα

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 6ο Εισαγωγή στον Προγραµµατισµό Μέρος Πρώτο (6.1, 6.2 και 6.3) Α. Ερωτήσεις Σωστού Λάθους 1. Η γλώσσα µηχανής είναι µία γλώσσα υψηλού επιπέδου.

Διαβάστε περισσότερα

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το Σηµαντικά σηµεία κεφαλαίου Τα τρία στάδια επίλυσης ενός προβλήµατος: Ακριβής προσδιορισµό του προβλήµατος Ανάπτυξη του αντίστοιχου αλγορίθµου. ιατύπωση του αλγορίθµου σε κατανοητή µορφή από τον υπολογιστή.

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΣΚΗΣΕΙΣ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΡΩΤΗΣΕΙΣ ΣΩΣΤΟ ΛΑΘΟΣ Σημειώστε αν είναι σωστή ή

Διαβάστε περισσότερα

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων Γιάννης Λιαπέρδος TEI Πελοποννήσου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής ΤΕ Η έννοια του συνδυαστικού

Διαβάστε περισσότερα

Ανδρέας Παπαζώης. Τμ. Διοίκησης Επιχειρήσεων

Ανδρέας Παπαζώης. Τμ. Διοίκησης Επιχειρήσεων Ανδρέας Παπαζώης Τμ. Διοίκησης Επιχειρήσεων Περιεχόμενα Εργ. Μαθήματος Εισαγωγή στην Τεχνητή Νοημοσύνη και τα Ευφυή Συστήματα Γνώση και αναπαράσταση γνώσης Παραδείγματα μετατροπής φυσικής γλώσσας 2/14

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1 ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 03/01/09 Χαράλαμπος Τζόκας 1 Πρόγραμμα - Προγραμματισμός Πρόγραμμα: Σύνολο εντολών που πρέπει να δοθούν στον Υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος της επίλυσης

Διαβάστε περισσότερα

ΗΥ180: Λογική Διδάσκων: Δημήτρης Πλεξουσάκης. Φροντιστήριο 8 Επίλυση για Horn Clauses Λογικός Προγραμματισμός Τετάρτη 9 Μαΐου 2012

ΗΥ180: Λογική Διδάσκων: Δημήτρης Πλεξουσάκης. Φροντιστήριο 8 Επίλυση για Horn Clauses Λογικός Προγραμματισμός Τετάρτη 9 Μαΐου 2012 ΗΥ180: Λογική Διδάσκων: Δημήτρης Πλεξουσάκης Φροντιστήριο 8 Επίλυση για Horn Clauses Λογικός Προγραμματισμός Τετάρτη 9 Μαΐου 2012 Πληρότητα της μεθόδου επίλυσης Λήμμα: Αν κάθε μέλος ενός συνόλου όρων περιέχει

Διαβάστε περισσότερα

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

Διαβάστε περισσότερα

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ ) Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ. 147 159) Για τις γλώσσες προγραμματισμού πρέπει να έχουμε υπόψη ότι: Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό, δίνοντας ιδιαίτερη

Διαβάστε περισσότερα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Ενότητες βιβλίου: 6.4, 6.7 Ώρες διδασκαλίας: 1 Τεχνικές σχεδίασης προγραμμάτων Στο βιβλίο γίνεται αναφορά σε μία τεχνική για την ανάπτυξη

Διαβάστε περισσότερα

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY Mία γλώσσα προγραμματισμού συνίσταται από ένα περιορισμένο υποσύνολο της αγγλικής γλώσσας και το οποίο αποτελείται από εκφράσεις σαφώς ορισμένες, χωρίς παρερμηνεία.

Διαβάστε περισσότερα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Μάριος Αραποστάθης Καθηγητής πληροφορικής Βαρβάκειου Λύκειου http://users.sch.gr/mariosarapostathis 6.1 Η έννοια του

Διαβάστε περισσότερα

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Ενότητα 2 : Ζωγραφίζοντας με το ΒΥΟΒ -1- Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα α. Θέση και προσανατολισμός της μορφής Η θέση της κάθε μορφής στο σκηνικό προσδιορίζεται

Διαβάστε περισσότερα

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών Κεφ. 2 Θεωρητική Επιστήμη Υπολογιστών 2.3.1.1 Έννοια προγράμματος Τι είναι πρόγραμμα και τι προγραμματισμός; Πρόγραμμα είναι το σύνολο εντολών που χρειάζεται

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης ΠΕΡΙΕΧΟΜΕΝΑ Εντολές επιλογής Εντολές επανάληψης Εισαγωγή Στο προηγούμενο κεφάλαιο αναπτύξαμε προγράμματα, τα οποία ήταν πολύ απλά και οι εντολές των οποίων εκτελούνται η μία μετά την άλλη. Αυτή η σειριακή

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Κεφάλαιο 6 «Εισαγωγή στον Προγραμματισμό» Στέφανος Ουγιάρογλου Διαφάνειες από υλικό του Χ. Μουρατίδη Προγραμματισμός Η/Υ Ο προγραμματισμός είναι η διατύπωση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Διδακτική της Πληροφορικής ΙΙ

Διδακτική της Πληροφορικής ΙΙ Διδακτική της Πληροφορικής ΙΙ Ομάδα Γ Βότσης Ευστάθιος Γιαζιτσής Παντελής Σπαής Αλέξανδρος Τάτσης Γεώργιος Προβλήματα που αντιμετωπίζουν οι αρχάριοι προγραμματιστές Εισαγωγή Προβλήματα Δυσκολίες Διδακτικό

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 1: Εισαγωγή Ποιος είμαι εγώ! 2 Ναύπλιο, 4/1976-9/1993 Πάτρα, 9/1993-6/2004 Williamsburg, VA, USA, 7/2004-7/2006 Μυτιλήνη, 10/2006-2/2007 Βόλος, 2/2007 - H Υπεύθυνη των

Διαβάστε περισσότερα

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος Εισαγωγή στον προγραµµατισµό Η έννοια του προγράµµατος Ο προγραµµατισµός ασχολείται µε τη δηµιουργία του προγράµµατος, δηλαδή του συνόλου εντολών που πρέπει να δοθούν στον υπολογιστή ώστε να υλοποιηθεί

Διαβάστε περισσότερα

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

Περιεχόμενα 1 Πρωτοβάθμια Λογική Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων ) / 60

Περιεχόμενα 1 Πρωτοβάθμια Λογική Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων ) / 60 Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

Διαβάστε περισσότερα

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής)

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

Διαβάστε περισσότερα

Πληρότητα της μεθόδου επίλυσης

Πληρότητα της μεθόδου επίλυσης Πληρότητα της μεθόδου επίλυσης Λήμμα: Αν κάθε μέλος ενός συνόλου όρων περιέχει ένα αρνητικό γράμμα, τότε το σύνολο είναι ικανοποιήσιμο. Άρα για να είναι μη-ικανοποιήσιμο, θα πρέπει να περιέχει τουλάχιστον

Διαβάστε περισσότερα

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η 53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η ΠΑΓΚΡΑΤΙ: Φιλολάου & Εκφαντίδου 26 : 210/76.01.470 210/76.00.179 ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς

Διαβάστε περισσότερα

Σχέδια μαθημάτων για την δημιουργία συναρτήσεων υπολογισμού του ΜΚΔ και του ΕΚΠ στην MSWLogo

Σχέδια μαθημάτων για την δημιουργία συναρτήσεων υπολογισμού του ΜΚΔ και του ΕΚΠ στην MSWLogo Σχέδια μαθημάτων για την δημιουργία συναρτήσεων υπολογισμού του Μέγιστου Κοινού Διαιρέτη (ΜΚΔ) και του Ελάχιστου Κοινού Πολλαπλασίου (ΕΚΠ) δύο αριθμών, με την γλώσσα προγραμματισμού Logo Κογχυλάκης Σ.

Διαβάστε περισσότερα

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ 1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ Τάξη: Γ Μάθημα: Πληροφορική Εξεταστέα ύλη: Παρ11.1 & 11.2 Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών που περιγράφει τη διαδικασία

Διαβάστε περισσότερα

ΠΑΙΓΝΙΑ Παιχνίδια Γενική Θεώρηση μεγιστοποιήσει την πιθανότητά

ΠΑΙΓΝΙΑ Παιχνίδια Γενική Θεώρηση μεγιστοποιήσει την πιθανότητά ΠΑΙΓΝΙΑ Παιχνίδια Γενική Θεώρηση: Έστω ότι έχουμε τους παίκτες Χ και Υ. Ο κάθε παίκτης, σε κάθε κίνηση που κάνει, προσπαθεί να μεγιστοποιήσει την πιθανότητά του να κερδίσει. Ο Χ σε κάθε κίνηση που κάνει

Διαβάστε περισσότερα

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής:

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής: Αυτό που πρέπει να θυμόμαστε, για να μη στεναχωριόμαστε, είναι πως τόσο στις εξισώσεις, όσο και στις ανισώσεις 1ου βαθμού, που θέλουμε να λύσουμε, ακολουθούμε ακριβώς τα ίδια βήματα! Εκεί που πρεπει να

Διαβάστε περισσότερα

Από το Γυμνάσιο στο Λύκειο... 7. 3. Δειγματικός χώρος Ενδεχόμενα... 42 Εύρεση δειγματικού χώρου... 46

Από το Γυμνάσιο στο Λύκειο... 7. 3. Δειγματικός χώρος Ενδεχόμενα... 42 Εύρεση δειγματικού χώρου... 46 ΠEΡΙΕΧΟΜΕΝΑ Από το Γυμνάσιο στο Λύκειο................................................ 7 1. Το Λεξιλόγιο της Λογικής.............................................. 11. Σύνολα..............................................................

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Εισαγωγή ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Όπως για όλες τις επιστήμες, έτσι και για την επιστήμη της Πληροφορικής, ο τελικός στόχος της είναι η επίλυση προβλημάτων. Λύνονται όμως όλα τα προβλήματα;

Διαβάστε περισσότερα

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος Η έννοια του προβλήματος 1. Αναφέρετε μερικά από τα προβλήματα που συναντάτε στην καθημερινότητά σας. Απλά προβλήματα Ποιο δρόμο θα ακολουθήσω για να πάω στο σχολείο; Πως θα οργανώσω μια εκδρομή; Πως θα

Διαβάστε περισσότερα

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

Πρόβλημα είναι μια κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής. Κεφάλαιο 2 - Πρόβλημα 2.1.1. Η έννοια του προβλήματος Πρόβλημα είναι μια κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής. 2.1.2. Κατηγορίες προβλημάτων

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ - ΓΛΩΣΣΑ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ - ΓΛΩΣΣΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τεχνικές Σχεδίασης Αλγορίθμων Εισαγωγή στον Προγραμματισμό - ΓΛΩΣΣΑ Επιμέλεια: Ομάδα Διαγωνισμάτων από Το στέκι των πληροφορικών ο Θέμα 1 Α. α) Ποια είναι

Διαβάστε περισσότερα

Εισαγωγή στον προγραμματισμό

Εισαγωγή στον προγραμματισμό Ενότητες: Εισαγωγή στον προγραμματισμό Η έννοια του προγράμματος Ιστορική αναδρομή Φυσικές και τεχνητές γλώσσες Τεχνικές σχεδίασης προγραμμάτων Ιεραρχική Σχεδίαση Τμηματικός Προγραμματισμός Δομημένος προγραμματισμός

Διαβάστε περισσότερα

Αρχές Προγραμματισμού Η/Υ Μέθοδοι παρουσίασης του αλγόριθμου και Βασικές έννοιες

Αρχές Προγραμματισμού Η/Υ Μέθοδοι παρουσίασης του αλγόριθμου και Βασικές έννοιες Αρχές Προγραμματισμού Η/Υ Μέθοδοι παρουσίασης του αλγόριθμου και Βασικές έννοιες Βελώνης Γεώργιος Καθηγητής Πληροφορικής ΠΕ20 Περιεχόμενα Μέθοδοι Παρουσίασης του αλγόριθμου Εισαγωγή Φραστική μέθοδος Ψευδοκώδικας

Διαβάστε περισσότερα

ΗΥ Λογική. Διδάσκων: Δημήτρης Πλεξουσάκης Καθηγητής

ΗΥ Λογική. Διδάσκων: Δημήτρης Πλεξουσάκης Καθηγητής ΗΥ 180 - Λογική Διδάσκων: Καθηγητής E-mail: dp@csd.uoc.gr Ώρες διδασκαλίας: Δευτέρα, Τετάρτη 4-6 μμ, Αμφ. Β Ώρες φροντιστηρίου: Πέμπτη 4-6 μμ, Αμφ. Β Ώρες γραφείου: Δευτέρα, Τετάρτη 2-4 μμ, Κ.307 Web site:

Διαβάστε περισσότερα

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

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

Διαβάστε περισσότερα

HY118-Διακριτά Μαθηματικά

HY118-Διακριτά Μαθηματικά HY118-Διακριτά Μαθηματικά Πέμπτη, 15/02/2018 Το υλικό των διαφανειών έχει βασιστεί σε Αντώνης διαφάνειες Α. Αργυρός του Kees van e-mail: argyros@csd.uoc.gr Deemter, από το University of Aberdeen 15-Feb-18

Διαβάστε περισσότερα

Κεφ 2. Βασικές Έννοιες Αλγορίθμων

Κεφ 2. Βασικές Έννοιες Αλγορίθμων Κεφ 2. Βασικές Έννοιες Αλγορίθμων 2.7 Τι είναι οι μεταβλητές και τι οι σταθερές; ΑΠΑΝΤΗΣΗ Μεταβλητές: Μια μεταβλητή είναι μια θέση μνήμης του υπολογιστή με συγκεκριμένο όνομα, που χρησιμοποιείται για να

Διαβάστε περισσότερα

Π ρ ο γ ρ α μ μ α τ ι σ μ ό ς Β α σ ι κ έ ς έ ν ν ο ι ε ς Ι σ τ ο ρ ι κ ή α ν α δ ρ ο μ ή Η έννοια του προγράμματος Ιστορική αναδρομή

Π ρ ο γ ρ α μ μ α τ ι σ μ ό ς Β α σ ι κ έ ς έ ν ν ο ι ε ς Ι σ τ ο ρ ι κ ή α ν α δ ρ ο μ ή Η έννοια του προγράμματος Ιστορική αναδρομή Προγραμματισμός Βασικές έννοιες Ιστορική αναδρομή Η έννοια του προγράμματος Η περιγραφή της λύσης ενός προβλήματος, ως γνωστόν, γίνεται με τη βοήθεια ενός αλγορίθμου. Έτσι οι εντολές ενός προγράμματος

Διαβάστε περισσότερα

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

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή. Λίστες Τι είναι οι λίστες; Πολλές φορές στην καθημερινή μας ζωή, χωρίς να το συνειδητοποιούμε, χρησιμοποιούμε λίστες. Τέτοια παραδείγματα είναι η λίστα του super market η οποία είναι ένας κατάλογος αντικειμένων

Διαβάστε περισσότερα

Πληροφορική 2. Γλώσσες Προγραμματισμού

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Ενότητα 1: Εισαγωγή. Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Ενότητα 1: Εισαγωγή. Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Λογική Ενότητα 1: Εισαγωγή Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται στην άδεια χρήσης Creative Commons

Διαβάστε περισσότερα

6. Εισαγωγή στον προγραµµατισµό

6. Εισαγωγή στον προγραµµατισµό 6. Εισαγωγή στον προγραµµατισµό 6.1 Η έννοια του προγράµµατος. 6.2 Ιστορική αναδροµή. 6.2.1 Γλώσσες µηχανής. ΗΜ04-Θ1Α 1. Ένα πρόγραµµα σε γλώσσα µηχανής είναι µια ακολουθία δυαδικών ψηφίων. 5. Ένα πρόγραµµα

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Προγραµµατισµός Η/Υ Ο προγραµµατισµός είναι η διατύπωση του αλγορίθµου σε µορφή κατανοητή από τον Η/Υ ώστε να τον εκτελέσει («τρέξει» όπως λέµε στην ορολογία της

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΚΕΦΑΛΑΙΟ 10 Όπως είδαμε και σε προηγούμενο κεφάλαιο μια από τις βασικότερες τεχνικές στον Δομημένο Προγραμματισμό είναι ο Τμηματικός Προγραμματισμός. Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης

Διαβάστε περισσότερα

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

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή. ΑΕσΠΠ-Κεφ6. Εισαγωγή στον προγραμματισμό 1 ΣΩΣΤΟ ΛΑΘΟΣ 1. Οι γλώσσες προγραμματισμού αναπτυχθήκαν με σκοπό την επικοινωνία ανθρώπου μηχανής. 2. Αλγόριθμος = Πρόγραμμα + Δομές Δεδομένων 3. Ένα πρόγραμμα

Διαβάστε περισσότερα

Η ΑΕΠΠ IN A GLANCE! ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΟΛΥΜΕΝΗ

Η ΑΕΠΠ IN A GLANCE! ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΟΛΥΜΕΝΗ Η ΑΕΠΠ IN A GLANCE! Κατανομή μονάδων: 40 μονάδες το 1 ο Θέμα, από 20 τα υπόλοιπα τρία. Μην χαίρεστε όμως γιατί η «καθαρή» θεωρία περιορίζεται συνήθως- σε 5 ερωτήσεις σωστού ή λάθους και σε 1-2 ερωτήσεις

Διαβάστε περισσότερα

Κεφάλαιο 1 Διαδικαστικός και δηλωτικός προγραμματισμός

Κεφάλαιο 1 Διαδικαστικός και δηλωτικός προγραμματισμός Κεφάλαιο 1 Διαδικαστικός και δηλωτικός προγραμματισμός Σύνοψη Στο κεφάλαιο αυτό γίνεται συγκριτική παρουσίαση, κυρίως μέσω απλών παραδειγμάτων, του διαδικαστικού και του δηλωτικού προγραμματισμού, δύο

Διαβάστε περισσότερα

Εισαγωγή στις Αρχές της επιστήμης των ΗΥ

Εισαγωγή στις Αρχές της επιστήμης των ΗΥ Εισαγωγή στις Αρχές της επιστήμης των ΗΥ Ερωτήσεις και ασκήσεις για επανάληψη 1. Τι είναι πρόβλημα (σελ 14) 2. Ποιες είναι οι κατηγορίες προβλημάτων με βάση την επίλυση; Δώστε τον ορισμό για κάθε μια κατηγορία.

Διαβάστε περισσότερα

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΡΧΗ 1ης ΣΕΛΙ ΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΣΕΠΤΕΜΒΡΙΟΥ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 ΘΕΜΑ Α :

Διαβάστε περισσότερα

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός Δομές Ακολουθίας- Επιλογής - Επανάληψης Δομημένος Προγραμματισμός 1 Βασικές Έννοιες αλγορίθμων Σταθερές Μεταβλητές Εκφράσεις Πράξεις Εντολές 2 Βασικές Έννοιες Αλγορίθμων Σταθερά: Μια ποσότητα που έχει

Διαβάστε περισσότερα

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ Α) Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και δίπλα το γράμμα "Σ", αν είναι σωστή, ή το γράμμα "Λ", αν είναι λανθασμένη. (Μονάδες 25) 1. Ένα αδόμητο πρόβλημα είναι ταυτόχρονα και ανοικτό

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

Κεφάλαιο 5. Το Συμπτωτικό Πολυώνυμο

Κεφάλαιο 5. Το Συμπτωτικό Πολυώνυμο Κεφάλαιο 5. Το Συμπτωτικό Πολυώνυμο Σύνοψη Στο κεφάλαιο αυτό παρουσιάζεται η ιδέα του συμπτωτικού πολυωνύμου, του πολυωνύμου, δηλαδή, που είναι του μικρότερου δυνατού βαθμού και που, για συγκεκριμένες,

Διαβάστε περισσότερα

Μαθηματική Λογική και Απόδειξη

Μαθηματική Λογική και Απόδειξη Μαθηματική Λογική και Απόδειξη Σύντομο ιστορικό σημείωμα: Η πρώτη απόδειξη στην ιστορία των μαθηματικών, αποδίδεται στο Θαλή το Μιλήσιο (~600 π.χ.). Ο Θαλής απέδειξε, ότι η διάμετρος διαιρεί τον κύκλο

Διαβάστε περισσότερα

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr I ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ i e ΜΕΡΟΣ Ι ΟΡΙΣΜΟΣ - ΒΑΣΙΚΕΣ ΠΡΑΞΕΙΣ Α Ορισμός Ο ορισμός του συνόλου των Μιγαδικών αριθμών (C) βασίζεται στις εξής παραδοχές: Υπάρχει ένας αριθμός i για τον οποίο ισχύει i Το σύνολο

Διαβάστε περισσότερα

turnin Lab4.pro

turnin Lab4.pro ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΑΡΧΕΣ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΑΚΑΔ. ΕΤΟΣ: 2018-19 ΔΙΔΑΣΚΩΝ: Χ.ΝΟΜΙΚΟΣ 4η Σειρά Εργαστηριακών Ασκήσεων Οι εργαστηριακές ασκήσεις είναι

Διαβάστε περισσότερα

Μαθηματική Λογική και Λογικός Προγραμματισμός

Μαθηματική Λογική και Λογικός Προγραμματισμός Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων- Σημειώσεις έτους 2007-2008 Καθηγητής Γεώργιος Βούρος Μαθηματική Λογική και Λογικός Προγραμματισμός Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών

Διαβάστε περισσότερα

Περί της Ταξινόμησης των Ειδών

Περί της Ταξινόμησης των Ειδών Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Σχολή Θετικών Επιστημών Τμήμα Φυσικής 541 24 Θεσσαλονίκη Καθηγητής Γεώργιος Θεοδώρου Tel.: +30 2310998051, Ιστοσελίδα: http://users.auth.gr/theodoru Περί της Ταξινόμησης

Διαβάστε περισσότερα

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ 2.3.1.1. Παπαγιάννη Νάσια Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών ΕΜΠ 1 περιλαμβάνει: Η έννοια του προγράμματος Επίλυση προβλήματος 1. Ακριβή προσδιορισμό

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής ΘΕΜΑ 1 ο Α. Να χαρακτηρίσετε τις παρακάτω προτάσεις ως σωστές ή λανθασμένες. 1. Μια διαδικασία

Διαβάστε περισσότερα

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει

Διαβάστε περισσότερα

Βρέντζου Τίνα Φυσικός Μεταπτυχιακός τίτλος: «Σπουδές στην εκπαίδευση» ΜEd Email : stvrentzou@gmail.com

Βρέντζου Τίνα Φυσικός Μεταπτυχιακός τίτλος: «Σπουδές στην εκπαίδευση» ΜEd Email : stvrentzou@gmail.com Βρέντζου Τίνα Φυσικός Μεταπτυχιακός τίτλος: «Σπουδές στην εκπαίδευση» ΜEd Email : stvrentzou@gmail.com 1 1.Σύνολα Σύνολο είναι μια ολότητα από σαφώς καθορισμένα και διακεκριμένα αντικείμενα. Τα φωνήεντα

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ ΥΠΟΥΡΓΕΙΟ ΕΘΝΙΚΗΣ ΠΑΙΔΕΙΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ Κ Υ Κ Λ Ο Υ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Κ Α Ι Υ Π Η Ρ Ε Σ Ι Ω Ν Τ Ε Χ Ν Ο Λ Ο Γ Ι Κ Η

Διαβάστε περισσότερα

Κεφάλαιο 10. Υποπρογράμματα

Κεφάλαιο 10. Υποπρογράμματα Κεφάλαιο 10 Υποπρογράμματα 10.1 Γενικός διδακτικός σκοπός Ο γενικός σκοπός του κεφαλαίου είναι να καταστούν ικανοί οι μαθητές να χρησιμοποιούν υποπρογράμματα για τη δημιουργία συνθέτων προγραμμάτων. 194

Διαβάστε περισσότερα

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1 ΚΕΦΑΛΑΙΟ 7 ο ΠΡΟΓΡΑΜΜΑ : Το πρόγραμμα αποτελείται από μια σειρά οδηγιών, που ονομάζονται εντολές, για την εκτέλεση τέτοιου είδους πράξεων, καθώς επίσης και από ένα σύνολο πρόσθετων οδηγιών ελέγχου, που

Διαβάστε περισσότερα

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης;

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης; 10. Τι ονομάζουμε Ευκλείδεια διαίρεση και τέλεια διαίρεση; Όταν δοθούν δύο φυσικοί αριθμοί Δ και δ, τότε υπάρχουν δύο άλλοι φυσικοί αριθμοί π και υ, έτσι ώστε να ισχύει: Δ = δ π + υ. Ο αριθμός Δ λέγεται

Διαβάστε περισσότερα

Α. Ερωτήσεις Ανάπτυξης

Α. Ερωτήσεις Ανάπτυξης οµηµένος Προγραµµατισµός-Κεφάλαιο 7 Σελίδα 1 α ό 10 ΕΝΟΤΗΤΑ ΙΙΙ (ΠΡΟΓΡΑΜΜΑΤΑ) ΚΕΦΑΛΑΙΟ 7: Είδη, Τεχνικές και Περιβάλλοντα Προγραµµατισµού Α. Ερωτήσεις Ανάπτυξης 1. Τι ονοµάζουµε γλώσσα προγραµµατισµού;

Διαβάστε περισσότερα

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΑΡΧΗ 1ης ΣΕΛΙ ΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 ΘΕΜΑ Α : Α1. Να

Διαβάστε περισσότερα

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

Διαβάστε περισσότερα

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,

Διαβάστε περισσότερα

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η Μονοδιάστατοι Πίνακες Τι είναι ο πίνακας γενικά : Πίνακας είναι μια Στατική Δομή Δεδομένων. Δηλαδή συνεχόμενες θέσεις μνήμης, όπου το πλήθος των θέσεων είναι συγκεκριμένο. Στις θέσεις αυτές καταχωρούμε

Διαβάστε περισσότερα

Εισαγωγή στην Αριθμητική Ανάλυση

Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον

Διαβάστε περισσότερα

Κεφάλαιο 3: Εισαγωγή στους αλγορίθμους - διαγράμματα ροής

Κεφάλαιο 3: Εισαγωγή στους αλγορίθμους - διαγράμματα ροής Κεφάλαιο 3: Εισαγωγή στους αλγορίθμους - διαγράμματα ροής Αλγόριθμος (algorithm) λέγεται μία πεπερασμένη διαδικασία καλά ορισμένων βημάτων που ακολουθείται για τη λύση ενός προβλήματος. Το διάγραμμα ροής

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Δεύτερη Σειρά Ασκήσεων 22 Νοεμβρίου 2016 (χειρόγραφη και ηλεκτρονική παράδοση 9 Δεκεμβρίου) Άσκηση 1: Θεωρήστε τη γραμματική με κανόνες: Α B a A a c B B b A b

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2016-2017 Πάτρα 3/5/2017 Ονοματεπώνυμο:.. Α1. Να γράψετε στην κόλλα σας τον αριθμό

Διαβάστε περισσότερα

ΚΑΤΗΓΟΡΗΜΑΤΙΚΟΣ ΛΟΓΙΣΜΟΣ Ι

ΚΑΤΗΓΟΡΗΜΑΤΙΚΟΣ ΛΟΓΙΣΜΟΣ Ι ΚΑΤΗΓΟΡΗΜΑΤΙΚΟΣ ΛΟΓΙΣΜΟΣ Ι Για τον προτασιακό λογισμό παρουσιάσαμε την αποδεικτική θεωρία (natural deduction/λογικό συμπέρασμα) τη σύνταξη (ορίζεται με γραμματική χωρίς συμφραζόμενα και εκφράζεται με συντακτικά

Διαβάστε περισσότερα

Άξονας ανάπτυξης του µαθήµατος 3. Γενικός σκοπός του µαθήµατος. Το µάθηµα της Πληροφορικής στο Γυµνάσιο

Άξονας ανάπτυξης του µαθήµατος 3. Γενικός σκοπός του µαθήµατος. Το µάθηµα της Πληροφορικής στο Γυµνάσιο Το µάθηµα της Πληροφορικής στο Γυµνάσιο Χρήση του ελεύθερου λογισµικού "Γλωσσοµάθεια" για την διδασκαλία εννοιών αλγοριθµικής - προγραµµατισµού στη Γ' Φουστέρης Νικόλαος Μηχανικός Πληροφορικής Τ.Ε. Καθηγητής

Διαβάστε περισσότερα

6. 1 Η έννοια του προγράμματος

6. 1 Η έννοια του προγράμματος 6. 1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, τρία στάδια. 1.Τον ακριβή προσδιορισμό του προβλήματος. 2.Την ανάπτυξη του αντίστοιχου αλγορίθμου. 3.Τη διατύπωση

Διαβάστε περισσότερα

Μαθηματική Λογική και Λογικός Προγραμματισμός

Μαθηματική Λογική και Λογικός Προγραμματισμός Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων- Σημειώσεις έτους 2007-2008 Καθηγητής Γεώργιος Βούρος Μαθηματική Λογική και Λογικός Προγραμματισμός Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 ΙΣΤΟΡΙΚΑ Παρουσιάστηκε το 1970 από το Niklaus Wirth Προγενέστερη γλώσσα ήταν η Algol 60 Είναι δομημένη γλώσσα προγραμματισμού υψηλού

Διαβάστε περισσότερα