Η γλώσσα προγραµµατισµού Prolog Αλγόριθµοι αναζήτησης σε Prolog

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

Download "Η γλώσσα προγραµµατισµού Prolog Αλγόριθµοι αναζήτησης σε Prolog"

Transcript

1 Λογικός Προγραµµατισµός Η γλώσσα προγραµµατισµού Prolog Αλγόριθµοι αναζήτησης σε Prolog Προτάσεις Horn (1/2) Οι προτάσεις Horn ή Οριστικές Προτάσεις (Definite Clauses) αποτελούν ένα περιορισµένο υποσύνολο της λογικής πρώτης τάξης. Ειδικότερα, µια πρόταση Horn µπορεί να έχει τη µορφή: A1 A2... AN B ή όπως συνηθέστερα γράφεται: B A1 A2... AN ήακόµη: B A1 A2... AN Ηπρόταση B δηλώνει ότι η πρόταση Β είναι αληθής. εν µπορούν όλες οι βάσεις γνώσεις να µεταφραστούν σε προτάσεις Horn, λόγω της µη δυνατότητας ύπαρξης αρνητικών συµβόλων Γιάννης Ρεφανίδης 2

2 Προτάσεις Horn (2/2) Η µορφή που έχουν οι προτάσεις Horn έχει ως αποτέλεσµα ναµην είναι δυνατόν να αποδεικνύονται αρνητικές προτάσεις. Για το λόγο αυτό, οι ερωτήσεις που κάνουµε σεένασύστηµα προτάσεων Horn αφορούν την απόδειξη θετικών µόνο προτάσεων. Έτσι ένα σύστηµα προτάσεωνhorn δεν µπορεί ποτέ να πέσει σε αντίφαση, µε την έννοια ότι δεν µπορεί ποτέ να αποδείξει τις προτάσεις P και P ταυτόχρονα. «Καταχρηστικά» πολλές φορές θεωρούµε ότι η µη δυνατότητα απόδειξης της πρότασης P ισοδυναµεί µε την απόδειξη της πρότασης P. Γιάννης Ρεφανίδης 3 Λογικός προγραµµατισµός (1/2) Ο λογικός προγραµµατισµός αποτελεί την πιο διαδεδοµένη υλοποίηση της λογικής πρώτης τάξης µέσω της γλώσσας λογικού προγραµµατισµού Prolog. Ο λογικός προγραµµατισµός βασίζεται στις προτάσεις Horn. Η γλώσσα Prolog (όπως και η γλώσσα συναρτησιακού προγραµµατισµού LISP) βοηθά στη γρήγορη ανάπτυξη εφαρµογών τεχνητής νοηµοσύνης. Παρέχει: Ευκολία στο χειρισµό συµβόλων Ενσωµατωµένο µηχανισµό ταυτοποίησης/ενοποίησης Ενσωµατωµένο αλγόριθµο αναζήτησης πρώτα-κατά-βάθος Χρήσιµο link: Γιάννης Ρεφανίδης 4

3 Λογικός προγραµµατισµός (2/2) Οι προτάσεις στο λογικό προγραµµατισµό µπορούν να περιέχουν µεταβλητές, οι οποίες όµως θεωρούνται όλες καθολικά ποσοτικοποιηµένες. Πατέρας(x,y) Γονιός(x,y) Άρεν(x) Το σύµβολο του καθολικού ποσοδείκτη το παραλείπουµε. Υπάρχουν ενσωµατωµένες συναρτήσεις για αριθµητικές πράξεις. Υπάρχουν κατηγορήµατα διαδικαστικής υφής όπως π.χ. κατηγορήµατα εισόδου/εξόδου. Η στρατηγική αναζήτησης είναι πρώτα-κατά-βάθος. Έχει σηµασία η σειρά µε την οποία είναι γραµµένες οι προτάσεις στη βάση γνώσης. Ηαναζήτησηµπορεί να παγιδευθεί σε κλαδιά άπειρου βάθους. Γιάννης Ρεφανίδης 5 Σύνταξη (1/2) Τα ονόµατα των κατηγορηµάτων, των αντικειµένων και των συναρτησιακών όρων ξεκινούν µε πεζά γράµµατα. Τα ονόµατα των µεταβλητών ξεκινούν µε κεφαλαίο γράµµα. Κάθε πρόταση τερµατίζει µε τελεία. Γεγονότα (απλές προτάσεις) : άνθρωπος (σωκράτης). Κανόνες (σύνθετες προτάσεις): θνητός(χ) :- άνθρωπος(χ). Για κάθε Χ, εάν το Χ είναι άνθρωπος τότε το Χ είναι θνητός. πατέρας(χ,υ) :- γονιός(χ,υ), άρεν(χ). Για κάθε Χ και Υ, το Χ είναι πατέρας του Υ εάν το Χ είναι γονιός του Υ και επιπλέον το φύλο του Χ είναι αρσενικό. Γιάννης Ρεφανίδης 6

4 Σύνταξη (2/2) Συγκρίνοντας τις προτάσεις: πατέρας(χ,υ) :- γονιός(χ,υ), άρεν(χ). Πατέρας(x,y) Γονιός(x,y) Άρεν(x) βλέπουµε ότιχρησιµοποιείται το :- αντί για και το κόµµα αντίγια το. Προτάσεις σαν την παραπάνω ονομάζονται κανόνες και ερμηνεύονται ως εξής: Γιαναισχύειτοπατέρας(X,Y) πρέπει να ισχύουν ταυτόχρονα τα γονιός(χ,υ) και άρεν(χ). ήισοδύναμα Για κάθε Χ,Υ, εάν ισχύουν τα γονιός(χ,υ) και άρεν(χ) τότε ισχύει και το πατέρας(χ,υ). Το συμπέρασμα ( πατέρας(χ,υ) ) ονομάζεται κεφαλή (head) του κανόνα ενώ οι προϋποθέσεις (γονιός(χ,υ), άρεν(χ) ) ονοµάζονται σώµα του κανόνα. Γιάννης Ρεφανίδης 7 ιαδικασίες Ένα σύνολο από προτάσεις, γεγονότα ή κανόνες, όπου στην κεφαλή τους έχουν όλες το ίδιο κατηγόρηµα καιµε τον ίδιο αριθµό ορισµάτων, ονοµάζεται διαδικασία. Παρακάτω φαίνεται µια διαδικασία που αφορά το κατηγόρηµα uncle/2 καιορίζειπότεέναςάνθρωποςείναιθείοςενόςάλλου. uncle(x,y) :- brother(x,z), father(z,y). uncle(x,y):- brother(x,z), mother(z,y). Γιάννης Ρεφανίδης 8

5 Υποβολή ερωτήσεων (1/6) Η Prolog είναι συνήθως µια διερµηνευόµενη γλώσσα. Ο χρήστης φορτώνει το πρόγραµµα στη µνήµη και στη συνέχεια υποβάλλει ερωτήσεις για τις οποίες περιµένει απάντηση. Ο διερµηνέας της Prolog εµφανίζει την προτροπή:?- για την υποβολή ερωτήσεων. Οι ερωτήσεις µπορούν να αποτελούνται από σύζευξη ενός ή περισσοτέρων κατηγορηµάτων µε ή χωρίς µεταβλητές. Κάθε ερώτηση πρέπει να τερµατίζει µε τελεία. Γιάννης Ρεφανίδης 9 Υποβολή ερωτήσεων (2/6) Για παράδειγµα, έστω η παρακάτω βάση γνώσης (το "πρόγραµµα") σε Prolog: parent(nick,maria). parent(nick, george). male(nick). male(george). female(maria). father(x,y):-parent(x,y), male(x). mother (X,Y):-parent(X,Y), female(x). Υποβάλλουµε την ερώτηση:?-father(nick,maria)....και παίρνουµε την απάντηση: yes. Προσοχή: Οι µεταβλητές διαφορετικών προτάσεων θεωρούνται πάντα διαφορετικές, ακόµη και αν έχουν το ίδιο όνοµα. Γιάννης Ρεφανίδης 10

6 Υποβολή ερωτήσεων (3/6) Παρόµοια, υποβάλλουµε την ερώτηση:?-father(maria,nick)....και παίρνουµε την απάντηση: no. Μια ερώτηση µπορεί να περιέχει µεταβλητές, όπως π.χ.:?- father(nick,z). Το νόηµα µιας τέτοιας ερώτησης είναι να ελεγχθεί εάν υπάρχουν τιµές για τη µεταβλητή Ζ, για τις οποίες να ισχύει το father(nick,z). Βλέπουµε δηλαδήότιοιµεταβλητές στις ερωτήσεις θεωρούνται υπαρξιακά ποσοτικοποιηµένες. ΠΡΟΣΟΧΗ: Οι µεταβλητές στις ερωτήσεις είναι διαφορετικές από τις µεταβλητές των προτάσεων της βάσης γνώσης, ακόµη καιανέχουν ίδια ονόµατα. Γιάννης Ρεφανίδης 11 Υποβολή ερωτήσεων (4/6) Στην περίπτωση ερώτησης µε µεταβλητές και εφόσον υπάρχουν τιµές για τις µεταβλητές για τις οποίες να ισχύει η ερώτηση, η Prolog απαντά µε την ανάθεση των τιµών στις µεταβλητές (αντί για ένα απλό yes):?- father(nick,z). Z=maria Αφού εµφανίσει µιαπρώτηδυνατήανάθεσητιµών στις µεταβλητές, µπορούµε να ζητήσουµε να ψάξει για άλλες τέτοιες "λύσεις". Για το σκοπό αυτό πατάµε το πλήκτρο; ή το κενό(spacebar), οπότε η Prolog απαντά: Ζ=george Στην παραθυρική έκδοση της ECLiPSe ζητούµε επιπλέον λύσεις πατώντας το κουµπί More. Γιάννης Ρεφανίδης 12

7 Υποβολή ερωτήσεων (5/6) Εάν για µια ερώτηση µε µεταβλητές η Prolog δεν µπορέσει να βρει καµία δυνατή ανάθεση τιµών σε αυτές, τότε απαντά αρνητικά:?- father(x,nick). no Μπορούµε να έχουµε περισσότερες από µια µεταβλητές σε µια ερώτηση:?- father(a,b). οπότε η απάντηση, εφόσον υπάρχει, µας δίνει τιµές για όλες τις µεταβλητές: Α=nick, B=maria και αν ζητήσουµε και δεύτερη λύση παίρνουµε την: Α=nick, B=george Γιάννης Ρεφανίδης 13 Υποβολή ερωτήσεων (6/6) Τέλος, µια ερώτηση µπορεί να είναι σύζευξη 2 ή περισσότερων απλών προτάσεων (µε ή και χωρίς µεταβλητές):?- male(z), father (nick,z). Η ερώτηση αυτή ερµηνεύεται ως: Βρες τα αντικείµενα εκείνα Ζ για τα οποία ισχύουν ταυτόχρονα οι σχέσεις father (nick,z) και male(z). ή σε απλά ελληνικά: Βρες τα παιδιά του nick τα οποία είναι αγόρια. Η Prolog θα απαντήσει: Z=george Γιάννης Ρεφανίδης 14

8 Εξαγωγή συµπερασµάτων (1/3) Η διαδικασία απόδειξης ξεκινά µε την υποβολή µιας ερώτησης, έστω π.χ.: male(z), father(nick,z). Η Prolog προσπαθεί να "αποδείξει" µία-µία τις επιµέρους προτάσεις της ερώτησης. Για να αποδειχθεί µια πρόταση, πρέπει αυτή να ταυτοποιηθεί είτε: µε ένα γεγονός της βάσης γνώσης, είτε µε την κεφαλή ενός κανόνα της βάσης γνώσης. Στην περίπτωση ταυτοποίησης µε την κεφαλή ενός κανόνα, το πρόβληµα "µετατίθεται" στην απόδειξη όλων των επιµέρους προτάσεων στο σώµα του κανόνα. Γιάννης Ρεφανίδης 15 Εξαγωγή συµπερασµάτων (2/3) Για παράδειγµα, η πρότασηmale(z) ταυτοποιείται µε την πρόταση: male(nick). µε την αντικατάσταση {Z/nick}. Στη συνέχεια η πρόταση father(nick,z), η οποία πλέον έχει γίνει father(nick,nick), ταυτοποιείται µε την κεφαλή του κανόνα: father(x,y):-parent(x,y), male(x). µε την αντικατάσταση {X/nick, Y/nick}, οπότε πλέον το πρόβληµα µετατίθεται στην απόδειξη των προτάσεων: parent(nick,nick), male(nick) Γιάννης Ρεφανίδης 16

9 Εξαγωγή συµπερασµάτων (3/3) Η προσπάθεια απόδειξης της προτάσης: parent(nick,nick) θα αποτύχει, οπότε ο µηχανισµός αναζήτησης της Prolog θα αναζητήσει εναλλακτικούς τρόπους απόδειξης. Θα βρει ότι η αρχική πρόταση: male(z) µπορούσε να ταυτοποιηθεί και µε το γεγονός: male(george) της βάσης γνώσης, κάτι που οδηγούσε στην ανάγκη για απόδειξη των γεγονότων: parent(nick,george), male(george) τα οποία υπάρχουν στη βάση γνώσης. Η απάντηση που τελικά παίρνουµε είναιη: Z=george Γιάννης Ρεφανίδης 17 Παρατηρήσεις Κατά την προσπάθεια απάντησης της ερώτησης του χρήστη, η Prolog προσπαθεί να ταυτοποιήσει την ερώτηση µε κάποιο γεγονός ή την κεφαλή κάποιου κανόνα. Κατά την ταυτοποίηση οι µεταβλητές που υπάρχουν στην ερώτηση του χρήστη παίρνουν τιµές (δεσµεύονται). Μια µεταβλητή που έχει πάρει κάποια τιµήδεν µπορεί να την αλλάξει στο τρέχον µονοπάτι (κλαδί) αναζήτησης. Ο µόνος τρόπος µια µεταβλητή να αλλάξει τιµή είναιτο µονοπάτι αναζήτησης στο οποίο έγινε η δέσµευση να αποτύχει. Σε αυτή την περίπτωση όλες οι µεταβλητές που είχαν πάρει τιµές σε αυτό το µονοπάτι αναζήτησης, τις χάνουν. Η Prolog θα δοκιµάσει εναλλακτικά µονοπάτια αναζήτησης, στα οποία θα γίνουν νέες αποδόσεις τιµών. Η διαδικασία επιστροφής σε εναλλακτικά µονοπάτια αναζήτησης, ύστερα από µια αποτυχία, ονοµάζεται backtracking (υπαναχώρηση). Γιάννης Ρεφανίδης 18

