Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού

Σχετικά έγγραφα
Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας

Κεφάλαιο 5 Αξιωματική Σημασιολογία και Απόδειξη Ορθότητας Προγραμμάτων

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

Κεφάλαιο 6 Εισαγωγή στον Προγραμματισμό. 26-Jun-15 ΑΕΠΠ - Καραμαούνας Π. 1

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

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

ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΨΗΦΙΑΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ. Κεφάλαιο 3

ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος

HY118-Διακριτά Μαθηματικά. Προτασιακός Λογισμός. Προηγούμενη φορά. Βάσεις της Μαθηματικής Λογικής. 02 Προτασιακός Λογισμός

Ανάπτυξη και Σχεδίαση Λογισμικού

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

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

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

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

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 6: Προτασιακός Λογισμός

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Σημασιολογική Ανάλυση

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

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

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

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

a n + 6a n a n 2 + 8a n 3 = 0, a 0 = 1, a 1 = 2, a 2 = 8

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

ΑΕΠΠ ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 6.3 Φυσικές και Τεχνιτές Γλώσσες 6.4 Τεχνικές Σχεδίασης Προγραμμάτων

ΑΝΑΛΥΣΗ 1 ΕΙΚΟΣΤΟ ΕΚΤΟ ΜΑΘΗΜΑ, Μ. Παπαδημητράκης.

Υπολογίσιμες Συναρτήσεις

Πληροφορική 2. Αλγόριθμοι

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1)

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 2 ο. ΑΛΓΕΒΡΑ Boole ΛΟΓΙΚΑ ΚΥΚΛΩΜΑΤΑ

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

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

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

Υπολογιστικά & Διακριτά Μαθηματικά

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

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 7: Ασυμφραστικές Γλώσσες (Γλώσσες Ελεύθερες Συμφραζομένων)

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

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

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

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

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

Εισαγωγή στην πληροφορική

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

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

Τεχνολογία Λογισµικού Ι Κεφάλαιο 5

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

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

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

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

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

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

Ψευδοκώδικας. November 7, 2011

2.1 Δραστηριότητα: Εισαγωγή στο όριο συνάρτησης σε σημείο

Εισαγωγή στις Βάσεις Δεδομζνων II

Συνδυαστικά Λογικά Κυκλώματα

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

n true false if t then t else t u t t b t emptylist cons t t t t λx.t u ::= head tail isempty

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

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

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

Συγγραφή κώδικα, δοκιμασία, επαλήθευση. Γιάννης Σμαραγδάκης

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

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Θέματα Μεταγλωττιστών

4. Παραγώγιση πεπερασμένων διαφορών Σειρά Taylor Πολυωνυμική παρεμβολή

ΔΟΜΗ ΕΠΙΛΟΓΗΣ. Οι διάφορες εκδοχές της

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

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Μάθημα: Δ3. Δίκτυα Γνώσης και Σημασιολογικός Ιστός. Διάλεξη 01 & 02. Δρ. Γεώργιος Χρ. Μακρής

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

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

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

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

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

Εισαγωγή στην πληροφορική

Αριθμητική Ανάλυση & Εφαρμογές

Μάθημα: Δ3. Δίκτυα Γνώσης και Σημασιολογικός Ιστός. Διάλεξη 02 & 03. Δρ. Γεώργιος Χρ. Μακρής

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

Θεωρία Υπολογισμού Άρτιοι ΑΜ. Διδάσκων: Σταύρος Κολλιόπουλος. eclass.di.uoa.gr. Περιγραφή μαθήματος

Θεωρία Υπολογισμού Αρτιοι ΑΜ Διδάσκων: Σταύρος Κολλιόπουλος eclass.di.uoa.gr

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

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

Pascal - Βασικές Έννοιες

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

Transcript:

Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1

Εισαγωγή Γνώση γλώσσας από τη σκοπιά Του συντακτικού (syntax) Περιγραφή με γραμματικές χωρίς συμφραζόμενα ή με επεκτάσεις τους Της σημασιολογίας (semantics) Περιγραφή με τυπικές (μαθηματικές) μεθόδους 2