10 Στρατηγική αναζήτησης Η στρατηγική αναζήτησης που ακολουθεί η Prolog είναι η πρώτακατά-βάθος. Για παράδειγµα, έστω η παρακάτω ερώτηση:?- a, b. Θα προσπαθήσει λοιπόν η Prolog να «αποδείξει» πρώτα το a και µετά το b. Έστω ότι στο τρέχον πρόγραµµα υπάρχει ο κανόνας: a:-a1, a2. Άρα, γιανααποδείξειηprolog το a, πρέπει να αποδείξει τα a1 και a2. Η Prolog θα προσπαθήσει να αποδείξει τα a1 και a2 πριν το b. ηλαδή, τα «παιδιά» του τρέχοντος στόχου έχουν προτεραιότητα έναντι των υπόλοιπων παλαιότερων στόχων. Γιάννης Ρεφανίδης 19 Ανώνυµη µεταβλητή (1/3) Τόσο στα προγράµµατα, όσο και στις ερωτήσεις µας στην Prolog, µπορούµε ναχρησιµοποιούµε τηνανώνυµη µεταβλητή. Ως «ανώνυµη» χαρακτηρίζεται η µεταβλητή _ (χωρίς τα εισαγωγικά) καθώς και οποιαδήποτε µεταβλητή έχει όνοµα που ξεκινά µε τοσύµβολο _. Ηεµφάνιση της ανώνυµης µεταβλητής σε µια ερώτηση, για παράδειγµα στην:?- male(_). ερµηνεύεται ως εξής: Υπάρχει κάποιο «αντικείµενο» του προγράµµατος το οποίο να είναι male ; Εάν υπάρχει κάποιο τέτοιο αντικείµενο, η Prolog θα αποκριθεί yes (χωρίς να µας αναφέρει το όνοµά του), ειδάλλως θα αποκριθεί no. Γιάννης Ρεφανίδης 20

11 Ανώνυµη µεταβλητή (2/3) Η ανώνυµη µεταβλητή µπορεί να εµφανίζεται και µέσα σε κανόνες. Για παράδειγµα, έστω ότι έχουµε τον κανόνα: parent(x,y):- ο οποίος δηλώνει ότι ο Χ είναι γονιός του Υ. Έστω ότι θέλουµε να ορίσουµε µε κανόνες το κατηγόρηµα children_benefit(x), το οποίο ορίζει ότι ο Χ δικαιούται επίδοµα τέκνων. Αυτό ισχύει µόνο εφόσον ο Χ είναι γονιός κάποιου Υ, χωρίς να µας ενδιαφέρει το όνοµα του Υ. Το γράφουµε ωςεξής: children_benefit(x) :- parent(x,_). Γιάννης Ρεφανίδης 21 Ανώνυµη µεταβλητή (3/3) ΠΡΟΣΟΧΗ: Σε περίπτωση που σε έναν κανόνα ή σε µια ερώτηση ή ακόµη και µέσα στο ίδιο το κατηγόρηµα εµφανίζονται περισσότερες από µια ανώνυµες µεταβλητές, αυτές θεωρούνται διαφορετικές. Ένας απλός τρόπος να ανιχνεύουµε πότεχρειάζεταινα χρησιµοποιήσουµε µια ανώνυµη µεταβλητή είναι ο εξής: Εάν σε ένα γεγονός ή κανόνα το όνοµα µιας µεταβλητής εµφανίζεται µία και µόνο µια φορά, τότε αυτή η µεταβλητή µπορεί να γίνει ανώνυµη. Τέτοιες µεταβλητές που εµφανίζονται µόνο µια φορά σε κάποιο γεγονός ή κανόνα ονοµάζονται µοναδικές µεταβλητές (singleton variables). Επειδή µοναδικές µεταβλητές µπορεί να προκύψουν από ακούσιο αναγραµµατισµό, όλες οι Prolog εµφανίζουν προειδοποιήσεις (warnings) για αυτές κατά τη διαδικασία µετάφρασης (compile) ενός προγράµµατος. Γιάννης Ρεφανίδης 22

12 Σύνθετοι όροι (1/3) Τα ορίσµατα των κατηγορηµάτων µπορεί να είναι σύνθετοι όροι (ή αλλιώς «συναρτησιακοί όροι»). Ένας σύνθετος όρος αποτελείται από το συναρτησιακό σύµβολο και τα ορίσµατα: f(k1, k2,, kn) Τα ορίσµατα ενός σύνθετου όρου µπορεί να είναι και αυτά σύνθετοι όροι. Οι σύνθετοι όροι χρησιµεύουν στην οµαδοποίηση των ορισµάτων ενός κατηγορήµατος και τελικά στην αναγνωσιµότητα του προγράµµατος. Οποιοδήποτε πρόγραµµα µε σύνθετους όρους µπορεί πολύ εύκολα να µετατραπεί σε ένα πρόγραµµα χωρίς σύνθετους όρους. Γιάννης Ρεφανίδης 23 Σύνθετοι όροι (2/3) Για παράδειγµα, έστω ότι στην αναλυτική γεωµετρία θέλουµε να αναπαραστήσουµε ευθύγραµµα τµήµατα στο επίπεδο. Για κάθε ευθ.τµήµα χρειάζεται να αναπαραστήσουµε τις δύο κορυφές του, άρα χρειαζόµαστε 4 αριθµούς. Για παράδειγµα: segment (2,1,5,4). όπου το segment είναι ένα κατηγόρηµα τάξης4. Εναλλακτικά µπορούµε ναοµαδοποιήσουµε τις τέσσερις παραµέτρους του segment, χρησιµοποιώντας σύνθετους όρους. Για παράδειγµα: segment (point(2,1), point(5,4) ). όπου το segment είναι πλέον ένα κατηγόρηµα τάξης2 και έχουµε επιπλέον ορίσει/χρησιµοποιήσει και τον συναρτησιακό όρο point µε δύοορίσµατα. Αυτό που κερδίσαµε είναι η αναγνωσιµότητα του προγράµµατος. Γιάννης Ρεφανίδης 24

13 Σύνθετοι όροι (3/3) Προσοχή χρειάζεται όταν ενοποιούµε κατηγορήµατα που περιλαµβάνουν σύνθετους όρους. Παρακάτω δίνονται µερικά παραδείγµατα. segment(point(2,3), point(5,4) ) segment(point(2,3), point(5,4) ) segment(point(2,3), point(5,4) ) segment(x,y) segment(x, point(y,z)) segment(3,4,5,4) {point(2,3)/x, point(5,4)/y} {point(2,3)/x, 5/Y, 4/Z} αποτυχία Γιάννης Ρεφανίδης 25 Αναδροµή (1/3) Ένας κανόνας στην Prolog που περιλαµβάνει στο σώµα του κάποια κλήση στο κατηγόρηµα της κεφαλής του κανόνα ονοµάζεται αναδροµικός. Για παράδειγµα, έστω το παρακάτω πρόγραµµα: father(nick, george). father(george, john). father(john, jim). ancestor(x,y) :- father(x,y). ancestor(x,y) :- father(x,z), ancestor(z,y). Ο κανόνας που ορίζει τη σχέση ancestor είναι αναδροµικός.?- ancestor(nick, jim). yes Γιάννης Ρεφανίδης 26

14 Αναδροµή (2/3) Χωρίς τη χρήση αναδροµικού κανόνα, θα έπρεπε να ορίσουµε πολλούς µη αναδροµικούς κανόνες της µορφής: ancestor(x,y) :- father(x,y). ancestor(x,y) :- father(x,z), father(z,y). ancestor(x,y) :- father(x,z1), father(z1,z2),, father(zn,y). Είναι φανερό ότι οι παραπάνω κανόνες, εκτός από το ότι είναι πάρα πολλοί, δεν καλύπτουν και όλες τις περιπτώσεις. Γιάννης Ρεφανίδης 27 Αναδροµή (3/3) Με τη χρήση αναδροµικών κανόνων, είναι δυνατόν η Prolog να παγιδευτεί σε ατέρµονα κλαδιά αναζήτησης και να µην δώσει καµία απάντηση (είτε θετική είτε αρνητική), όση ώρα και αν περιµένουµε. Σε περίπτωση θετικής αναµενόµενης απάντησης, αυτό θα µπορούσε να αποφευχθεί εάν η Prolog ακολουθούσε µια αναζήτηση πρώτα-κατάπλάτος (αντί για την αναζήτηση πρώτα-κατά-βάθος) που υιοθετεί. Αλλάζοντας τη σειρά συγγραφής των κανόνων της βάσης γνώσης, καθώς και των κλήσεων στο σώµα κάθεκανόνα, συνήθως αποφεύγουµε τέτοια προβλήµατα. Για παράδειγµα, ο παρακάτω αναδροµικός ορισµός της διαδικασίας ancestor, όπου έχει αλλάξει η σειρά των δύο κανόνων αλλά και στο σώµα του κανόνα, «κολλάει» σε οποιαδήποτε κλήση στο ancestor/2. ancestor(x,y) :- ancestor(z,y), father(x,z). ancestor(x,y) :- father(x,y). Γιάννης Ρεφανίδης 28

15 Λίστες (1/3) Οι λίστες είναι η σηµαντικότερη δοµή δεδοµένων της Prolog. Μια λίστα είναι ένας δυναµικός µονοδιάστατος πίνακας µε στοιχεία του αριθµούς, σύµβολα, σύνθετους όρους ή και άλλες λίστες. Τα στοιχεία µιας λίστας δεν είναι απαραίτητο να είναι του ίδιου τύπου. Μερικά παραδείγµατα λιστών: [physics, 8, maths, 9] [ nick, 3, 12, ball, point(1,2), [a, b] ] Γιάννης Ρεφανίδης 29 Λίστες (2/3) Μια λίστα µπορεί να ενοποιηθεί µε µια µεταβλητή: Χ= [physics, 8, maths, 9] Τιςπερισσότερεςφορέςθέλουµε ναχειριστούµε ταστοιχείαµιας λίστας ένα-ένα. Σε αυτή την περίπτωση έχουµε τη δυνατότητα να ενοποιήσουµε µια µεταβλητή µε το πρώτο στοιχείο της λίστας(κεφαλή) και µια άλλη µεταβλητή µε τα υπόλοιπα στοιχεία της λίστας(ουρά). Έτσι η προσπάθεια ταυτοποίησης: [Χ Y] = [physics, 8, maths, 9] µας δίνει: Χ = physics Y = [8, maths, 9] Γιάννης Ρεφανίδης 30

16 Λίστες (3/3) Παρακάτω φαίνονται διάφορες προσπάθειες ενοποίησης µε λίστες. 1ος όρος [a, b, c] [a, b, c] [a, b] [a,b] [f(1), k, [m] ] [f(1), k, [m] ] 2ος όρος [a, b, c, d] [X, Y] [a,x] [a X ] [ f(x), Y, Z ] [ f(x), Y Z ] Ενοποίηση αποτυχία αποτυχία { b / X } { [b] / X } {1/X, k/y, [m] /Z } {1/X, k/y, [[m]] /Z } [[a]] [X Y] { [a] / X, []/Y } Γιάννης Ρεφανίδης 31 Παρατήρηση Οι λίστες στην Prolog µπορείναθεωρηθείότιείναισύνθετοιόροι τάξης 2, όπου το πρώτο όρισµα είναι η κεφαλή της λίστας και το δεύτερο η ουρά της (σε µορφή λίστας). Ως συναρτησιακό σύµβολο χρησιµοποιείται η τελεία. Έτσι ισχύουν οι παρακάτω ισοδυναµίες. [a, b] =.(a,.(b) ) [a] =.(a, [ ] ) [a, b, c] =.(a,.(b,.(c, [ ] ) ) ) [ [a], b] =.(.(a, [ ] ),.(b, [ ] ) ) Ουσιαστικά δηλαδή η αναπαράσταση µε αγκύλες είναι για την ευκολία του προγραµµατιστή και την αναγνωσιµότητα των προγραµµάτων. Γιάννης Ρεφανίδης 32

17 Παράδειγµα: Έλεγχος συµπερίληψης σε λίστα Το κατηγόρηµα member παρακάτω ελέγχει εάν ένα στοιχείο (πρώτο όρισµα) ανήκει σε µία λίστα (το δεύτερο όρισµα): member(x, [ X Y ] ). member(x, [ Head Tail ] ) :- member(x, Tail). Πιθανές ερωτήσεις:?- member( 2, [ 1, 2, 3] ). yes?- member(4, [ 1, 2, 3 ] ). no?- member(x, [1, 2, 3]). X=1 X=2 X=3 Κατηγορήµατα σαν το παραπάνω υπάρχουν ενσωµατεµένα στις περισσότερες υλοποιήσεις της Prolog καιέτσιδενχρειάζεταιναορίζονται ξανά από τον προγραµµατιστή. Γιάννης Ρεφανίδης 33 Παράδειγµα: Εύρεση τελευταίου στοιχείου λίστας (1/2) Το παρακάτω κατηγόρηµα, last(x,l) επιστρέφει ως Χ το τελευταίο στοιχείο της λίστας L. last(x, [X]). last(x, [ _Head Tail] ):- last(x,tail). Μπορούµε να κάνουµε κλήσεις στο last/2 µε το πρώτο όρισµα ελεύθερο και το δεύτερο δεσµευµένο. Για παράδειγµα, µια τέτοια κλήση είναι η:?- last( Z, [2, 3, 4] ). η οποία επιστρέφει Z=4 Εάν καλέσουµε τοκατηγόρηµα καιµε ταδύοορίσµατα δεσµευµένα, η απάντηση που θα πάρουµε θαείναιyes ή no, ανάλογα µε τοαντο πρώτο όρισµα είναι το τελευταίο στοιχείο της λίστα τους δεύτερου ορίσµατος ή όχι. Γιάννης Ρεφανίδης 34

18 Παράδειγµα: Εύρεση τελευταίου στοιχείου λίστας (2/2) Για παράδειγµα, η κλήση:?- last( 4, [2, 3, 4]). επιστρέφει yes, ενώ η κλήση:?- last( 1, [2, 3, 4]). επιστρέφει no. Το κατηγόρηµα last θα λειτουργήσει ακόµη και αν το καλέσουµε µε το πρώτο όρισµα δεσµευµένο και το δεύτερο ελεύθερο! Σε αυτή την περίπτωση θα επιστρέψει (άπειρες στο πλήθος) λίστες των οποίων το τελευταίο στοιχείο είναι το πρώτο όρισµα. Μπορούµε ακόµη νατοκαλέσουµε καιµε ταδύοορίσµατα ελεύθερα. Σε αυτή την περίπτωση θα επιστρέψει (άπειρες στο πλήθος) λίστες των οποίων το τελευταίο στοιχείο είναι ενοποιηµένο µε το πρώτο όρισµα (µολονότι και τα δύο εξακολουθούν να είναι µεταβλητές). Γιάννης Ρεφανίδης 35 Παράδειγµα: Συνένωση λιστών (1/3) Θα ορίσουµε ένα κατηγόρηµα append(l1,l2,l3), το οποίο επιτυγχάνει όταν η λίστα L3 είναι η ένωση (παράθεση) των L1 και L2. Θα µπορούµε νατοκαλούµε µε οποιοδήποτε όρισµά τουδεσµευµένο ή ελεύθερο. Οι βασικές ιδέες είναι οι εξής: Ησυνένωσηµιας λίστας L2 µε την κενή λίστα είναι η ίδια λίστα L2. append([ ], L2, L2). Ησυνένωση µιας λίστας ενός στοιχείου και µιας λίστας L2 δίνεται από τον παρακάτω κανόνα: append([a], L2, [A L2]). Παρατήρηση: Η παραπάνω δήλωση θα µπορούσε πιο περιφραστικά να γραφεί ισοδύναµα καιως: append(l1, L2, L3) :- L1=[A], L3=[A L2]. Γιάννης Ρεφανίδης 36

19 Παράδειγµα: Συνένωση λιστών (2/3) (συνέχεια...) Για τη συνένωση µιας λίστας L1 πολλών στοιχείων µε τηλίσταl2 σκεφτόµαστε ως εξής: Αφαιρούµε απότηνl1 τοπρώτοστοιχείοτηςχ και κάνουµε συνένωση της ουράς της L1 (έστω Τ1 το όνοµά της)µετην L2. Στο αποτέλεσµα προσθέτουµε και το πρώτο στοιχείο. append( L1, L2 L3 ) :- L1=[X T1], append(t1, L2, L30), L3=[X L30]. Ο παραπάνω κανόνας είναι αρκετά περιφρατικός. Πιο σύντοµα µπορεί να γραφεί και ως: append( [Χ Τ1], L2, [Χ L30]) :- append(t1,l2, L30). Άρα τελικά το πρόγραµµά µας γράφεται: append([ ], L2, L2). append([a], L2, [A L2]). append( L1, L2 L3 ) :- L1=[X T1], append(t1,l2, L30), L3=[X L30]. Γιάννης Ρεφανίδης 37 Παράδειγµα: Συνένωση λιστών (3/3) Το πρόγραµµα πουβρήκαµε : append([ ], L2, L2). append([a], L2, [A L2]). append( L1, L2 L3 ) :- L1=[X T1], append(t1,l2, L30), L3=[X L30]. µπορεί τελικά να απλοποιηθεί στο ισοδύναµο: append([ ], L, L). append( [X T1], L2, [X L3] ) :- append(t1,l2,l3). Ουσιαστικά η περίπτωση που η L1 έχει ένα µόνοστοιχείοδεν χρειάζεται, µιας και µπορείνακαλυφθείαπότουςδύοάλλουςκανόνες. Γιάννης Ρεφανίδης 38

20 Παράδειγµα: ιαγραφή στοιχείων από λίστα (1/2) Θέλουµε να φτιάξουµε το κατηγόρηµα delete(x,l1,l2), όπου Χ είναι ένα στοιχείο, L1 µια λίστα και L2 ηλίσταl1 από την οποία έχουν εµφανιστεί όλες οι εµφανίσεις του Χ. Οι βασικές ιδέες είναι οι εξής: Εάν η L1 είναι κενή, τότε και η L2 είναι κενή: delete( _X, [ ], [ ] ). Πιο περιφραστικά µπορεί κανείς να γράψει: delete( _X, L1, L2] ) :- L1=[ ], L2=[ ]. Εάν το στοιχείο Χ ταυτίζεται µε το πρώτο στοιχείο της L1, τότε η L2 ισούται µε την ουρά της L1, από την οποία όµως έχουν αφαιρεθεί όλα τα X. delete( X, [ X T1], L2) :- delete(x, Τ1, L2). Γιάννης Ρεφανίδης 39 Παράδειγµα: ιαγραφή στοιχείων από λίστα (2/2) (συνέχεια...) Εάν τέλος το πρώτο στοιχείο της L1 δεν ταυτίζεται µε τοχ, τότε η L2 αποτελείται από το πρώτο στοιχείο της L1 και από όσα από τα υπόλοιπα στοιχεία της L1 είναι διαφορετικά από το Χ. delete(x, [ X1 T1], [ X1 T2] ) :- X \=X1, delete(x, T1, T2). Άρα το συνολικό πρόγραµµα έχειωςεξής: delete( _X, [ ], [ ] ). delete( X, [ X T1], L2) :- delete(x, Τ1, L2). delete(x, [ X1 T1], [ X1 T2] ) :- X \=X1, delete(x, T1, T2). Γιάννης Ρεφανίδης 40

21 Παράδειγµα: Αναστροφή λίστας Θέλουµε να ορίσουµε το κατηγόρηµα reverse(l1, L2), το οποίο επιτυγχάνει όταν η λίστα L1 είναι η ανάστροφη της L2. Οι βασικές ιδέες είναι οι εξής: Η ανάστροφη της κενής λίστας είναι η κενή λίστα. reverse( [ ], [ ] ). Για να αναστρέψουµε τηνl1, ξεχωρίζουµε το πρώτο στοιχείο της H1 από την ουρά της T1, αναστρέφουµε την ουρά της και έστω RT1 η ανεστραµµένη ουρά. Τότε η L2 ισούται µε τηνένωσητηςrt2 και του στοιχείου H1. reverse( [ H1 T1], L2):- reverse(t1, RT1), append(rt1, [H1], L2). Γιάννης Ρεφανίδης 41 Παρατηρήσεις Πολλά από τα κατηγορήµατα χειρισµού λιστών που είδαµε στις προηγούµενες διαφάνειες υπάρχουν ενσωµατωµένα στις περισσότερες υλοποιήσεις της γλώσσας Prolog. Σε αυτές τις περιπτώσεις καλό είναι να χρησιµοποιούµε τα υπάρχοντα κατηγορήµατα, τα οποία είναι πιο αποτελεσµατικά. Όσον αφορά τις δικές µας υλοποιήσεις, αυτές που παρουσιάστηκαν στις προηγούµενες διαφανειες δεν είναι οι µοναδικές. Θα µπορούσε κανείς να βρει και εναλλακτικές ισοδύναµες υλοποιήσεις, οι οποίες ενδεχοµένως να ήταν αποτελεσµατικότερες (δηλ. γρηγορότερες). Γιάννης Ρεφανίδης 42

22 Αριθµητικές διαδικασίες (1/4) Ως ορίσµατα κατηγορηµάτων µπορούν να χρησιµοποιηθούν και αριθµοί. Μπορούµε µάλιστα να κατασκευάζουµε αριθµητικές εκφράσεις χρησιµοποιώντας τις γνωστές πράξεις +, -, *, /, καθώς και συναρτήσεις όπως sin(), cos(), exp() κλπ. Μια µεταβλητή µπορεί να ενοποιηθεί µε έναν αριθµό ή µία αριθµητική έκφραση. Μπορούµε να συγκρίνουµε αριθµούς / αριθµητικές εκφράσεις (που περιέχουν µεταβλητές) χρησιµοποιώντας τους παρακάτω τελεστές (κατηγορήµατα), µε τηγνωστήτουςσηµασία: >, >=, <, =<, =:= και =/=. Γιάννης Ρεφανίδης 43 Αριθµητικές διαδικασίες (2/4) Προσοχή χρειάζεται στη διάκριση των τελεστών =:= και =. Ο απλός τελεστής = συγκρίνει όρους προσπαθώντας να εκτελέσει ενοποίηση. Για παράδειγµα, η κλήση: parent(x,y) = parent(nick, maria) επιτυγχάνει. Αντίθετα οι κλήσεις: 2+1 = = 1+4 αποτυγχάνουν. Πετυχαίνει όµως η κλήση: 2+1 = 2+1 θεωρώντας την έκφραση 2+1 ως τον σύνθετο όρο +(2,1). Γιάννης Ρεφανίδης 44

23 Αριθµητικές διαδικασίες (3/4) Για σύγκριση αριθµητικών εκφράσεων µε ταυτόχρονη εκτέλεση πράξεων χρησιµοποιούµε τον τελεστή =:=, ο οποίος πετυχαίνει σε όλες τις παρακάτω περιπτώσεις: 2+1 =:= =:= =:= 2+1 Παρόµοια, για να ελέγξουµε εάν δύο αριθµητικές εκφράσεις καταλήγουν σε διαφορετικό αριθµητικό αποτέλεσµα χρησιµοποιούµε τον τελεστή =\=. Ο αντίστοιχος τελεστής \= ελέγχει εάν δύο όροι δεν είναι ενοποιήσιµοι, χωρίς να εκτελέσει καµία πράξη. ΠΡΟΣΟΧΗ: Όλοι οι αριθµητικοί τελεστές ισότητας/ανισότητας απαιτούν κατά την κλήση τους όλες οι µεταβλητές που εµπλέκονται στις αριθµητικές εκφράσεις να είναι δεσµευµένες. Γιάννης Ρεφανίδης 45 Αριθµητικές διαδικασίες (4/4) Για να εκτελέσουµε µια αριθµητική πράξη και να αποδώσουµε το αποτέλεσµα σε µια µεταβλητή χρησιµοποιούµε τον τελεστή is : X is 2+3 όπου το αποτέλεσµα είναι η µεταβλητή Χ να πάρει την τιµή 5. Αντίθετα αν χρησιµοποιήσουµε τοντελεστή=, δηλαδή: Χ=2+3 το αποτέλεσµα θαείναιηµεταβλητή Χ να πάρει ως τιµή τοσύνθετο όρο 2+3. Ή σε προθεµατική µορφή: +(2,3). Γιάννης Ρεφανίδης 46

24 Ενσωµατωµένα κατηγορήµατα (1/5) Μέχρι τώρα είδαµε προγράµµατα της Prolog, όπου όλα τα κατηγορήµατα ορίστηκαν από τον χρήστη. Η Prolog διαθέτει όµως πολλά ενσωµατωµένα κατηγορήµατα, τα οποία επιτελούν ειδικές λειτουργίες. Για παράδειγµα, το κατηγόρηµα member(x,y) επιστρέφει yes όταν το Y είναι λίστα και το Χ είναι στοιχείο αυτής της λίστας, ειδάλλως επιστρέφει no. Γιάννης Ρεφανίδης 47 Ενσωµατωµένα κατηγορήµατα (2/5) Μπορούµε να χωρίσουµε τα ενσωµατωµένα κατηγορήµατα σε δύο οµάδες: Αυτά που έχουν λογική σηµασία: Επιστρέφουν yes ή no, ανάλογα µε την περίπτωση. Παράδειγµα είναι το member(x,y). Αυτά που έχουν διαδικαστική σηµασία: Εκτελούν µια συγκεκριµένη δουλειά και επιστρέφουν (σχεδόν) πάντα yes. Παράδειγµα: Το κατηγόρηµα write(χ) τυπώνει τον όρο Χ στην οθόνη και επιστρέφει yes. Παρόµοια το κατηγόρηµα nl αλλάζει παράγραφο στην οθόνη. Γιάννης Ρεφανίδης 48

25 Ενσωµατωµένα κατηγορήµατα (3/5) Μπορούµε να διακρίνουµε τα ορίσµατα των ενσωµατωµένων κατηγορηµάτων σε δύο κατηγορίες: Αυτά που κατά την κλήση του κατηγορήµατος πρέπει να έχουν πάρει τιµή. Για παράδειγµα, η κλήση Χ>Υ θα προκαλέσει τερµατισµό προγράµµατος, εάν ένα από τα δύο ορίσµατα του κατηγορήµατος '>' δεν έχει πάρει τιµή. Αυτά που κατά την κλήση του κατηγορήµατος δεν είναι υποχρεωτικό να έχουν πάρει τιµή. Για παράδειγµα, η κλήση member(x,[ 1 2 3]), εάν το Χ δεν έχει πάρει τιµή, θα επιστρέψει διαδοχικά: Χ=1, Χ=2 και Χ=3. Γιάννης Ρεφανίδης 49 Ενσωµατωµένα κατηγορήµατα (4/5) Παρακάτω αναφέρουµε µερικά από τα ενσωµατωµένα κατηγορήµατα που βρίσκουµε στις περισσότερες Prolog, µαζί µε µια σύντοµη ερµηνεία τους. get(x): ιαβάζει από το πληκτρολόγιο τον επόµενο χαρακτήρα που πληκτρολογεί ο χρήστης και τον επιστρέφει στη µεταβλητή Χ. read(x): ιαβάζει από το πληκτρολόγιο τον επόµενο όρο που πληκτρολογεί ο χρήστης και τον επιστρέφει στη µεταβλητή Χ. put(x): Τυπώνει στην οθόνη τον χαρακτήρα Χ. write(x): Τυπώνει στην οθόνη τον όρο Χ. nl : Αλλάζει γραµµή στην οθόνη. Γιάννης Ρεφανίδης 50

26 Ενσωµατωµένα κατηγορήµατα (5/5) Οχειρισµός (ανάγνωση και εγγραφή) αρχείων δίσκου γίνεται µε τις ίδιες εντολές που γίνεται η είσοδος/έξοδος από/σε πληκτρολόγιο/οθόνη. Χρησιµοποιούνται ειδικές εντολές για να ανακατευθύνουν την είσοδο και την έξοδο από και σε αρχείο. Ειδικότερα: see(stream): ΣτοεξήςηείσοδοςδιαβάζεταιαπότοStream. seen : Στο εξής είσοδος γίνεται ξανά το πληκτρολόγιο και όλα τα ανοικτά αρχεία εισόδου κλείνουν. seeing(stream): Επιστρέφει στη µεταβλητή Stream το όνοµα του τρέχοντος ρεύµατος εισόδου. tell(stream) : Το Stream γίνεται το τρέχον ρεύµα εξόδου. told: Τρέχον ρεύµα εξόδου γίνεται η οθόνη και όλα τα ανοικτά αρχεία εξόδου κλείνουν. telling(stream): Επιστρέφει στη µεταβλητή Stream το όνοµα του τρέχοντος ρεύµατος εξόδου. Γιάννης Ρεφανίδης 51 Αποκοπή (1/3) Έχουµε ορίσει ως διαδικασία ένα σύνολο κανόνων (συµπεριλαµβανοµένων και γεγονότων) που έχουν το ίδιο κατηγόρηµα στηνκεφαλήτους. Για παράδειγµα, οι παρακάτω κανόνες αποτελούν µια διαδικασία: uncle(x,y) :- brother(x,z), father(z,y). uncle(x,y):- brother(x,z), mother(z,y). η οποία ορίζει πότε ο Χ είναι θείος του/της Υ. Γιάννης Ρεφανίδης 52

27 Αποκοπή (2/3) Έστω επίσης ότι έχουµε τα παρακάτω γεγονότα: brother(bob, john). brother(bob, nick). father(john,ann). Θέλουµε να ελέγξουµε εάνοbob είναι θείος της ann. Εκτελούµε λοιπόν την ερώτηση: uncle(bob,ann). Στον πρώτο κανόνα της διαδικασίας uncle/2 η παραπάνω ερώτηση πετυχαίνει, µε τις ενοποιήσεις X=bob, Y=ann και Z=john. Η διαδικασία επιστρέφει επιτυχώς, ωστόσο θυµάται ότι πρέπει κάποια στιγµή στοµέλλον να ελέγξει και το δεύτερο κανόνα της διαδικασίας uncle. Γιάννης Ρεφανίδης 53 Αποκοπή (3/3) Με την αποκοπή µπορούµε να καθορίσουµε ότι εάν επιτύχει ο πρώτος κανόνας της διαδικασίας uncle/2 δεν χρειάζεται να ελεγχθεί και ο δεύτερος. Αυτό γίνεται ως εξής: uncle(x,y) :- brother(x,z), father(z,y),!. uncle(x,y):- brother(x,z), mother(z,y). Γενικά όταν η Prolog συναντήσει µια αποκοπή, δεν ελέγχει τους επόµενους κανόνες της τρέχουσας διαδικασίας, ενώ «ξεχνά» όλα τα εναλλακτικά µονοπάτια που ενδεχοµένως αποµένει να ελέγξει από προηγούµενες κλήσεις της ίδιας διαδικασίας (στην προκειµένη περίπτωση εναλλακτικές κλήσεις στα borher(x,z) και father(z,y), καθώς και από προηγούµενους κανόνες της uncle/2, εφόσον υπήρχαν). Γιάννης Ρεφανίδης 54