Παράδειγμα 3.1 Περίπτωση βρόγχου while, με μορφή while <λογική συνθήκη> do <εντολές> Άτυπη περιγραφή σημασιολογίας «Αρχικά γίνεται έλεγχος της λογικής συνθήκης. Αν το αποτέλεσμα είναι αληθές, τότε γίνεται είσοδος στο βρόχο και εκτέλεση των εντολών που βρίσκονται μέσα σε αυτόν, μία φορά. Έλεγχος και πάλι της συνθήκης. Για ψευδή συνθήκη, ο βρόγχος παρακάμπτεται και ο έλεγχος μεταφέρεται στην πρώτη εντολή που ακολουθεί τη δομή του βρόχου». 3

Παράδειγμα 3.2 Ερώτηση: Είναι στην ALGOL 60 ισοδύναμες οι εκφράσεις x+f(x) και f(x)+x; Απάντηση: Εξαρτάται από το αν η f αλλάζει την τιμή του x. Εάν ναι, τότε η τιμή των δύο παραπάνω εκφράσεων είναι διαφορετική ανάλογα με τη σειρά που η υλοποίηση της γλώσσας υπολογίζει τις τιμές των x και f(x). 4

Μαθηματική Θεωρία Αναγκαία για την εξασφάλιση Ορθής περιγραφής και υλοποίησης γλωσσών προγραμματισμού Συστηματικής ανάπτυξης και απόδειξης ορθότητας προγραμμάτων Ανάλυσης και αξιολόγησης υπαρχόντων γλωσσών προγραμματισμού Σχεδιασμού νέων, απλούστερων και πιο ισχυρών γλωσσών προγραμματισμού 5

Μέθοδοι Σημασιολογίας Μηχανική (operational semantics) Αξιωματική (axiomatic semantics) Δηλωτική (denotational semantics) 6

Μηχανική Σημασιολογία - 1 «Αφηρημένο μοντέλο μηχανής», που αποτελείται από την κατάσταση (state) και από σύνολο βασικών εντολών. Η σημασιολογία μιας γλώσσας προγραμματισμού ορίζεται με βάση το μοντέλο αυτό. 7

Μηχανική Σημασιολογία - 2 Βασική ιδέα Απλό μοντέλο Δεν αφήνει περιθώρια για παρανοήσεις Η σημασιολογία μιας γλώσσας καθορίζεται ως μετάφραση βασικών εντολών της στη γλώσσα του αφηρημένου μοντέλου Γλώσσες PL/1 (μέθοδος VDM), ALGOL 68, κλπ 8

Αξιωματική Σημασιολογία - 1 Ένα αξίωμα συνδέεται με κάθε είδος εντολής της γλώσσας προγραμματισμού προσδιορίζει τι θεωρείται αληθές μετά την εκτέλεση της εντολής, σε σχέση με όσα ίσχυαν πριν από την εκτέλεση της 9

Αξιωματική Σημασιολογία - 2 Παράδειγμα Βρόχος: while B do C B: έκφραση C: εντολή Όταν ο βρόχος ολοκληρωθεί (εάν ποτέ ολοκληρωθεί) η τιμή της έκφρασης Β θα είναι ψευδής. 10

Αξιωματική Σημασιολογία - 3 Προτέρημα Τα αξιώματα, που εισάγονται, εκφράζονται στην ίδια γλώσσα προγραμματισμού (με ελάχιστες αλλαγές στο συντακτικό της). Εάν η απόδειξη της ορθότητας ενός προγράμματος γίνει μέλημα του ίδιου του προγραμματιστή, τότε η απόδειξη και ο προγραμματισμός γίνονται στην ίδια γλώσσα. 11

Ενδεικτική Σημασιολογία «Συναρτήσεις υπολογισμού» Αντιστοιχίζουν τα συντακτικά στοιχεία της γλώσσας σε γνωστά μαθηματικά αντικείμενα Αριθμούς, τιμές αλήθειας, συναρτήσεις κλπ Ορίζονται αναδρομικά Η τιμή, που λαμβάνει μία έκφραση της γλώσσας, καθορίζεται με βάση τις τιμές των υπο-εκφράσεων, που την αποτελούν 12