28 Παράδειγµα αποκοπής: Βηµατική συνάρτηση Έστω ότι θέλουµε να ορίσουµε τοκατηγόρηµα step(x,y), το οποίο προσοµοιώνει τη βηµατική συνάρτηση: Εάν το Χ είναι µικρότερο από το 0, το Υ είναι µηδέν, ειδάλλως το Υ είναι 1. Η έκδοση του προγράµµατος χωρίς αποκοπή είναι η εξής: step(x,0):- X<0. step(x,1):- X>=0. Η έκδοση του προγράµµατος µε αποκοπή είναι η εξής: step(x,0):- X<0,!. step(x,1). Η πρώτη έκδοση ελέγχει πάντα και τον δεύτερο κανόνα, ακόµη και αν έχει επιτύχει ο πρώτος. Η δεύτερη έκδοση ελέγχει τον δεύτερο κανόνα µόνο αν αποτύχει ο πρώτος. Μάλιστα, σε αυτή την περίπτωση ο δεύτερος κανόνας έχει µετατραπεί σε απλό γεγονός! (δηλαδή αφαιρέθηκε ο ανισοτικός έλεγχος). Γιάννης Ρεφανίδης 55 Παράδειγµα αποκοπής: Ηδιαδικασίαmember (1/3) Ορίσαµε σε προηγούµενη διαφάνεια τη διαδικασία member(x,l), η οποία επιτυγχάνει όταν το Χ είναι µέλος της λίστας L. Το πρόγραµµα που παρουσιάσαµε ήταν το εξής: member(x, [ X Y ] ). member(x, [ Head Tail ] ) :- member(x, Tail). Έστω ότι κάνουµε την ερώτηση:?- member(2, [1,2,3,4]). Η παραπάνω διαδικασία λειτουργει ως εξής: Ο πρώτος κανόνας συγκρίνει το 2 µε το πρώτο στοιχείο της λίστας. Επειδή δεν ταυτίζονται αποτυγχάνει. Ο δεύτερος κανόνας καλεί αναδροµικά τη διαδικασία, έχοντας αφαιρέσει το πρώτο στοιχείο της λίστας. Η αναδροµική κλήση πετυχαίνει αµέσως και έτσι πετυχαίνει και η αρχική κλήση. Γιάννης Ρεφανίδης 56

29 Παράδειγµα αποκοπής: Ηδιαδικασίαmember (2/3) Αφού η διαδικασία επιστρέψει επιτυχώς, διατηρεί στη µνήµη εναλλακτικά µονοπάτια απόδειξης. Τα µονοπάτια αυτά προκύπτουν από το γεγονός ότι η πρώτη αναδροµική κλήση µπορούσε ενδεχοµένως να ικανοποιηθεί από τον δεύτερο κανόνα, δηλαδή πάλι αναδροµικά, κοκ. Ουσιαστικά η διαδικασία θα συνεχίσει να ελέγχει εάν το 2 υπάρχει στη λίστα [1,2,3,4] µέχρι να ελέγξει ολόκληρη τη λίστα. Ενδεχοµένως θα θέλαµε η διαδικασία member να τερµατίζει µόλις ανακαλύψει την πρώτη εµφάνιση του στοιχείου που αναζητούµε στη λίστα. Αυτό επιτυγχάνεται µε το παρακάτω πρόγραµµα: member(x, [ X Y ] ) :-!. member(x, [ Head Tail ] ) :- member(x, Tail). Γιάννης Ρεφανίδης 57 Παράδειγµα αποκοπής: Ηδιαδικασίαmember (3/3) Η προσθήκη της αποκοπής στον πρώτο κανόνα της member/2 αυξάνει την αποτελεσµατικότητα του κανόνα, έχει όµως ένα πολύ σοβαρό µειονέκτηµα: Εάν υποβάλλουµε την ερώτηση:?- member(x, [1,2,3,4]). παίρνουµε µόνο την απάντηση Χ=1 Αντίθετα, εάν δεν υπήρχε η αποκοπή, η ίδια ερώτηση θα έδινε διαδοχικά τις απαντήσεις: Χ=1 Χ=2 Χ=3 Χ=4 Γιάννης Ρεφανίδης 58

30 Παρατηρήσεις Η χρήση της αποκοπής: Αυξάνει την αποτελεσµατικότητα των προγραµµάτων όταν οι κλήσεις µας γίνονται χωρίς µεταβλητές. εν µας επιστρέφει όλες τις εναλλακτικές λύσεις όταν οι κλήσεις γίνονται µε µεταβλητές. Γενικότερα, θεωρείται ότι η χρήση της αποκοπής περιορίζει τη δηλωτικότητα (declarativeness) των προγραµµάτων, καθιστώντας τα πιο διαδικαστικά (procedural). Ηδιαδικασίαmember υλοποιείται από όλες τις Prolog χωρίς αποκοπή. Γιάννης Ρεφανίδης 59 ΗάρνησηστηνProlog Είδαµε ότιµε τιςπροτάσειςhorn δεν µπορούµε νααποδεικνύουµε αρνητικές προτάσεις. Ωστόσο, η Prolog επιτρέπει τη χρήση άρνησης στο σώµα των κανόνων, µε χρήση της δεσµευµένης λέξης not: alive(x) :- not dead(x). Η λέξη not µπορεί να εµφανίζεται µόνο στο σώµα των κανόνων (όχι δηλαδή στην κεφαλή), και ερµηνεύεται ως εξής: Εάν µε βάση όσα γνωρίζει το πρόγραµµα ως τώρα δεν µπορέσει να αποδείξει το dead(x), τότε µπορεί να υποθέσει ότι ισχύει το not dead(x). Η παραπάνω προσέγγιση ονοµάζεται "υπόθεση του κλειστού κόσµου", αφού υποθέτει ότι γνωρίζουµε ταπάντασεσχέσηµε το συγκεκριµένο πρόβληµα, άρα ό,τι δεν µπορούµε να το αποδείξουµε δεν ισχύει. Γιάννης Ρεφανίδης 60

31 υναµική τροποποίηση προγράµµατος (1/2) Μπορούµε να προσθέτουµε και να αφαιρούµε γεγονότα και κανόνες από τη µνήµη κατά την εκτέλεση του προγράµµατος. Αυτό επιτυγχάνεται µε τα παρακάτω κατηγορήµατα: assert( Clause ) : Προσθέτει στη µνήµη το γεγονός ή τον κανόνα Clause. assert( city(thessaloniki) ). assert( (brother(x,y):- father(z,x), father(z,y), male(x) ) ). Η πρόταση Clause τοποθετείται ύστερα από όλες τις προτάσεις του ίδιου κατηγορήµατος. asserta( Clause ) : Ίδιο µε το assert/1, µε µοναδική διαφορά ότι προσθέτει την πρόταση Clause πριν από άλλες προτάσεις του ίδιου κατηγορήµατος. retract( Clause ) : ιαγράφει από τη µνήµη το πρώτο γεγονός ή κανόνα που ταυτοποιείται µε τοclause. retract_all( Clause ) : ιαγράφει από τη µνήµη όλα τα γεγονότα / κανόνες που ταυτοποιούνται µε το Clause. Γιάννης Ρεφανίδης 61 υναµική τροποποίηση προγράµµατος (2/2) Η δυνατότητα δυναµικής τροποποίησης ενός προγράµµατος µας επιτρέπει, µεταξύ άλλων, να έχουµε καθολικές µεταβλητές στην Prolog. Για παράδειγµα, έστω ότι χρειαζόµαστε έναν καθολικό µετρητή, ο οποίος θα ενηµερώνεται από διάφορα σηµεία του προγράµµατος. Μπορούµε να δηλώσουµε ένα γεγονός: counter(0). Στη συνέχεια, εάν σε κάποιο σηµείο του προγράµµατος θέλουµε να αυξήσουµε τηντιµή τουκατά1, προσθέτουµε τις παρακάτω εντολές:... retract( counter(x) ), X1 is X + 1, assert( counter(x1) ), Γιάννης Ρεφανίδης 62

32 Παρατήρηση Προσοχή: Για να µπορούµε να προσθέτουµε / αφαιρούµε δυναµικά προτάσεις που αφορούν ένα συγκεκριµένο κατηγόρηµα, αυτό το κατηγόρηµα πρέπει να δηλωθεί ως δυναµικό. Αυτό γίνεται µε δήλωση στην αρχή του προγράµµατος: :-dynamic όνοµα_κατηγορήµατος/τάξη. Στο παράδειγµα της προηγούµενης διαφάνειας, θα έπρεπε στην αρχή του προγράµµατος να υπάρχει η δήλωση: :-dynamic counter/1. Για όσα κατηγορήµατα δεν υπάρχει η παραπάνω δήλωση, η Prolog τα θεωρεί στατικά και δεν µας επιτρέπει να προσθέτουµε και να αφαιρούµε προτάσεις δυναµικά κατά την εκτέλεση του προγράµµατος. Γιάννης Ρεφανίδης 63 Συγκέντρωση λύσεων (1/2) Πολλές φορές χρειαζόµαστε να µαζέψουµε σε µία λίστα όλες τις πιθανές απαντήσεις µιας ερώτησης. Για παράδειγµα, έστω το παρακάτω πρόγραµµα: father(nick, george) father(nick, mary) father(john, elen) Έστω ότι θέλουµε να βρούµε ταπαιδιάτουnick. Ηερώτηση:?- father(nick, X) µας επιστρέφει ένα-έναταπαιδιάτου, χωρίς να µας δίνει τη δυνατότητα να τα χειριστούµεόλα µαζί ταυτόχρονα. Γιάννης Ρεφανίδης 64

33 Συγκέντρωση λύσεων (2/2) Μπορούµε να ζητήσουµε από την Prolog να µας επιστρέψει ταυτόχρονα όλες τις δυνατές απαντήσεις σε µια ερώτηση. Αυτό γίνεται µε το κατηγόρηµα findall/3: findall( Term, Goal, List ) : Κατά την κλήση της findall, η Prolog βρίσκει όλες τις πιθανές απαντήσεις στην ερώτηση Goal. Για κάθε απάντηση που βρίσκει τοποθετει στο List ένα αντίγραφο του Term, µε τις µεταβλητές του Term να έχουν πάρει τιµές από την εκάστοτε απάντηση του Goal. Για παράδειγµα:?- findall( X, father(nick,x), List). List= [george, mary] Εναλλακτικά: findall( child(x), father(nick,x), List). List= [ child(george), child(mary) ] Γιάννης Ρεφανίδης 65 Λογικός Προγραµµατισµός Η γλώσσα προγραµµατισµού Prolog Αλγόριθµοι αναζήτησης σε Prolog

34 Το πρόβληµα του ίππου Στις επόµενες διαφάνειες θα χρησιµοποιήσουµε τηνprolog για να λύσουµε προβλήµατα µε χρήση αλγορίθµων αναζήτησης. Θα χρησιµοποιήσουµε ως παράδειγµα το πρόβληµα του ίππου στο σκάκι, το οποίο ορίζεται ως εξής: εδοµένης µια σκακιέρας ΝxN και ενός ίππου σε κάποια θέση της σκακιέρας, να βρεθεί µια διαδροµή τουίππουµε την οποία αυτός επισκέπεται όλα τα τετράγωνα της σκακιέρας, µια φορά το καθένα, ξεκινώντας από συγκεκριµένη θέση (π.χ. µια γωνία). Το πρόβληµα έχει λύση για σκακιέρες µε µήκος πλευράς τουλάχιστον 5. Γιάννης Ρεφανίδης 67 Αναπαράσταση θέσεων Θα χρησιµοποιήσουµε σύνθετους όρους της µορφής pos(x,y) για να αναφερόµαστε στη θέση X,Y της σκακιέρας. Για παράδειγµα, pos(1,1), pos(2,3) κλπ Ορίσουµε τη µέγιστη διάσταση της σκακιέρας µε το γεγονός: size(5). Γιάννης Ρεφανίδης 68

35 Αναπαράσταση κινήσεων (1/4) Οι επιτρεπτές κινήσεις του ίππου από ένα τυχαίο τετράγωνο είναι το πολύ 8. Για όσους δεν γνωρίζουν σκάκι, κάθε κίνηση του ίππου αντιστοιχεί σε µετακίνησή του κατά ένα τετράγωνο στη µία διάσταση και δύο τετράγωνα στην άλλη, αρκεί να µην βγει έξω από την σκακιέρα. Φυσικά στο πραγµατικό σκάκι η νέα θέση δεν πρέπει να κατέχεται από πιόνι του ίδιου χρώµατος, ενώ η µετακίνηση του ίππου δεν θα πρέπει να αφήνει εκτεθειµένο τον βασιλιά του ίδιου χρώµατος. Στην εικόνα δίπλα ο µαύρος ίππος µπορεί να µετακινηθεί σε οποιαδήποτε από τις θέσεις που είναι σηµειωµένες Γιάννης Ρεφανίδης Αναπαράσταση κινήσεων (2/4) Ο παρακάτω κανόνας µας δίνει µια από τις επιτρεπτές κινήσεις του ίππου: move( pos(x,y), pos(x1,y1) ) :- X>2, Y>1, X1 is X-2, Y1 is Y-1. Ο παρακάτω κανόνας µας δίνει ακόµη µια µετακίνηση προς την αντίθετη κατεύθυνση. move( pos(x,y), pos(x1,y1) ) :- X1 is X+2, Y1 is Y+1, size(s), Χ1=<S, Υ1=<S. Γιάννης Ρεφανίδης 70

36 Αναπαράσταση κινήσεων (3/4) Ακολουθούν οι ορισµοί των υπολοίπων έξι κινήσεων. move( pos(x,y), pos(x1,y1) ) :- X>1, Y>2, X1 is X-1, Y1 is Y-2. move( pos(x,y), pos(x1,y1) ) :- X>1, X1 is X-1, Y1 is Y+2, size(s), Υ1=<S. move( pos(x,y), pos(x1,y1) ) :- X>2, X1 is X-2, Y1 is Y+1, size(s), Υ1=<S. Γιάννης Ρεφανίδης 71 Αναπαράσταση κινήσεων (4/4) (συνέχεια...) move( pos(x,y), pos(x1,y1) ) :- X1 is X+1, size(s), Χ1=<S, Υ>2, Y1 is Y-2. move( pos(x,y), pos(x1,y1) ) :- X1 is X+2, size(s), Χ1=<S, Υ>1, Y1 is Y-1. move( pos(x,y), pos(x1,y1) ) :- X1 is X+1, Y1 is Y+2, size(s), Χ1=<S, Υ1=<S. Γιάννης Ρεφανίδης 72