Παρατηρήσεις για τις Μεθόδους Αποτελούν αποδεκτές τεχνικές για τον καθορισμό της σημασιολογίας μιας γλώσσας προγραμματισμού Διαφέρουν ως προς τη φιλοσοφία τους Μηχανική Υλοποίηση γλώσσας Αξιωματική Αποδεκτή από προγραμματιστές Ενδεικτική Χρησιμοποίηση από σχεδιαστές γλώσσας 13

Παράδειγμα Δυαδικές Ακολουθίες Συντακτικό γλώσσας δυαδικών ακολουθιών Περιγραφή με context-free γραμματική S ::= 0 1 S0 S1 14

Παράδειγμα Δυαδικές Ακολουθίες Seq Είναι το σύνολο των ακολουθιών, που παράγονται με βάση τον ορισμό Αποτελείται από πεπερασμένες ακολουθίες των ψηφίων 0 και 1 Δεν γνωρίζουμε (ακόμη) το νόημα τους 15

Παράδειγμα Δυαδικές Ακολουθίες Ενδεικτική σημασιολογία Αντιστοίχηση σε κάθε δυαδική ακολουθία ενός μοναδικού φυσικού αριθμού Ορισμός συνάρτησης, που μετατρέπει κάθε ακολουθία σε φυσικό αριθμό. Συμβολισμός συνάρτησης με [[ ]] 16

Παράδειγμα Στη συγκεκριμένη περίπτωση, η [[ ]] μετατρέπει ακολουθίες δυαδικών ψηφίων σε φυσικούς αριθμούς ([[ ]] : Seq Nat) Ορίζεται ως: [[0]] = 0 [[1]] = 1 [[S0]] = 2 X [[S]] [[S1]] = 2 X [[S]] +1 17

Παράδειγμα 3.3 Ακολουθία 1100 [[ 1100 ]] = 0 = 2 Χ [[110]] = 2 Χ (2 Χ [[11]]) = 2 Χ (2 Χ (2 Χ [[1]] +1) = 2 Χ (2 Χ (2 Χ 1 +1)) = 12 18

Σχόλια Υπάρχει μία εξίσωση για κάθε κανόνα του συντακτικού Δεν είναι προφανές ότι οι εξισώσεις ορίζουν μία μαθηματική συνάρτηση Το σύμβολο [[ ]] εμφανίζεται και στη δεξιά και στην αριστερή πλευρά των εξισώσεων 19

Εξισώσεις [[0]]=0 Η εξίσωση δεν είναι κυκλική Το 0 στα αριστερά είναι σύμβολο της γλώσσαςαντικείμενο (object language) Την μελετάμε και επιθυμούμε να της αποδώσουμε νόημα Σύνολο δυαδικών ακολουθιών ή μία οποιαδήποτε γλώσσα προγραμματισμού (π.χ. C ή Pascal) Το 0 στα δεξιά είναι ο φυσικός αριθμός, που αποτελεί το νόημα της ακολουθίας 0. 20

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

Συνθεσιμότητα Το νόημα κάθε σύνθετης έκφρασης δίνεται ως συνάρτηση των νοημάτων των υποεκφράσεων που την αποτελούν. 22

Παράδειγμα 3.4 Οι εξισώσεις στον ορισμό της σημασιολογίας δυαδικών ακολουθιών, υπακούουν στον κανόνα της συνθεσιμότητας, γιατί ανάγουν τον υπολογισμό της σημασιολογίας των εκφράσεων S0 και S1 στην σημασιολογία της απλούστερης έκφρασης S. 23

Παράδειγμα 3.4 [[while B do C]]=[[if B then (C; while B do C)]] Ο παραπάνω ορισμός δεν υπακούει στον κανόνα της συνθεσιμότητας. Η έκφραση εντός του συμβόλου [[ ]] στη δεξιά πλευρά δεν αποτελεί υπο-έκφραση αυτής στην αριστερή. 24

Παράδειγμα 3.4 [[while B do C]]=...[[Β]]...[[C]] [[while B do C)]].. Δεν ισχύει και πάλι ο κανόνας συνθεσιμότητας. Η εξίσωση όμως λύνεται της Χρήση της λύσης για ορισμό σημασιολογίας του while, που υπακούει στον κανόνα της συνθεσιμότητας 25