37 Αναπαράσταση σκακιέρας (1/3) Θα χρειαστούµε έναν τρόπο να αναπαριστούµε τησκακιέρα, ώστε να θυµόµαστε ποια τετράγωνα δεν έχουµε επισκεφθεί ακόµη ή ποια έχουµε επισκεφθεί. Ο πιο απλός τρόπος είναι µια λίστα, για παράδειγµα: [ pos(1,1), pos(1,2),, pos(2,1),, pos(5,5) ] Για ευκολότερη δηµιουργία της λίστας, µπορούµε να φτιάξουµε µια διαδικασία που θα επιστρέφει την παραπάνω λίστα, όταν της δώσουµε τη διάσταση της σκακιέρας. Η διαδικασία gen_table/1 στις επόµενες διαφάνειες επιστρέφει στη µεταβλητή Table έναν πίνακα µε στοιχεία του όλες τις θέσεις της σκακιέρας. Η διάσταση της σκακιέρας λαµβάνεται από το γεγονός size(5). Γιάννης Ρεφανίδης 73 Αναπαράσταση σκακιέρας (2/3) gen_table(table):- size(s), gen_table(1,s,table). gen_table(s, S, Table ):- gen_row(s, S, Table, 1),!. gen_table(row,s,table):- gen_row(row, S, TableRow, 1), Next_Row is Row+1, gen_table(next_row, S, Rest_Table), append(tablerow, Rest_Table, Table). Γιάννης Ρεφανίδης 74

38 Αναπαράσταση σκακιέρας (3/3) gen_row(row, S, [ pos(row,s)], S) :-!. gen_row(row, S, [ pos(row,col) Rest], Col ):- Next_Col is Col + 1, gen_row(row, S, Rest, Next_Col). Γιάννης Ρεφανίδης 75 Αναπαράσταση καταστάσεων Σε κάθε κατάσταση του χώρου αναζήτησης θα πρέπει να γνωρίζουµε: Σε ποια θέση βρισκόµαστε. Ποιες θέσεις δεν έχουµε ακόµη επισκεφθεί. Μπορούµε νααναπαραστήσουµε καταστάσεις µε τονπαρακάτω σύνθετο όρο: state(current_pos, Rest) όπου Current_pos είναι η τρέχουσα θέση, π.χ. pos(1,1). Rest είναι µια λίστα µε τις θέσεις που αποµένει να επισκεφθούµε. Για παράδειγµα: state(pos(4,2), [pos(1,2),,pos(5,5)] ) Γιάννης Ρεφανίδης 76

39 Τελεστής µετάβασης Χρειαζόµαστε µια διαδικασία η οποία για κάθε κατάσταση βρίσκει, ένα-ένα, όλαταπαιδιάτης. next_state( state(current_pos, Rest), state(new_pos, New_rest):- move(current_pos, New_pos), member(new_pos, Rest), delete(new_pos,rest,new_rest). Γιάννης Ρεφανίδης 77 Αναζήτηση πρώτα κατά βάθος (1/3) Σε κάθε κατάσταση κατά την αναζήτηση θα πρέπει: Να βρίσκουµε όλες τις δυνατές καταστάσεις-παιδιά. Να επιλέγουµε µια κατάσταση-παιδί και να συνεχίζουµε απόαυτήν. Να θυµόµαστε από ποιες θέσεις περάσαµε µέχρι να φτάσουµε στην τρέχουσα θέση. Θα υλοποιήσουµε τον αλγόριθµο αναζήτησης πρώτα κατά βάθος βασιζόµενοι στον ενσωµατωµένο µηχανισµό αναζήτησηςτης Prolog, οοποίοςλειτουργείµε την στρατηγική πρώτα κατά βάθος. Γιάννης Ρεφανίδης 78

40 Αναζήτηση πρώτα κατά βάθος (2/3) Ηδιαδικασίαdfs_tour/2 υλοποιεί τον αλγόριθµο αναζήτησηςπρώτα κατά βάθος: dfs_tour( state(current_pos, [ ] ), [Current_pos] ). dfs_tour( state(current_pos, Rest), [ Current_pos Path ] ):- next_state(state(current_pos, Rest), state(new_pos, New_rest) ), dfs_tour( state(new_pos, New_rest), Path ). Το πρώτο όρισµα τηςdfs_tour/2 είναι η τρέχουσα κατάσταση, συµπεριλαµβανοµένης της τρέχουσας θέσης και των θέσεων που αποµένει να επισκεφθούµε. Στο δεύτερο όρισµα της dfs_tour/2 επιστρέφονται οι θέσεις που επισκέπτεται ο αλγόριθµος, διαταγµένες µε τη σειρά επίσκεψης. Καλούµε τηνdfs_tour/2 ως: dfs_tour( state(pos(1,1), [pos(1,2), pos(1,3),, pos(5,5)] ), Path). Γιάννης Ρεφανίδης 79 Αναζήτηση πρώτα κατά βάθος (3/3) Για πιο εύκολη κλήση της dfs_tour/2 ορίζουµε τη βοηθητική διαδικασία run_dfs/1 ως εξής: run_dfs(path):- gen_table(table), delete(pos(1,1),table,rest), dfs_tour(state(pos(1,1),rest), Path). Παρακάτω φαίνεται η λύση που επιστρέφει ο αλγόριθµος: Path=[pos(1, 1), pos(3, 2), pos(5, 3), pos(4, 1), pos(2, 2), pos(1, 4), pos(3, 5), pos(5, 4), pos(3, 3), pos(4, 5), pos(2, 4), pos(1, 2), pos(3, 1), pos(5, 2), pos(4, 4), pos(2, 5), pos(1, 3), pos(2, 1), pos(4, 2), pos(2, 3), pos(1, 5), pos(3, 4), pos(5, 5), pos(4, 3), pos(5, 1)] Γιάννης Ρεφανίδης 80

41 Παρατηρήσεις Όπως έχουµε δει στους αλγορίθµους αναζήτησης, κάθε αλγόριθµος αναζήτησης πρέπει να διατηρεί το µέτωπο αναζήτησης, µια λίστα όπου υπάρχουν οι καταστάσεις εκείνες που έχουν συναντηθεί αλλά δεν έχουν επεκταθεί ακόµη. Στην υλοποίηση του αλγορίθµου αναζήτησης πρώτα κατά βάθος που παρουσιάστηκε στις προηγούµενες διαφάνειες, δεν χρειάστηκε το πρόγραµµά µας να υλοποιήσει το µέτωπο αναζήτησης. Αντίθετα, χρησιµοποιήσαµε το εσωτερικό«µέτωπο αναζήτησης» της Prolog, το οποίο λειτουργεί µε τη στρατηγική πρώτα-κατά-βάθος. Εάν θελήσουµε όµως να υλοποιήσουµε οποιονδήποτε άλλο αλγόριθµο, θα πρέπει να υλοποιήσουµε δικό µας µέτωπο αναζήτησης. Γιάννης Ρεφανίδης 81 Αναζήτηση πρώτα κατά πλάτος (1/5) Γιαναυλοποιήσουµε την αναζήτηση πρώτα κατά πλάτος, πρέπει να κατασκευάσουµε µόνοι µας το µέτωπο αναζήτησης του αλγορίθµου, ως µια λίστα καταστάσεων που έχει επισκεφθεί ο αλγόριθµος αλλά δεν έχει ακόµη βρει τα παιδιά τους. Λόγω της υλοποίησης της ατζέντας, χρειάζεται σε κάθε κατάσταση να προσθέσουµε καιτηδιαδροµή µε την οποία ο ίππος έφθασε στην τρέχουσα θέση. Έτσι η περιγραφή µιας κατάστασης γίνεται: state(current_pos, Rest, Path) όπου Current_pos είναι η τρέχουσα θέση, π.χ. pos(1,1). Rest είναι µια λίστα µε τις θέσεις που αποµένει να επισκεφθούµε. Path είναι η λίστα των θέσεων από τις οποίες έχει περάσει ο ίππος. Γιάννης Ρεφανίδης 82

42 Αναζήτηση πρώτα κατά πλάτος (2/5) Θεωρούµε ότι το µέτωπο αναζήτησης παριστάνεται ως ένα γεγονός της µορφής: agenda( [state(..), state( ),, state( ) ] ). Αρχικά το µέτωπο αναζήτησης πρέπει να περιέχει µόνο την αρχική κατάσταση: agenda( [ state( pos(1,1), [ pos(1,2),..., pos(5,5) ], [pos(1,1)] ) ] ). Το πρόγραµµα θα πρέπει, σε κάθε βήµα, να αφαιρεί από το µέτωπο αναζήτησης την πρώτη κατάσταση, να βρίσκει τα παιδιά της, και να τα προσθέτει στο τέλος του µετώπου αναζήτησης. Η τροποποίηση του παραπάνω γεγονότος είναι δυνατή µε τις εντολές retract και assert. Γιάννης Ρεφανίδης 83 Αναζήτηση πρώτα κατά πλάτος (3/5) Η διαδικασία του αλγορίθµου αναζήτησης πρώτα κατά πλάτος είναι ηεξής: bfs_tour(path):- retract( agenda( [ state( Current_pos, [ ], Path ) _ ] )),!. bfs_tour(path):- retract( agenda( [ State Rest_agenda ] )), find_children(state, Children), append(rest_agenda, Children, New_agenda), assert( agenda(new_agenda) ), bfs_tour(path). Ο πρώτος κανόνας επιτυγχάνει όταν η πρώτη κατάσταση στην agenda έχει επισκεφθεί όλες τις θέσεις. Ο δεύτερος κανόνας σβήνει (αφού τη διαβάσει πρώτα) την παλιά agenda, βρίσκει τα παιδιά της πρώτης κατάστασης και τα προσθέτει στο τέλος της νέας agenda. Γιάννης Ρεφανίδης 84

43 Αναζήτηση πρώτα κατά πλάτος (4/5) Παρακάτω ορίζουµε τη διαδικασία find_children, η οποία επιστρέφει σε λίστα όλα τα παιδιά µιας κατάστασης. find_children(current_state,children):- findall( Next_state, next_state(current_state, Next_state), Children). όπου η διαδικασία next_state έχει πλέον γίνει ως εξής: next_state( state(current_pos, Rest, Path), state(new_pos, New_rest, [New_pos Path]):- move(current_pos, New_pos), member(new_pos, Rest), delete(new_pos,rest,new_rest). Γιάννης Ρεφανίδης 85 Αναζήτηση πρώτα κατά πλάτος (5/5) Για πιο εύκολη κλήση της bfs_tour/2 ορίζουµε τη βοηθητική διαδικασία run_bfs/1 ως εξής: run_bfs(path):- gen_table(table), delete(pos(1,1),table,rest), assert(agenda([ state( pos(1,1), Rest, [pos(1,1)] ) ] )), bfs_tour(path1), reverse(path1,path). Ο αλγόριθµος αναζήτησης πρώτα κατά πλάτος δεν µπορεί να λύσει το συγκεκριµένο πρόβληµα. Ο λόγος είναι ότι για να βρει µια λύση, η οποία έχει µήκος 25, θα πρέπει πρώτα να εξετάσει όλες τις διαδροµές µε µήκος 24, οι οποίες είναι πάρα πολλές (της τάξης του 8 24 ). Γιάννης Ρεφανίδης 86

44 Παρατήρηση Θα µπορούσαµε πολύεύκολαναµετατρέψουµε τον αλγόριθµο αναζήτησης πρώτα κατά πλάτος σε πρώτα κατά βάθος µε δικόµας µέτωπο αναζήτησης. Αυτό µπορεί να γίνει αν η κλήση: append(rest_agenda, Children, New_agenda) στον δεύτερο κανόνα της διαδικασίας bfs_tour/1 άλλαζε σε: append(children, Rest_agenda, New_agenda) Γιάννης Ρεφανίδης 87 Αναζήτηση πρώτα στο καλύτερο (1/5) Η αναζήτηση πρώτα στο καλύτερο απαιτεί µια µικρή τροποποίηση στο πρόγραµµα της αναζήτησης πρώτα κατά πλάτος: Κάθε κατάσταση πρέπει να συνοδεύεται από έναν αριθµό, που να δηλώνει το πόσο «καλή» είναι αυτή η κατάσταση. Οι καταστάσεις στο µέτωπο αναζήτησης (agenda) πρέπει να είναι ταξινοµηµένες. Αλλάζουµε λοιπόν τον ορισµό τωνκαταστάσεωνωςεξής: state(score, Current_pos, Rest, Path) όπου Score είναι ο βαθµός κάθε κατάστασης Γιάννης Ρεφανίδης 88

45 Αναζήτηση πρώτα στο καλύτερο (2/5) Χρειαζόµαστε και ένα µηχανισµό βαθµολόγησης των καταστάσεων. Η βασική ιδέα είναι η εξής: Προτιµούνται οι καταστάσεις για τις οποίες: Το τρέχον τετράγωνο είναι στην άκρη της σκακιέρας. Έχουν ήδη διανύσει µεγαλύτερα µονοπάτια. Η παρακάτω διαδικασία βαθµολογεί καταστάσεις: heuristic( state(score, pos(x,y), Rest, Path) ):- size(s), DistX is min(x-1, S-X), DistY is min(y-1, S-Y), length(rest, LR), Score is DistX*DistY+4*LR. Γιάννης Ρεφανίδης 89 Αναζήτηση πρώτα στο καλύτερο (3/5) Οι νέες καταστάσεις θα πρέπει να βαθµολογούνται µόλις δηµιουργούνται. Ηδιαδικασίαnext_state τροποποιείται ως εξής: next_state( state(_, Current_pos, Rest, Path), state(score, New_pos, New_rest, [New_pos Path]):- move(current_pos, New_pos), member(new_pos, Rest), delete(new_pos,rest,new_rest) heuristic(state(score, New_pos, New_rest,_)). Η κλήση στον κανόνα heuristic γίνεται µε τηνέακατάστασηναέχει δεσµευµένες όλες τις παραµέτρους της εκτός από την Score. Ο κανόνας heuristic πετυχαίνει δεσµεύοντας την παράµετρο Score στην ευρετική τιµή της κατάστασης. Γιάννης Ρεφανίδης 90

46 Αναζήτηση πρώτα στο καλύτερο (4/5) Οαλγόριθµος πρώτα στο καλύτερο θα πρέπει να διατηρεί το µέτωπο αναζήτησης ταξινοµηµένο. bestfs_tour(path):- retract( agenda( [ state( _, Current_pos, [ ], Path ) _ ] )),!. bestfs_tour(path):- retract( agenda( [ State Rest_agenda ] )), find_children(state, Children), append(rest_agenda, Children, New_agenda), sort(new_agenda, Sorted_agenda), assert( agenda(sorted_agenda) ), bestfs_tour(path). Η ενσωµατωµένη διαδικασία sort/2 της Prolog ταξινοµεί µια λίστα αλφαβητικά. Στην προκειµένη περίπτωση, όλοι οι όροι της λίστας είναι τύπου state/4, και το πρώτο σηµείο στο οποίο διαφέρουν είναι η βαβµολογία των καταστάσεων. Γιάννης Ρεφανίδης 91 Αναζήτηση πρώτα στο καλύτερο (5/5) Τέλος, για πιο εύκολη κλήση της bestfs_tour/2 ορίζουµε τη βοηθητική διαδικασία run_bestfs/1 ως εξής: run_bestfs(path):- gen_table(table), delete(pos(1,1),table,rest), heuristic(state(score, pos(1,1), Rest, _)), assert(agenda([state( Score, pos(1,1), Rest, [pos(1,1)] )] )), bfs_tour(path1), reverse(path1,path). Γιάννης Ρεφανίδης 92

47 Παρατηρήσεις Οαλγόριθµος αναζήτησης πρώτα στο καλύτερο βρίσκει τη λύση σε σηµαντικά µικρότερο αριθµό επαναλήψεων. Συγκεκριµένα, ο αλγόριθµος πρώτα στο καλύτερο βρήκε λύση µετά από 32 επαναλήψεις, ενώ ο αλγόριθµος πρώτα κατά βάθος µετά από Γιάννης Ρεφανίδης 93 Γνωστές υλοποιήσεις της γλώσσας Prolog Eclipse Imperial College, London Prolog+Constraints Ελεύθερη διανοµή για πανεπιστήµια/φοιτητές Sicstus Prolog Prolog+Constraints Trial version SWI Απλή Prolog Ελεύθερη διανοµή LPA Prolog Απλή Prolog Εµπορική Γιάννης Ρεφανίδης 94

Κεφάλαιο 5ο: Εντολές Επανάληψης

Κεφάλαιο 5ο: Εντολές Επανάληψης Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 5ο: Εντολές Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερη συχνή, αφού πλήθος προβληµάτων µπορούν να επιλυθούν µε κατάλληλες

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

ΥΠΗΡΕΣΙΑ WEBMAIL ΚΥΠΕΣ

ΥΠΗΡΕΣΙΑ WEBMAIL ΚΥΠΕΣ ΥΠΗΡΕΣΙΑ WEBMAIL ΚΥΠΕΣ Η υπηρεσία διαχείρισης αλληλογραφίας µέσω web (webmail) δίνει την δυνατότητα στους χρήστες να διαχειριστούν την αλληλογραφία τους απ οποιοδήποτε σηµείο βρίσκονται εφόσον υπάρχει

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ PROLOG Ι. ΧΑΤΖΗΛΥΓΕΡΟΥ ΗΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ PROLOG Ι. ΧΑΤΖΗΛΥΓΕΡΟΥ ΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ PROLOG Ι. ΧΑΤΖΗΛΥΓΕΡΟΥ ΗΣ ΓΕΝΙΚΑ PROLOG PROgramming in LOGic Πρώτη υλοποίηση: Alain Colmerauer, Μασσαλία (Αρχή Επίλυσης, Εργασία R. Kowalski) εύτερη υλοποίηση: D. Warren, Εδιµβούργο

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

(α) Ζητείται να αναπαρασταθεί η παραπάνω γνώση σε Prolog, ώστε να δημιουργηθεί αντίστοιχο πρόγραμμα.

(α) Ζητείται να αναπαρασταθεί η παραπάνω γνώση σε Prolog, ώστε να δημιουργηθεί αντίστοιχο πρόγραμμα. 1. Δίνονται τα εξής γεγονότα «Ο Παύλος είναι πατέρας του Γιάννη και της Γεωργίας» και «Η Ελένη είναι μητέρα της Μαρίας και του Πέτρου». Επίσης, μας δίνεται και η εξής γνώση τύπου κανόνα, που αφορά το πότε

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΤΕΤΑΡΤΟ Insert, Update, Delete, Ένωση πινάκων Γιώργος Μαρκοµανώλης Περιεχόµενα Group By... 1 Having...1 Οrder By... 2 Εντολή Insert...

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

ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD

ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD Σε ορισµένες περιπτώσεις είναι ιδιαίτερα χρήσιµη η δηµιουργία ιστοσελίδων ενηµερωτικού περιεχοµένου οι οποίες στη συνέχεια µπορούν να δηµοσιευθούν σε κάποιο τόπο

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

Οδοραµα mobile ΑΠΟΘΗΚΗ

Οδοραµα mobile ΑΠΟΘΗΚΗ Οδοραµα mobile ΑΠΟΘΗΚΗ Όπως βλέπετε, η αρχική οθόνη της εφαρµογής διαθέτει 9 κουµπιά τα οποία σας επιτρέπουν να πλοηγηθείτε σε αυτό. Αρχίζοντας από πάνω αριστερά βλέπετε τα εξής: 1. Τιµολόγηση: Προβολή

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

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

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

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

11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44.

11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44. ΤΕΧΝΙΚΕΣ ΚΑΤΑΜΕΤΡΗΣΗΣ Η καταµετρηση ενος συνολου µε πεπερασµενα στοιχεια ειναι ισως η πιο παλια µαθηµατικη ασχολια του ανθρωπου. Θα µαθουµε πως, δεδοµενης της περιγραφης ενος συνολου, να µπορουµε να ϐρουµε

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

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

2. Στοιχεία Πολυδιάστατων Κατανοµών

2. Στοιχεία Πολυδιάστατων Κατανοµών Στοιχεία Πολυδιάστατων Κατανοµών Είναι φανερό ότι έως τώρα η µελέτη µας επικεντρώνεται κάθε φορά σε πιθανότητες που αφορούν µία τυχαία µεταβλητή Σε αρκετές όµως περιπτώσεις ενδιαφερόµαστε να εξετάσουµε

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

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

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

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

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της; 1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες (μορφές) της; Η δομή επανάληψης χρησιμοποιείται όταν μια σειρά εντολών πρέπει να εκτελεστεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι

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

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 1.3-1.4: Εισαγωγή Στον Προγραµµατισµό ( ιάλεξη 2) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγικές Έννοιες - Ορισµοί Ο κύκλος ανάπτυξης προγράµµατος Παραδείγµατα Πότε χρησιµοποιούµε υπολογιστή?

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

Καµπύλες Bézier και Geogebra

Καµπύλες Bézier και Geogebra Καµπύλες Bézier και Geogebra Κόλλιας Σταύρος Ένα από τα προβλήµατα στη σχεδίαση δυσδιάστατων εικόνων στα προγράµµατα γραφικών των υπολογιστών είναι η δηµιουργία οµαλών καµπυλών. Η λύση στο πρόβληµα αυτό

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

(GNU-Linux, FreeBSD, MacOsX, QNX

(GNU-Linux, FreeBSD, MacOsX, QNX 1.7 διαταξεις (σελ. 17) Παράδειγµα 1 Θα πρέπει να κάνουµε σαφές ότι η επιλογή των λέξεων «προηγείται» και «έπεται» δεν έγινε απλώς για λόγους αφαίρεσης. Μπορούµε δηλαδή να ϐρούµε διάφορα παραδείγµατα στα

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

Σηµειώσεις στις σειρές

Σηµειώσεις στις σειρές . ΟΡΙΣΜΟΙ - ΓΕΝΙΚΕΣ ΕΝΝΟΙΕΣ Σηµειώσεις στις σειρές Στην Ενότητα αυτή παρουσιάζουµε τις βασικές-απαραίτητες έννοιες για την µελέτη των σειρών πραγµατικών αριθµών και των εφαρµογών τους. Έτσι, δίνονται συστηµατικά

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

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

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

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

4.2 Μέθοδος Απαλοιφής του Gauss

4.2 Μέθοδος Απαλοιφής του Gauss 4.2 Μέθοδος Απαλοιφής του Gauss Θεωρούµε το γραµµικό σύστηµα α 11χ 1 + α 12χ 2 +... + α 1νχ ν = β 1 α 21χ 1 + α 22χ2 +... + α 2νχ ν = β 2... α ν1χ 1 + α ν2χ 2 +... + α ννχ ν = β ν Το οποίο µπορεί να γραφεί

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝ/ΚΗΣ ΚΑΤ/ΝΣΗΣ (Πλ. & Υπ.) 2006 ΕΚΦΩΝΗΣΕΙΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝ/ΚΗΣ ΚΑΤ/ΝΣΗΣ (Πλ. & Υπ.) 2006 ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ 1 ο ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝ/ΚΗΣ ΚΑΤ/ΝΣΗΣ (Πλ. & Υπ.) 2006 ΕΚΦΩΝΗΣΕΙΣ Α. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-5 και

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

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει; ΜΑΘΗΜΑ 7 Κλήση αλγορίθμου από αλγόριθμο Αναδρομή Σ χ ο λ ι κ ο Β ι β λ ι ο ΥΠΟΚΕΦΑΛΑΙΟ 2.2.7: ΕΝΤΟΛΕΣ ΚΑΙ ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΥ ΠΑΡΑΓΡΑΦΟI 2.2.7.5: Κλήση αλγορίθμου από αλγόριθμο 2.2.7.6: Αναδρομή εισαγωγη

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

Λογισµικό µε γλώσσα προγραµµατισµού. Logo. Εισαγωγή στη Γεωµετρία της Χελώνας ΧΕΛΩΝΟΚΟΣΜΟΣ

Λογισµικό µε γλώσσα προγραµµατισµού. Logo. Εισαγωγή στη Γεωµετρία της Χελώνας ΧΕΛΩΝΟΚΟΣΜΟΣ Λογισµικό µε γλώσσα προγραµµατισµού Logo Εισαγωγή στη Γεωµετρία της Χελώνας ΧΕΛΩΝΟΚΟΣΜΟΣ «Μαθαίνουµε καλύτερα κάνοντας... αλλά µαθαίνουµεακόµακαλύτερααν συνδυάσουµετηδράσηµετηνοµιλία και το στοχασµόπάνωσ

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

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

ΙΑΝΥΣΜΑΤΑ ΘΕΩΡΙΑ ΘΕΜΑΤΑ ΘΕΩΡΙΑΣ. Τι ονοµάζουµε διάνυσµα; αλφάβητου επιγραµµισµένα µε βέλος. για παράδειγµα, Τι ονοµάζουµε µέτρο διανύσµατος;

ΙΑΝΥΣΜΑΤΑ ΘΕΩΡΙΑ ΘΕΜΑΤΑ ΘΕΩΡΙΑΣ. Τι ονοµάζουµε διάνυσµα; αλφάβητου επιγραµµισµένα µε βέλος. για παράδειγµα, Τι ονοµάζουµε µέτρο διανύσµατος; ΙΝΥΣΜΤ ΘΕΩΡΙ ΘΕΜΤ ΘΕΩΡΙΣ Τι ονοµάζουµε διάνυσµα; AB A (αρχή) B (πέρας) Στη Γεωµετρία το διάνυσµα ορίζεται ως ένα προσανατολισµένο ευθύγραµµο τµήµα, δηλαδή ως ένα ευθύγραµµο τµήµα του οποίου τα άκρα θεωρούνται

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

ΣΕΙΡΕΣ TAYLOR. Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων. Πολυώνυµο είναι κάθε συνάρτηση της µορφής:

ΣΕΙΡΕΣ TAYLOR. Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων. Πολυώνυµο είναι κάθε συνάρτηση της µορφής: ΣΕΙΡΕΣ TAYLOR Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων Πολυώνυµο είναι κάθε συνάρτηση της µορφής: p( ) = a + a + a + a + + a, όπου οι συντελεστές α i θα θεωρούνται

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

7. Βασικά στοιχεία προγραµµατισµού.

7. Βασικά στοιχεία προγραµµατισµού. 7. Βασικά στοιχεία προγραµµατισµού. ΗΜ01-Θ1Γ Δίνονται οι παρακάτω έννοιες: 1. Λογικός τύπος δεδοµένων 2. Επιλύσιµο 3. Ακέραιος τύπος δεδοµένων 4. Περατότητα 5. Μεταβλητή 6. Ηµιδοµηµένο 7. Πραγµατικός τύπος

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

ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α.

ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α. ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α. 1. Αν το Α έχει την τιµή 10 και το Β την τιµή 20 τότε η έκφραση (Α > 8 ΚΑΙ Β < 20) Ή (Α > 10 Ή Β = 10) είναι αληθής 2. Σε περίπτωση εµφωλευµένων βρόχων, ο εσωτερικός

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

1. Να αναφέρετε ονοµαστικά τις λειτουργίες µε τις οποίες ο υπολογιστής µπορεί να επιτελέσει µε επιτυχία οποιαδήποτε επεξεργασία. Ï.Å.Ö.Å.

1. Να αναφέρετε ονοµαστικά τις λειτουργίες µε τις οποίες ο υπολογιστής µπορεί να επιτελέσει µε επιτυχία οποιαδήποτε επεξεργασία. Ï.Å.Ö.Å. 1 Γ' ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗ ΘΕΜΑ 1: Α. 1. Να αναφέρετε ονοµαστικά τις λειτουργίες µε τις οποίες ο υπολογιστής µπορεί να επιτελέσει µε επιτυχία

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

γλώσσα προγραµµατισµού Logo

γλώσσα προγραµµατισµού Logo γλώσσα προγραµµατισµού Logo προγράµµατα στη Logo Μέχρι τώρα είδαµε ότι για τη δηµιουργία ενός σχήµατος πληκτρολογούµε στο πλαίσιο εισαγωγής του Παραθύρου Εντολών µια σειρά από κατάλληλες εντολές. Στη συνέχεια

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

1ο. Η αριθµητική του υπολογιστή

1ο. Η αριθµητική του υπολογιστή 1ο. Η αριθµητική του υπολογιστή 1.1 Τί είναι Αριθµητική Ανάλυση Υπάρχουν πολλά προβλήµατα στη µαθηµατική επιστήµη για τα οποία δεν υπάρχουν αναλυτικές εκφράσεις λύσεων. Στις περιπτώσεις αυτές έχουν αναπτυχθεί

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

ΘΕΤΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ

ΘΕΤΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γιώργος Πρέσβης ΜΑΘΗΜΑΤΙΚΑ B ΛΥΚΕΙΟΥ ΘΕΤΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ ΚΕΦΑΛΑΙΟ Ο : ΕΞΙΣΩΣΗ ΕΥΘΕΙΑΣ ΕΠΑΝΑΛΗΨΗ Φροντιστήρια Φροντιστήρια ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ 1η Κατηγορία : Εξίσωση Γραμμής 1.1 Να εξετάσετε

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

Κεφάλαιο 7 Βασικά Θεωρήµατα του ιαφορικού Λογισµού

Κεφάλαιο 7 Βασικά Θεωρήµατα του ιαφορικού Λογισµού Σελίδα 1 από Κεφάλαιο 7 Βασικά Θεωρήµατα του ιαφορικού Λογισµού Στο κεφάλαιο αυτό θα ασχοληθούµε µε τα βασικά θεωρήµατα του διαφορικού λογισµού καθώς και µε προβλήµατα που µπορούν να επιλυθούν χρησιµοποιώντας

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

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΒΑΙΚΕ ΕΝΝΟΙΕ ΑΓΟΡΙΘΜΩΝ ΕΡΩΤΗΕΙ ΑΞΙΟΟΓΗΗ ΕΡΩΤΗΕΙ ΩΤΟΥ ΑΘΟΥ 1. ηµειώστε το γράµµα αν η πρόταση είναι σωστή και το γράµµα αν είναι λάθος. 1. Ο αλγόριθµος πρέπει να τερµατίζεται µετά από εκτέλεση πεπερασµένου

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

η σύνθεση ενός υπολογιστή

η σύνθεση ενός υπολογιστή ιδακτικό υλικό µαθητή η σύνθεση ενός υπολογιστή Αν παρατηρήσουµε έναν υπολογιστή βλέπουµε ότι αποτελείται από τα ακόλουθα µέρη: Οθόνη Μονάδα συστήµατος Ποντίκι Πληκτρολόγιο τη µονάδα συστήµατος, όπου βρίσκονται

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β. ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Σύνολο χαρακτήρων της Pascal Για

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ 29 ΜΑΪΟΥ 2013 ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ 29 ΜΑΪΟΥ 2013 ΕΚΦΩΝΗΣΕΙΣ Α1. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-6 και

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

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Θ.Ε. ΠΛΗ31 (2005-6) ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ #1 Στόχος Η εργασία επικεντρώνεται σε θέματα προγραμματισμού για Τεχνητή Νοημοσύνη και σε πρακτικά θέματα εξάσκησης σε Κατηγορηματική Λογική. Θέμα 1: Απλές Αναζητήσεις

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

Εισαγωγή στις Βάσεις εδοµένων και την Access

Εισαγωγή στις Βάσεις εδοµένων και την Access Μάθηµα 1 Εισαγωγή στις Βάσεις εδοµένων και την Access Τι είναι οι βάσεις δεδοµένων Μία βάση δεδοµένων (Β..) είναι µία οργανωµένη συλλογή πληροφοριών, οι οποίες είναι αποθηκευµένες σε κάποιο αποθηκευτικό

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

HY118- ιακριτά Μαθηµατικά. Παράδειγµα άµεσης απόδειξης. Μέθοδοι αποδείξεως για προτάσεις της µορφής εάν-τότε. 08 - Αποδείξεις

HY118- ιακριτά Μαθηµατικά. Παράδειγµα άµεσης απόδειξης. Μέθοδοι αποδείξεως για προτάσεις της µορφής εάν-τότε. 08 - Αποδείξεις HY118- ιακριτά Μαθηµατικά Παρασκευή, 06/03/2015 Αντώνης Α. Αργυρός e-mail: argyros@csd.uoc.gr Το υλικό των διαφανειών έχει βασιστεί σε διαφάνειες του Kees van Deemter, από το University of Aberdeen 3/8/2015

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

ιαχείριση Πληροφοριών στο ιαδίκτυο

ιαχείριση Πληροφοριών στο ιαδίκτυο ιαχείριση Πληροφοριών στο ιαδίκτυο Εργαστήριο (Φυλλάδιο 8) ΤΕΙ Καβάλας - Σχολή ιοίκησης & Οικονοµίας Τµήµα ιαχείρισης Πληροφοριών ιδάσκων: Μαρδύρης Βασίλειος, ιπλ. Ηλ. Μηχανικός & Μηχ. Υπολογιστών, MSc

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

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND)

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND) ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND) Ένωση Ξένων Συνόλων (Disjoint Sets with Union) S 1,, S k : ξένα υποσύνολα ενός συνόλου U δηλ., S i S j =, αν i j, και S 1 S k = U. Λειτουργίες που θέλουµε

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

ΣΧΕ ΙΑΣΜΟΣ ΕΠΙΦΑΝΕΙΑΣ Με το σχεδιασµό επιφάνειας (Custom επιφάνεια) µπορούµε να σχεδιάσουµε επιφάνειες και αντικείµενα που δεν υπάρχουν στους καταλόγους του 1992. Τι µπορούµε να κάνουµε µε το σχεδιασµό

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

προγραµµατίζοντας τον υπολογιστή

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

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

του και από αυτόν επιλέγουµε το φάκελο εµφανίζεται ένα παράθυρο παρόµοιο µε το ακόλουθο:

του και από αυτόν επιλέγουµε το φάκελο εµφανίζεται ένα παράθυρο παρόµοιο µε το ακόλουθο: διαχείριση αρχείων Οι περισσότερες εφαρµογές των Windows είναι προγραµµατισµένες, από τον κατασκευαστή τους, να προτείνουν ως περιοχή αποθήκευσης των εργασιών το φάκελο «Τα έγγραφά µου», που δηµιουργείται

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

ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΞΙΣΩΣΕΩΝ

ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΞΙΣΩΣΕΩΝ ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΞΙΣΩΣΕΩΝ Θα ξεκινήσουµε την παρουσίαση των γραµµικών συστηµάτων µε ένα απλό παράδειγµα από τη Γεωµετρία, το οποίο ϑα µας ϐοηθήσει στην κατανόηση των συστηµάτων αυτών και των συνθηκών

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

Το περιβάλλον προγραμματισμού MicroWorlds Pro

Το περιβάλλον προγραμματισμού MicroWorlds Pro Μενού επιλογών Το περιβάλλον προγραμματισμού MicroWorlds Pro Γραμμή εργαλείων Επιφάνεια εργασίας Περιοχή Καρτελών Κέντρο εντολών Εικόνα 2.1: Το περιβάλλον της MicroWorlds Pro. Καρτέλες Οι πρώτες εντολές

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

Το Ηλεκτρονικό Ταχυδροµείο (e-mail) είναι ένα σύστηµα που δίνει την δυνατότητα στον χρήστη να ανταλλάξει µηνύµατα αλλά και αρχεία µε κάποιον άλλο

Το Ηλεκτρονικό Ταχυδροµείο (e-mail) είναι ένα σύστηµα που δίνει την δυνατότητα στον χρήστη να ανταλλάξει µηνύµατα αλλά και αρχεία µε κάποιον άλλο Το Ηλεκτρονικό Ταχυδροµείο (e-mail) είναι ένα σύστηµα που δίνει την δυνατότητα στον χρήστη να ανταλλάξει µηνύµατα αλλά και αρχεία µε κάποιον άλλο χρήστη µέσω υπολογιστή άνετα γρήγορα και φτηνά. Για να

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

3. Σηµειώσεις Access. # Εισαγωγή ψηφίου ή κενού διαστήµατος. Επιτρέπονται τα ση-

3. Σηµειώσεις Access. # Εισαγωγή ψηφίου ή κενού διαστήµατος. Επιτρέπονται τα ση- Μάθηµα 3 Προχωρηµένες ιδιότητες πεδίων Μάσκες εισαγωγής Οι ιδιότητες Μορφή και Μάσκα εισαγωγής περιγράφονται µαζί γιατί έχουν κοινά χαρακτηριστικά που αφορούν την εµφάνιση. Με την ιδιότητα Μορφή καθορίζουµε

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

ΑΝΑΖΗΤΗΣΗ ΣΕ ΗΛΕΚΤΡΟΝΙΚΕΣ ΒΙΒΛΙΟΘΗΚΕΣ

ΑΝΑΖΗΤΗΣΗ ΣΕ ΗΛΕΚΤΡΟΝΙΚΕΣ ΒΙΒΛΙΟΘΗΚΕΣ ΑΝΑΖΗΤΗΣΗ ΣΕ ΗΛΕΚΤΡΟΝΙΚΕΣ ΒΙΒΛΙΟΘΗΚΕΣ Μία από τις πιο σηµαντικές υπηρεσίες που προσφέρει το διαδίκτυο στην επιστηµονική κοινότητα είναι η αποµακρυσµένη πρόσβαση των χρηστών σε ηλεκτρονικές βιβλιοθήκες

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

Επίλυση προβληµάτων. Περιγραφή προβληµάτων Αλγόριθµοι αναζήτησης

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

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

1.1.3 t. t = t2 - t1 1.1.4 x2 - x1. x = x2 x1 . . 1

1.1.3 t. t = t2 - t1 1.1.4  x2 - x1. x = x2 x1 . . 1 1 1 o Κεφάλαιο: Ευθύγραµµη Κίνηση Πώς θα µπορούσε να περιγραφεί η κίνηση ενός αγωνιστικού αυτοκινήτου; Πόσο γρήγορα κινείται η µπάλα που κλώτσησε ένας ποδοσφαιριστής; Απαντήσεις σε τέτοια ερωτήµατα δίνει

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

Σηµειώσεις Γραµµικής Άλγεβρας

Σηµειώσεις Γραµµικής Άλγεβρας Σηµειώσεις Γραµµικής Άλγεβρας Κεφάλαιο Συστήµατα Γραµµικών Εξισώσεων και Πίνακες Εισαγωγή στα Συστήµατα Γραµµικών Εξισώσεων Η µελέτη των συστηµάτων γραµµικών εξισώσεων και των λύσεών τους είναι ένα από

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

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

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015 Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015 Βάλβης Δημήτριος Μηχανικός Πληροφορικής ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις 1-5 και δίπλα

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΠΑΙΓΝΙΩΝ ΠΝΕΠΙΣΤΗΜΙΟ ΜΚΕ ΟΝΙΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜ ΕΦΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙ ΠΙΓΝΙΩΝ Εξετάσεις 13 Φεβρουαρίου 2004 ιάρκεια εξέτασης: 2 ώρες (13:00-15:00) ΘΕΜ 1 ο (2.5) α) Για δύο στρατηγικές

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΗΣ ΚΡΗΤΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΗΣ ΚΡΗΤΗΣ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΑΓΩΓΗΣ- ΠΑΙΔΑΓΩΓΙΚΟ ΤΜΗΜΑ ΔΗΜΟΤΙΚΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Εργασία για το σεµινάριο «Στατιστική περιγραφική εφαρµοσµένη στην ψυχοπαιδαγωγική(β06σ03)» ΤΙΤΛΟΣ: «ΜΕΛΕΤΗ ΠΕΡΙΓΡΑΦΙΚΗΣ

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

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης ΚΕΦΑΛΑΙΟ 1ο 3ο 1. Συμπληρώστε τα κενά με τη λέξη που λείπει. α. Ένα πρόβλημα το χωρίζουμε σε άλλα απλούστερα, όταν είναι ή όταν έχει τρόπο επίλυσης. β. Η επίλυση ενός προβλήματος προϋποθέτει την του. γ.

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

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Βασικές Έννοιες Προγραμματισμού Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Αριθμητικά συστήματα Υπάρχουν 10 τύποι ανθρώπων: Αυτοί

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

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

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

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

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Ροή Δικτύου Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μοντελοποίηση Δικτύων Μεταφοράς Τα γραφήματα χρησιμοποιούνται συχνά για την μοντελοποίηση

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

Μια οµάδα m σηµείων προσφοράς. Μια οµάδα n σηµείων ζήτησης. Οτιδήποτε µετακινείται απο σηµείο προσφοράς σε σηµείο ζήτησης είναι συνάρτηση κόστους.

Μια οµάδα m σηµείων προσφοράς. Μια οµάδα n σηµείων ζήτησης. Οτιδήποτε µετακινείται απο σηµείο προσφοράς σε σηµείο ζήτησης είναι συνάρτηση κόστους. Να βρεθεί ΠΓΠ ώστε να ελαχιστοποιηθεί το κόστος µεταφοράς (το πρόβληµα βασίζεται σε αυτό των Aarik και Randolph, 975). Λύση: Για κάθε δυϊλιστήριο i (i=, 2, ) και πόλη j (j=, 2,, 4), θεωρούµε την µεταβλητή

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

Outlook Express-User Instructions.doc 1

Outlook Express-User Instructions.doc 1 Οδηγίες προς τους υπαλλήλους του ήµου Θεσσαλονίκης για την διαχείριση της ηλεκτρονικής τους αλληλογραφίας µε το Outlook Express (Ver 1.0 22-3-2011) (Για οποιοδήποτε πρόβληµα ή απορία επικοινωνήστε µε τον

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

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Άσκηση 1 Αποδείξτε τη µεταβατική και τη συµµετρική ιδιότητα του Θ. Λύση Μεταβατική Ιδιότητα (ορισµός): Αν f(n) = Θ(g(n)) και g(n) = Θ(h(n)) τότε f(n)=θ(h(n)). Για

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

γράφοντας µε τον υπολογιστή

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

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

Κεφάλαιο 9 ο Κ 5, 4 4, 5 0, 0 0,0 5, 4 4, 5. Όπως βλέπουµε το παίγνιο δεν έχει καµιά ισορροπία κατά Nash σε αµιγείς στρατηγικές διότι: (ΙΙ) Α Κ

Κεφάλαιο 9 ο Κ 5, 4 4, 5 0, 0 0,0 5, 4 4, 5. Όπως βλέπουµε το παίγνιο δεν έχει καµιά ισορροπία κατά Nash σε αµιγείς στρατηγικές διότι: (ΙΙ) Α Κ Κεφάλαιο ο Μεικτές Στρατηγικές Τώρα θα δούµε ένα παράδειγµα στο οποίο κάθε παίχτης έχει τρεις στρατηγικές. Αυτό θα µπορούσε να είναι η µορφή που παίρνει κάποιος µετά που έχει απαλείψει όλες τις αυστηρά

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

Κεφάλαιο 13ο Eπαναλαµβανόµενα παίγνια (Repeated Games)

Κεφάλαιο 13ο Eπαναλαµβανόµενα παίγνια (Repeated Games) Κεφάλαιο 13ο Eπαναλαµβανόµενα παίγνια (Repeated Gaes) Το δίληµµα των φυλακισµένων, όπως ξέρουµε έχει µια και µοναδική ισορροπία η οποία είναι σε αυστηρά κυρίαρχες στρατηγικές. C N C -8, -8 0, -10 N -10,

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

ÑÏÕËÁ ÌÁÊÑÇ. Β. Να αναφέρετε τις κυριότερες τυποποιηµένες τεχνικές σχεδίασης αλγορίθµων. ΜΟΝΑ ΕΣ 3

ÑÏÕËÁ ÌÁÊÑÇ. Β. Να αναφέρετε τις κυριότερες τυποποιηµένες τεχνικές σχεδίασης αλγορίθµων. ΜΟΝΑ ΕΣ 3 1 Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΘΕΜΑ 1 Ο ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Α. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-5 και δίπλα τη λέξη Σωστό

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

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης Φύλλα εργασίας MicroWorlds Pro Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο Β. Χ. Χρυσοχοΐδης Πρόεδρος Συλλόγου Εκπαιδευτικών Πληροφορικής Φλώρινας 2 «Σχεδίαση και ανάπτυξη δραστηριοτήτων

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

e-mail@p-theodoropoulos.gr

e-mail@p-theodoropoulos.gr Ασκήσεις Μαθηµατικών Κατεύθυνσης Γ Λυκείου Παναγιώτης Λ. Θεοδωρόπουλος Σχολικός Σύµβουλος Μαθηµατικών e-mail@p-theodoropoulos.gr Στην εργασία αυτή ξεχωρίζουµε και µελετάµε µερικές περιπτώσεις ασκήσεων

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

Πληρουορική Γ Γσμμασίοσ

Πληρουορική Γ Γσμμασίοσ Πληρουορική Γ Γσμμασίοσ Προγραμματισμός και Αλγόριθμοι Από το και τημ Χελώμα στημ Ευριπίδης Βραχνός http://evripides.mysch.gr/ 2014 2015 1 Προγραμματισμός Ζάννειο Πρότυπο Πειραματικό Γυμνάσιο Πειραιά Ενότητα:

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

Ο είκτης Συσχέτισης. Υπάρχουν πολλές οι έρευνες στις οποίες µας ενδιαφέρει να µελετήσουµε αν υπάρχει ΑΛΛΗΛΕΞΑΡΤΗΣΗ µεταξύ δύο µεταβλητών

Ο είκτης Συσχέτισης. Υπάρχουν πολλές οι έρευνες στις οποίες µας ενδιαφέρει να µελετήσουµε αν υπάρχει ΑΛΛΗΛΕΞΑΡΤΗΣΗ µεταξύ δύο µεταβλητών Κεφάλαιο 8 Ο είκτης Συσχέτισης 1 Η έννοια της Αλληλεξάρτησης Υπάρχουν πολλές οι έρευνες στις οποίες µας ενδιαφέρει να µελετήσουµε αν υπάρχει ΑΛΛΗΛΕΞΑΡΤΗΣΗ µεταξύ δύο µεταβλητών ηλαδή, µας ενδιαφέρει να

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2010 Ι ΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙ ΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Ανάθεση: Πέµπτη 15 Απριλίου 2010, 11:00 (πρωί)

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

Τεχνικό εγχειρίδιο εφαρµογής διαχείρισης διαδικτυακού κόµβου: INNET

Τεχνικό εγχειρίδιο εφαρµογής διαχείρισης διαδικτυακού κόµβου: INNET 1 version v5.4 Εγχειρίδιο ιαχείρισης 2012 Τεχνικό εγχειρίδιο εφαρµογής διαχείρισης διαδικτυακού κόµβου: INNET To παρόν εγχειρίδιο αποτελεί πνευµατική ιδιοκτησία της INVENTICS A.E. Απευθύνεται αποκλειστικά

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΠΕΜΠΤΟ Triggers, Stored procedures Γιώργος Μαρκοµανώλης Περιεχόµενα Triggers-Ενηµέρωση δεδοµένων άλλων πινάκων... 1 Ασφάλεια...

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

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

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

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

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Σχολή Θετικών Επιστημών Τμ. Πληροφορικής. Διδάσκων: Ι. Η. Λαγαρής. Εισαγωγή

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Σχολή Θετικών Επιστημών Τμ. Πληροφορικής. Διδάσκων: Ι. Η. Λαγαρής. Εισαγωγή Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Σχολή Θετικών Επιστημών Τμ. Πληροφορικής Διδάσκων: Ι. Η. Λαγαρής 1.0 Solaris και UNIX Εισαγωγή Το UNIX είναι ένα λειτουργικό σύστημα που αναπτύχθηκε τις δεκαετίες

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

1.1 Θεωρητική εισαγωγή

1.1 Θεωρητική εισαγωγή ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ ΛΟΓΙΚΕΣ ΠΥΛΕΣ NOT, AND, NAND Σκοπός: Να εξοικειωθούν οι φοιτητές µε τα ολοκληρωµένα κυκλώµατα της σειράς 7400 για τη σχεδίαση και υλοποίηση απλών λογικών συναρτήσεων.

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

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ Μ. Γρηγοριάδου Ρ. Γόγουλου Ενότητα: Η Διδασκαλία του Προγραμματισμού Περιεχόμενα Παρουσίασης

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

Τα Προγράµµατα υναµικής Γεωµετρίας και η Χρήση τους στη ιδασκαλία της Άλγεβρας και της Ανάλυσης στη Μέση Εκπαίδευση

Τα Προγράµµατα υναµικής Γεωµετρίας και η Χρήση τους στη ιδασκαλία της Άλγεβρας και της Ανάλυσης στη Μέση Εκπαίδευση Τα Προγράµµατα υναµικής Γεωµετρίας και η Χρήση τους στη ιδασκαλία της Άλγεβρας και της Ανάλυσης στη Μέση Εκπαίδευση Αριστοτέλης Μακρίδης Μαθηµατικός, Επιµορφωτής των Τ.Π.Ε Αποσπασµένος στην ενδοσχολική

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

Ο ΗΓΙΕΣ ΧΡΗΣΤΗ AR-7664

Ο ΗΓΙΕΣ ΧΡΗΣΤΗ AR-7664 Ο ΗΓΙΕΣ ΧΡΗΣΤΗ AR-7664 ΕΠΕΞΗΓΗΣΗ ΠΛΗΚΤΡΩΝ ΚΑΙ LED ΠΛΗΚΤΡΟΛΟΓΙΟΥ POWER : TROUBLE : ARM DISARM : Είναι αναµµένο όταν έχουµε τροφοδοσία 220V και µπαταρία. Αναβοσβήνει όταν δεν υπάρχει µπαταρία. Είναι σβηστό

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

Οι θεµελιώδεις έννοιες που απαιτούνται στη Επαγωγική Στατιστική (Εκτιµητική, ιαστήµατα Εµπιστοσύνης και Έλεγχοι Υποθέσεων) είναι:

Οι θεµελιώδεις έννοιες που απαιτούνται στη Επαγωγική Στατιστική (Εκτιµητική, ιαστήµατα Εµπιστοσύνης και Έλεγχοι Υποθέσεων) είναι: Κατανοµές ειγµατοληψίας 1.Εισαγωγή Οι θεµελιώδεις έννοιες που απαιτούνται στη Επαγωγική Στατιστική (Εκτιµητική, ιαστήµατα Εµπιστοσύνης και Έλεγχοι Υποθέσεων) είναι: 1. Στατιστικής και 2. Κατανοµής ειγµατοληψίας

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

8. Επιλογή και επανάληψη

8. Επιλογή και επανάληψη 8. Επιλογή και επανάληψη 8.1 Εντολές Επιλογής ΕΣΕΠ06-Θ1Β5 Η ιεραρχία των λογικών τελεστών είναι µικρότερη των αριθµητικών. ΕΣ07-Θ1Γ5 Η σύγκριση λογικών δεδοµένων έχει έννοια µόνο στην περίπτωση του ίσου

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

Τύποι, Σταθερές και Μεταβλητές

Τύποι, Σταθερές και Μεταβλητές ΚΕΦΑΛΑΙΟ 3 Τύποι, Σταθερές και Μεταβλητές Η έννοια της μεταβλητής Γενικά μπορούμε να πούμε ότι η έννοια της μεταβλητής στον προγραμματισμό είναι άμεσα συνδεδεμένη με την έννοια που αυτή έχει σε μαθηματικό

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ) 2010 ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α Α1. ίνονται τα παρακάτω τµήµατα αλγορίθµου σε φυσική γλώσσα. 1. Αν η

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

ΑΡΧΕΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ

ΑΡΧΕΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ http://www.economics.edu.gr 1 ΑΡΧΕΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ ΚΕΦΑΛΑΙΟ 1 ο : ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΣΚΗΣΕΙΣ ΥΠΟ ΕΙΓΜΑΤΑ ( τρόποι επίλυσης παρατηρήσεις σχόλια ) ΑΣΚΗΣΗ 1 Έστω ο πίνακας παραγωγικών δυνατοτήτων µιας

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

ΥΠ.ΕΣ. -.Μ.Η.Ε.Σ. ΕΓΧΕΙΡΙ ΙΟ ΧΡΗΣΗΣ ΕΦΑΡΜΟΓΗΣ ΛΗΞΙΑΡΧΕΙΟΥ

ΥΠ.ΕΣ. -.Μ.Η.Ε.Σ. ΕΓΧΕΙΡΙ ΙΟ ΧΡΗΣΗΣ ΕΦΑΡΜΟΓΗΣ ΛΗΞΙΑΡΧΕΙΟΥ ΥΠ.ΕΣ. -.Μ.Η.Ε.Σ. ΕΓΧΕΙΡΙ ΙΟ ΧΡΗΣΗΣ ΕΦΑΡΜΟΓΗΣ ΛΗΞΙΑΡΧΕΙΟΥ V 1.3 εκέµβριος 2012 Πίνακας Περιεχοµένων 1. Εισαγωγή.. σελ. 3 2. Σύνδεση για πρώτη φορά µε την εφαρµογή 4 3. Είσοδος στην εφαρµογή 9 4. Αναζήτηση

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

ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 05/03/2012 ΑΠΑΝΤΗΣΕΙΣ. ΘΕΜΑ Α Α1. Α2. 1. ΣΩΣΤΟ 1 στ 2. ΛΑΘΟΣ 2 δ 3. ΣΩΣΤΟ 3 ε 4. ΛΑΘΟΣ 4 β 5. ΣΩΣΤΟ 5 γ

ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 05/03/2012 ΑΠΑΝΤΗΣΕΙΣ. ΘΕΜΑ Α Α1. Α2. 1. ΣΩΣΤΟ 1 στ 2. ΛΑΘΟΣ 2 δ 3. ΣΩΣΤΟ 3 ε 4. ΛΑΘΟΣ 4 β 5. ΣΩΣΤΟ 5 γ ΜΑΘΗΜΑ / ΤΑΞΗ : ΑΕΠΠ / ΑΠΟΦΟΙΤΟΙ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 05/03/2012 ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α Α1. Α2. 1. ΣΩΣΤΟ 1 στ 2. ΛΑΘΟΣ 2 δ 3. ΣΩΣΤΟ 3 ε 4. ΛΑΘΟΣ 4 β 5. ΣΩΣΤΟ 5 γ Α3. α. (σελ. 183-184) Στοίβα: ώθηση, απώθηση Ουρά:

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

ΚΕΦΑΛΑΙΟ 1 Ο ΠΙΘΑΝΟΤΗΤΕΣ

ΚΕΦΑΛΑΙΟ 1 Ο ΠΙΘΑΝΟΤΗΤΕΣ ΚΕΦΛΙΟ Ο ΠΙΘΝΟΤΗΤΕΣ. Εισαγωγή Στην Θεωρία Πιθανοτήτων, ξεκινάµε από το λεγόµενο πείραµα δηλαδή µια διαδικασία η οποία µπορεί να επαναληφθεί θεωρητικά άπειρες φορές, κάτω από τις ίδιες ουσιαστικά συνθήκες,

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

ΣΥΝΤΟΜΕΣ Ο ΗΓΙΕΣ ΧΡΗΣΗΣ DVR 1093/16

ΣΥΝΤΟΜΕΣ Ο ΗΓΙΕΣ ΧΡΗΣΗΣ DVR 1093/16 ΣΥΝΤΟΜΕΣ Ο ΗΓΙΕΣ ΧΡΗΣΗΣ DVR 1093/16 Πλήκτρα Χειρισµού Συσκευής 1093/016 Θύρα USB για σύνδεση συσκευών αποθήκευσης ΜΟΝΟ. ΠΡΟΣΟΧΗ : Το ποντίκι συνδέεται στην θύρα USB στο πίσω µέρος της συσκευής Πλήκτρα

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

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Τ.Ε.Ι ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ & ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Πτυχιακή εργασία του φοιτητή Γιαννακίδη Αποστόλη Επιβλέπων καθηγητής Τσούλος

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

ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ

ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ ενδρικές οµές για Υλοποίηση υναµικών Λεξικών υναµικά λεξικά λειτουργίες LookUp( ), Insert( ) και Delete( ) Αναζητούµε δένδρα για την αποτελεσµατική υλοποίηση

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

ΠΡΟΒΛΗΜΑΤΑ ΜΕΤΑΦΟΡΑΣ

ΠΡΟΒΛΗΜΑΤΑ ΜΕΤΑΦΟΡΑΣ (Transportation Problems) Βασίλης Κώστογλου E-mail: vkostogl@it.teithe.gr URL: www.it.teithe.gr/~vkostogl Περιγραφή Ένα πρόβλημα μεταφοράς ασχολείται με το πρόβλημα του προσδιορισμού του καλύτερου δυνατού

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

Κεφάλαιο 1.Εντολές κίνησης

Κεφάλαιο 1.Εντολές κίνησης Προγραμματίζω με το ΒΥΟΒ 1 Κεφάλαιο 1.Εντολές κίνησης Από το μάθημα της Φυσικής γνωρίζουμε ότι κίνηση σημαίνει αλλαγή της θέσης ενός αντικειμένου. Οι εντολές κίνησης που μας παρέχει το ΒΥΟΒ χωρίζονται

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

ΜΕΛΕΤΗ ΣΥΝΑΡΤΗΣΗΣ. Άρτια και περιττή συνάρτηση. Παράδειγµα: Η f ( x) Παράδειγµα: Η. x R και. Αλγεβρα Β Λυκείου Πετσιάς Φ.- Κάτσιος.

ΜΕΛΕΤΗ ΣΥΝΑΡΤΗΣΗΣ. Άρτια και περιττή συνάρτηση. Παράδειγµα: Η f ( x) Παράδειγµα: Η. x R και. Αλγεβρα Β Λυκείου Πετσιάς Φ.- Κάτσιος. ΜΕΛΕΤΗ ΣΥΝΑΡΤΗΣΗΣ Πριν περιγράψουµε πως µπορούµε να µελετήσουµε µια συνάρτηση είναι αναγκαίο να δώσουµε µερικούς ορισµούς. Άρτια και περιττή συνάρτηση Ορισµός : Μια συνάρτηση fµε πεδίο ορισµού Α λέγεται

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

Σενάριο 17: Παιχνίδι μνήμης με εικόνες

Σενάριο 17: Παιχνίδι μνήμης με εικόνες Σενάριο 17: Παιχνίδι μνήμης με εικόνες Φύλλο Εργασίας Τίτλος: Παιχνίδι μνήμης με εικόνες Γνωστικό Αντικείμενο: Εφαρμογές Πληροφορικής-Υπολογιστών Διδακτική Ενότητα: Διερευνώ - Δημιουργώ Ανακαλύπτω, Συνθετικές

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

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Óõíåéñìüò ΕΚΦΩΝΗΣΕΙΣ

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Óõíåéñìüò ΕΚΦΩΝΗΣΕΙΣ 1 ΘΕΜΑ 1 o Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ Α. Να γράψετε στην κόλλα σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1 5 και δίπλα τη λέξη

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

ÏÅÖÅ. Β. Να αναφέρετε τις κυριότερες τυποποιηµένες τεχνικές σχεδίασης αλγορίθµων. ΜΟΝΑ ΕΣ 3

ÏÅÖÅ. Β. Να αναφέρετε τις κυριότερες τυποποιηµένες τεχνικές σχεδίασης αλγορίθµων. ΜΟΝΑ ΕΣ 3 1 Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΘΕΜΑ 1 Ο ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Α. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-5 και δίπλα τη λέξη Σωστό

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

ΜΑΘΗΜΑΤΙΚΑ B ΛΥΚΕΙΟΥ ΘΕΤΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ

ΜΑΘΗΜΑΤΙΚΑ B ΛΥΚΕΙΟΥ ΘΕΤΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γιώργος Πρέσβης ΜΑΘΗΜΑΤΙΚΑ B ΛΥΚΕΙΟΥ ΘΕΤΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ ΚΕΦΑΛΑΙΟ 3 Ο : ΚΩΝΙΚΕΣ ΤΟΜΕΣ ΕΠΑΝΑΛΗΨΗ Φροντιστήρια Φροντιστήρια ΜΕΘΟΔΟΛΟΓΙΑ ΠΑΡΑΔΕΙΓΜΑΤΑ η Κατηγορία : Ο Κύκλος και τα στοιχεία

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

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση ΚΕΦΑΛΑΙΟ 18 18 Μηχανική Μάθηση Ένα φυσικό ή τεχνητό σύστηµα επεξεργασίας πληροφορίας συµπεριλαµβανοµένων εκείνων µε δυνατότητες αντίληψης, µάθησης, συλλογισµού, λήψης απόφασης, επικοινωνίας και δράσης

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