Βασικά στοιχεία γλώσσας προγραμματισμού Κέρος Α. Ιωάννης Καθηγητής Πληροφορικής ΠΕ19 1 ο ΕΠΑΛ Κιλκίς
Ας θυμηθούμε ξανά την παλιά μας «αγάπη» Η Python είναι μία σύγχρονη, διερμηνευόμενη, υψηλού επιπέδου γλώσσα γενικής χρήσης για την ανάπτυξη πολλών προγραμμάτων, από απλά έως τα πλέον σύνθετα (εκπαιδευτικά παιχνίδια, εμπορικές εφαρμογές, πλατφόρμες κοινωνικής δικτύωσης κλπ.) Υποστηρίζει διάφορα προγραμματιστικά υποδείγματα: Δομημένο προγραμματισμό Συναρτησιακό Αντικειμενοστρεφές Είναι αρθρωτή (modular), εύκολα δηλαδή ο προγραμματιστής φορτώνει επιπρόσθετες εξωτερικές βιβλιοθήκες με έτοιμο κώδικα στο πρόγραμμα του, κάνοντας τη ζωή του ευκολότερη.
Η ιστοσελίδα της Python Τελ. Επίσκεψη: Σεπτέμβριος 2016 www.python.org
Η ιστοσελίδα της Python www.python.org Τελ. Επίσκεψη: Σεπτέμβριος 2016
Python IDLE File>New File interactive mode (διαδραστική λειτουργία) script mode (σεναριακή λειτουργία) Παράθυρο Python Shell - Κονσόλα του διερμηνευτή της Python για διαδραστική και άμεση εκτέλεση εντολών. Αμέσως μετά την προτροπή >>> γράφεται η εντολή και εκτελείται άμεσα από τον διερμηνευτή. Τα διάφορα τμήματα μιας εντολής χρωματίζονται κατάλληλα (χρωματική συντακτική επισήμανση). Η επισήμανση αυτή βοηθάει πάρα πολύ στη σωστή συγγραφή των εντολών. Είναι δυνατή και η επανάκληση των προηγούμενων εντολών που έχουμε δώσει απλά κάνοντας κλικ με το ποντίκι στην προηγούμενη εντολή και πατώντας Enter. Παράθυρο συντάκτη προγράμματος editor το οποίο υποστηρίζει πολλές δυνατότητες (χρωματική επισήμανση εντολών, κατάλληλη στοίχιση τους, αυτόματη συμπλήρωση εντολών κλπ.) Σε ένα τέτοιο παράθυρο γράφουμε πρώτα ολόκληρο το πρόγραμμά μας (ο τρόπος αυτός ονομάζεται program mode), στη συνέχεια το αποθηκεύουμε σε αρχείο και στο τέλος το εκτελούμε (Menu Run). Τα αποτελέσματα της εκτέλεσης τα βλέπουμε στο Python Shell.
Δεδομένα στην Python Ένα πρόγραμμα συνήθως επεξεργάζεται δεδομένα τα οποία μπορεί να είναι αποθηκευμένα στην κύρια μνήμη ή σε ένα αποθηκευτικό μέσο του υπολογιστή, ή η εισαγωγή τους να γίνεται από κάποια μονάδα. Τα δεδομένα που χειρίζεται η Python μπορεί να είναι: Αριθμητικά Ακέραιοι αριθμοί (integer): 3, -9 Πραγματικοί αριθμοί (float): 2.8, 4.0, 5Ε+2, 12.3Ε-2 Μιγαδικοί αριθμοί (complex numbers): -2+3j Αλφαριθμητικά (string) Giannis, 12ab, 57 Λογικά (boolean) True, False 5x10 2 =5x100=500 Όχι στα ΕΠΑΛ Είτε μονά, είτε διπλά εισαγωγικά δεν έχει σημασία, αρκεί το ζευγάρι να είναι ίδιο Προσοχή στο κεφαλαίο T, F Python python
Τύποι δεδομένων στην Python Ο τύπος δεδομένων μιας μεταβλητής προσδιορίζει το σύνολο των τιμών που μπορεί να πάρει μια μεταβλητή. Τυπικά, προσδιορίζει τον τρόπο παράστασης των δεδομένων εσωτερικά στον υπολογιστή και το είδος επεξεργασίας που μπορούν να γίνουν πάνω τους. Σε αντίθεση με όλες τις άλλες γλώσσες προγραμματισμού στην Python δεν ορίζεται ρητά ο τύπος δεδομένων μιας μεταβλητής και μάλιστα μπορεί να αλλάζει μέσα στο πρόγραμμα. a='abc' print a a=2 print a a=true print(a) Η Python περιέχει δυναμικούς τύπους δεδομένων, που σημαίνει ότι οι έλεγχοι γίνονται κατά τον χρόνο εκτέλεσης και όχι κατά τον χρόνο μεταγλώττισης του προγράμματος. Ο τύπος δεδομένων της μεταβλητής καθορίζεται αφού πάρει πρώτα τιμή η μεταβλητή. Τύποι δεδομένων στην Python int float str bool
Τι τύπος είσαι εσύ; >>> type(2) <type 'int'> >>> type(2.3) <type 'float'> >>>type('giannis') <type 'str'> >>> type(true) <type 'bool'>
Τελεστές και τελεστέοι Τελεστές είναι τα ειδικά σύμβολα που αναπαριστούν υπολογισμούς (πράξεις) όπως η πρόσθεση και ο πολλαπλασιασμός. Οι τιμές στις οποίες εφαρμόζονται οι τελεστές ονομάζονται τελεστέοι. Αριθμητικοί Τελεστές Πρόσθεση : + Αφαίρεση : - Πολλαπλασιασμός : * Διαίρεση : / Ύψωση σε δύναμη : ** Ακέραιο πηλίκο : // Ακέραιο υπόλοιπο : % Προσοχή Python 2 9/2=4 9.0/2=4.5 Python 3 9/2=4.5 >>> 14/3 4 >>> 14.0/3 4.666666666666667 >>> 14/3.0 4.666666666666667 >>> 14.0/3.0 4.666666666666667 >>> 14//3 4 >>> 2*3 6 >>> 2**3 8 >>> 9%2 1 >>> 9-5 4 >>> 9+5 14
Συγκριτικοί τελεστές Ίσο με : == Διάφορο από :!= Μεγαλύτερο από : > Μικρότερο από : < Μεγαλύτερο ή ίσο με : >= Μικρότερο ή ίσο με : <= >>> 6>4 True >>> 6==8 False >>> 6!=8 True >>> 6>=4 True >>> a=9 >>> b=7 >>> a>b True >>> 'a'>'b' False >>> 'γιάννης'<'κέρος' True >>> 'γιάννης'>'γιώργος' False >>>0==True False >>> x=4 >>> y=9 >>> z=8 >>> x>y>z False
Λογικοί τελεστές Σύζευξη : and Διάζευξη : or Άρνηση : not Πρόταση Α Πρόταση Β Α and B A or B False False False False False True False True True False False True True True True True Πρόταση Α not A False True True False Προτεραιότητα 1. not 2. and 3. or >>> a=5 >>> b=4 >>> c=6 >>> a>b True >>> a>b and a>c False >>> a>b or a>c True >>> a>b and not a>c True >>> a>b or not a>c True >>> not(a>b) or a>c False >>> not a>b or a>c False
Προτεραιότητα Αριθμητικοί Σειρά 1. ** 2. *, /, //, % 3. +, - Τελεστής Συγκριτικοί 4. >, >=, <, <=, ==,!= Λογικοί 5. not 6. and 7. or Παρατηρήσεις 1. Όταν υπάρχουν τελεστές με την ίδια προτεραιότητα τότε εκτελούνται αυστηρά από τα αριστερά προς τα δεξιά. 2. Οι υπολογισμοί μέσα στις παρενθέσεις προηγούνται. >>> 3*2+6*4 30 >>> 3*2**3 24 >>> 19%5//4*18 18 >>> 20//3<=7 True >>> 2==5 or 5!=6 and 7<=6 False
Παραδείγματα με ενδιαφέρον >>> 20//3*4 24 >>> 20%3*4 8 >>> 6*3/2*4 36 >>> 6*3.0/2*4 36.0 >>> 6*3.0/(2*4) 2.25 >>> 6+3/(2*4) 6 >>> 6+3.0/(2*4) 6.375 >>> 3+4 7 >>> 'a'+'b' 'ab' >>> 2*3 6 >>> 'la'*3 'lalala' Συνένωση Επανάληψη του κειμένου
Τελεστές (Σύνοψη) Αριθμητικοί Συγκριτικοί Λογικοί + Πρόσθεση - Αφαίρεση * Πολλαπλασιασμός / Διαίρεση % Ακ. Υπόλοιπο // Ακ. Πηλίκο ** Δύναμη Ταυτοτικοί is is not == Ισότητα!= Διάφορο < Μικρότερο > Μεγαλύτερο <= Μικρότερο ή ίσο >= Μεγαλύτερο ή ίσο Υπαρξιακοί in not in and or not και ή όχι Παντός τύπου + *
Μεταβλητές στην Python Μεταβλητή είναι ένα σύμβολο που «δείχνει» σε μία τιμή. Χρησιμοποιείται για να συμβολίσουμε τις ποσότητες που χειριζόμαστε στο πρόγραμμα, τα δεδομένα μας. Κάθε μεταβλητή διαθέτει ένα όνομα και μία τιμή. Το όνομα της παραμένει σταθερό αλλά η τιμή της μπορεί να αλλάζει. Παραδείγματα a=1 num=17 p=3.14 katastasi='molis efige' ok=false ή Οι μεταβλητές στην Python λειτουργούν σαν ετικέτες με κάποιο όνομα, που χρησιμεύουν για να αναφερόμαστε (ή αλλιώς για να δείχνουμε) σε κάποια αντικείμενα. Ο τύπος της μεταβλητής είναι ο εκάστοτε τύπος του αντικειμένου στην οποία αναφέρεται.
Μεταβλητές στην Python Στο διπλανό παράδειγμα με την εντολή a = 125, δημιουργείται η μεταβλητή a η οποία αναφέρεται στην τιμή 125 (ακέραια). Όταν θέσουμε στη συνέχεια a = 250.7, η μεταβλητή a παύει πλέον να δείχνει την τιμή 125 και δημιουργείται ένα νέο δέσιμο ώστε να αναφέρεται στην τιμή 250.0 (πραγματική). κοκ Η Python παρακολουθεί όλες τις τιμές και τις διαγράφει όταν πάψουν να υπάρχουν μεταβλητές που να αναφέρονται σε αυτές. Η διαδικασία αυτή ονομάζεται συλλογή σκουπιδιών (garbage collection). >>> a=125 >>> type(a) <type int > >>> a=250.7 >>> type(a) <type float > >>> a=true >>> type(a) <type bool > >>> a= Hello >>> type(a) <type str >
Αναπαράσταση μεταβλητών στη μνήμη Εντολές Αποτέλεσμα στη μνήμη a=1 a=2 b=a Άλλες γλώσσες Python
Κανόνες ονοματολογίας μεταβλητών Ο πρώτος χαρακτήρας μπορεί να είναι μόνο ένα γράμμα της αλφαβήτου ή κάτω παύλα ( _ ). Το υπόλοιπο του ονόματος μπορεί να είναι γράμματα της αλφαβήτου, κάτω παύλες ( _ ) ή ψηφία (0..9). Υπάρχει διάκριση πεζών - κεφαλαίων. Για παράδειγμα, τα myname και myname δεν είναι ίδια. Μπορείτε να χρησιμοποιήσετε ελληνικούς χαρακτήρες στην Python 3 (δεν προτείνεται) αλλά όχι στην Python 2. Δεν μπορεί το όνομα ενός αναγνωριστικού να είναι μια δεσμευμένη λέξη της Python (εντολή, συνάρτηση κλπ.) Σωστά ονόματα: i, myname, my_name, name_23, a1b2_c3 Λάθος ονόματα: 2things, my name, my-name, myname Διαλέξτε ονόματα αντιπροσωπευτικά του περιεχομένου
Έξοδος Η συνάρτηση print a=2 print a x=3 y=4 print x,y print '1o ΕΠΑΛ' k=9 print 3*k+2 b=18 print 'Ο βαθμός είναι',b print 'ΠΑΟΚ' print 'ΑΡΗΣ' print 'ΠΑΟΚ', print 'ΑΡΗΣ' 2 3 4 1o ΕΠΑΛ 29 Ο βαθμός είναι 18 ΠΑΟΚ ΑΡΗΣ ΠΑΟΚ ΑΡΗΣ Xρησιμοποιείται για την εμφάνιση τιμών στην οθόνη του υπολογιστή, με ποικίλες μορφές, όπως: print όνομα_μεταβλητής, π.χ. print name print αριθμός, π.χ. print 1045.34 print συμβολοσειρά, π.χ. print θαλασσινός αέρας print όνομα_μεταβλητής (τελεστής) αριθμός
Είσοδος Η συνάρτηση raw_input() Στα περισσότερα προγράμματα απαιτείται η είσοδος δεδομένων από τον χρήστη. Για τον σκοπό αυτό η Python διαθέτει δύο ενσωματωμένες συναρτήσεις, την raw_input() και την input(). Κάθε φορά που καλείται η συνάρτηση αυτή από το πρόγραμμα, αυτό σταματάει και περιμένει από τον χρήστη να πληκτρολογήσει κάτι. Όταν ο χρήστης πληκτρολογήσει την είσοδο και πατήσει το πλήκτρο Enter, το πρόγραμμα συνεχίζει τη ροή εκτέλεσης και η συνάρτηση input επιστρέφει την είσοδο σαν συμβολοσειρά. Χρήσιμο είναι να εμφανίζεται και ένα μήνυμα (prompt) που να πληροφορεί τον χρήστη για το είδος της εισόδου που αναμένεται από το πρόγραμμα. >>> name=raw_input('πως σε λένε;') Πως σε λένε;john >>> print name John
Είσοδος Η συνάρτηση raw_input() >>> x=raw_input('δώστε έναν αριθμό:') Δώστε έναν αριθμό:5 >>> k=x*2+1 Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> k=x*2+1 TypeError: cannot concatenate 'str' and 'int' objects >>> x=raw_input('x=') x=7 >>> print x+'1' 71
Είσοδος Η συνάρτηση input() Η συνάρτηση input(), έχει παρόμοια λειτουργία με την raw_input() με την ουσιαστική διαφορά ότι δεν επιστρέφει απαραίτητα συμβολοσειρά (κείμενο) αλλά προσπαθεί να μαντέψει το είδος των δεδομένων και να κάνει αυτόματα την σωστή μετατροπή. >>> x=input('δώστε έναν αριθμό:') Δώστε έναν αριθμό:5 >>> k=x*2+1 >>> print k 11 >>> x=input('x=') x=7 >>> x+=10 >>> x 17 >>> x=input('x=') x=7 >>> y=input('y=') y=(x+3)*5 >>> y 50
Casting Είναι σημαντικό να θυμόμαστε ότι η συνάρτηση raw_input() επιστρέφει πάντα συμβολοσειρά. Ωστόσο, όπως είπαμε σε προηγούμενη ενότητα η Python μας προσφέρει ενσωματωμένες συναρτήσεις για μετατροπή από έναν τύπο δεδομένων σε έναν άλλο: float(x) : μετατρέπει ακέραιους αριθμούς και συμβολοσειρές σε αριθμούς κινητής υποδιαστολής. int(x) : μετατρέπει αριθμούς κινητής υποδιαστολής («κόβει» τα δεκαδικά ψηφία) και συμβολοσειρές σε ακέραιους αριθμούς. str(x) : μετατρέπει αριθμούς σε συμβολοσειρές.
Casting >>> float(5) 5.0 >>> int('1024')+6 1030 >>> int(float('3.14159')) 3 >>> str(1024)*3 '102410241024' >>> int(3.4) 3 >>> str(3) '3' >>> int('3') 3 >>> x=int(raw_input('x=')) x=5 >>> print x+3 8
Casting Παράδειγμα 1 >>> num=raw_input('δώστε έναν αριθμό:') Δώστε έναν αριθμό:5 >>> tetr=num**2 Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> tetr=num**2 TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int' >>> num=input('δώστε έναν αριθμό:') Δώστε έναν αριθμό:5 >>> tetr=num**2 >>> print tetr 25 25 >>> num=int(input('δώστε έναν αριθμό:')) Δώστε έναν αριθμό:5 >>> tetr=num**2 >>> print tetr
Casting Παράδειγμα 2 >>> num=5 >>> word='give me'+num Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> word='give me'+num TypeError: cannot concatenate 'str' and 'int' objects >>> word='give me'+str(num) >>> print word Give me5
Casting Οι συναρτήσεις int και float επιστρέφουν μία τιμή, έναν ακέραιο αριθμό ή έναν αριθμό κινητής υποδιαστολής αντίστοιχα, αλλά δεν αλλάζουν τον τύπο μιας μεταβλητής και την τιμή στην οποία αυτή δείχνει. Αν θέλουμε, μπορούμε να εκχωρήσουμε την επιστρεφόμενη τιμή σε μια νέα μεταβλητή. >>> x=input('x=') x=5 >>> x=raw_input('x=') x=5 >>> print 2*int(x) 10 >>> print 2*x 55 >>> type(x) <type 'str'> >>> y=int(x) >>> print y 5 >>> type(y) <type 'int'>
Σχόλια # Σχόλια #Πρόγραμμα υπολογισμού μέσου όρου μαθητή math1=20 math2=18 mo=(math1+math2)/2 print mo Είναι καλό κάθε νέο πρόγραμμα μας να έχει για πρώτη του σειρά ένα σχόλιο με την περιγραφή του προγράμματος
Βασικές (ενσωματωμένες) συναρτήσεις abs() : επιστρέφει την απόλυτη τιμή ενός αριθμού pow(a,b) : επιστρέφει τη δύναμη του a υψωμένη στο b divmod(x,y) : επιστρέφει το πηλίκο και το υπόλοιπο της διαίρεσης x/y >>> a=-10 >>> abs(a) 10 >>> x=2 >>> y=3 >>> pow(x,y) 8 >>> c=9 >>> d=2 >>> divmod(c,d) (4, 1) >>> round(4.7) 5.0 >>> round(4.1) 4.0 >>> round(4.5) 5.0 >>> 3.0/2 1.5 >>> 3/2 1 >>> float(3)/2 1.5 >>> float(3/2) 1.0
Επιπλέον συναρτήσεις Θυμάστε στο ξεκίνημα μας στην Python το σχόλιο μας ότι «είναι μία γλώσσα με πολλά αρθρώματα (modules)»; Τι είναι ένα άρθρωμα ή μονάδα (module); Μία συλλογή από συναρτήσεις που μας προσφέρονται δωρεάν στο διαδίκτυο με την βοήθεια των οποίων μπορώ να κάνω πολλά επιπλέον πράγματα που η βασική Python δεν προσφέρει. Τις συλλογές αυτές τις έχουν κατασκευάσει άλλοι για εμάς πριν από εμάς (για παράδειγμα επιπλέον μαθηματικές συναρτήσεις, δημιουργία παιχνιδιών κλπ.) Πως εισάγετε μία τέτοια μονάδα στο πρόγραμμα μας; import όνομα_μονάδας
Επιπλέον συναρτήσεις εισαγωγή μονάδας >>> import math >>> math.pi 3.141592653589793 >>> math.e 2.718281828459045 >>> math.floor(4.2) 4.0 >>> math.floor(4.9) 4.0 >>> math.floor(-4.2) -5.0 >>> math.floor(-4.9) -5.0 >>> math.sqrt(16) 4.0 >>> import random >>> random.randint(1,6) 6 >>> random.randint(1,6) 1 χρήση συνάρτησης μονάδας Μπορώ να δηλώσω ότι θα χρησιμοποιήσω όλη την βιβλιοθήκη ή Μια συγκεκριμένη συνάρτηση της βιβλιοθήκης >>>from math import sqrt >>>sqrt(16) 4.0
Βοήθεια!!! >>> help() Welcome to Python 2.7! This is the online help utility. If this is your first time using Python, you should definitely check out the tutorial on the Internet at http://docs.python.org/2.7/tutorial/. Enter the name of any module, keyword, or topic to get help on writing Python programs and using Python modules. To quit this help utility and return to the interpreter, just type "quit". To get a list of available modules, keywords, or topics, type "modules", "keywords", or "topics". Each module also comes with a one-line summary of what it does; to list the modules whose summaries contain a given word such as "spam", type "modules spam". help> help> print The "print" statement ********************* print_stmt ::= "print" ([expression ("," expression)* [","]] ">>" expression [("," expression)+ [","]]) help> quit You are now leaving help and returning to the Python interpreter. If you want to ask for help on a particular object directly from the interpreter, you can type "help(object)". Executing "help('string')" has the same effect as typing a particular string at the help> prompt. >>>
Καλές πρακτικές Να δίνουμε ένα χαρακτηριστικό τίτλο στο πρόγραμμα με τη μορφή σχολίων, τα οποία ξεκινάνε με το σύμβολο #. Αυτό, παρότι δεν είναι αναγκαίο, είναι ιδιαίτερα χρήσιμο. Να προσέχουμε τα κενά διαστήματα πριν την κάθε εντολή, καθώς όπως ξέρουμε η Python βασίζεται σε αυτά για να ορίσει ομάδες εντολών. Να επιλέγουμε τους κατάλληλους τελεστές. Να χρησιμοποιούμε τα ίδια εισαγωγικά (μονά εισαγωγικά με μονά, διπλά εισαγωγικά με διπλά) για μια συμβολοσειρά. Να προσθέτουμε, όπου κρίνουμε χρήσιμο, επεξηγηματικά σχόλια μέσα στον κώδικα. Θυμίζουμε ότι τα σχόλια περιγράφουν τη λειτουργία ενός προγράμματος ή γενικότερα, ενός τμήματος κώδικα και γράφονται, για να βοηθήσουν τους ανθρώπους -και όχι τον υπολογιστή- στην κατανόηση και συντήρηση ενός προγράμματος. Όταν ένα πρόγραμμα μεταφράζεται, τα σχόλια αγνοούνται. Τα σχόλια που περιγράφουν τη λειτουργία ενός προγράμματος, το ρόλο των μεταβλητών και τη λειτουργία πολύπλοκων τμημάτων κώδικα, αποτελούν παράδειγμα καλού προγραμματιστικού στυλ. Να δίνουμε ονόματα μεταβλητών που έχουν σχέση με τη χρήση τους.
Τύποι και δομές δεδομένων στον προγραμματισμό Ο τύπος δεδομένων μιας μεταβλητής προσδιορίζει το σύνολο των τιμών που μπορεί να πάρει μια μεταβλητή. Τυπικά, προσδιορίζει τον τρόπο παράστασης των δεδομένων εσωτερικά στον υπολογιστή και το είδος επεξεργασίας που μπορούν να γίνουν πάνω τους. Διακρίνονται σε: Πρωτογενείς Μη πρωτογενείς Απλοί. Είναι προκαθορισμένοι από τις γλώσσες προγραμματισμού. Δημιουργούνται από τον προγραμματιστή. Οι τιμές των δεδομένων είναι στοιχεία μη περαιτέρω - χωριζόμενα (άτομα). Δηλαδή κάθε δεδομένο έχει μία και μοναδική τιμή. Σύνθετοι. Σύνθετος τύπος δεδομένων είναι εκείνος, που αποτελείται από πρωτογενείς ή / και άλλους σύνθετους τύπους, όπου μια μεταβλητή μπορεί να πάρει ως τιμή μια ενότητα τιμών. Οι σύνθετοι τύποι καλούνται και Δομές 34 Δεδομένων. Παραδείγματα σύνθετων τύπων είναι η Εγγραφή, το Σύνολο, ο Πίνακας.
Κατηγορίες Τύπων Δεδομένων Απλοί Ακέραιος (Integer) Πραγματικός (real) Χαρακτήρας (Character) Λογικός (Boolean) Αλφαριθμητικός-string Σύνθετοι Τύποι Δεδομένων Πίνακας (Array) Εγγραφή (Record/tuple/struct) Λίστα (List) Σύνολο (Set) Σωρός (Heap) Στοίβα (Stack) Ουρά (Queue) Δένδρο (Tree) Γράφος (Graph) Επίπεδα αφαίρεσης σε Τύπους Δεδομένων Ένας τύπος δεδομένων αρχικά και στο στάδιο σχεδίασης, υπάρχει μόνο διανοητικά, ορίζοντας έτσι έναν αφηρημένο τύπο δεδομένων-ατδ (Abstract Data Τype). Στο στάδιο αυτό έχει οριστεί με βάση τις λειτουργίες που επιτελεί, κρατώντας κρυφή την εκτέλεση. Οι περισσότερες αντικειμενοστρεφείς γλώσσες προγραμματισμού παρέχουν τη δυνατότητα να καθορίζονται από το χρήστη τύποι αφηρημένων στοιχείων. Δεν μας απασχολεί, στο επίπεδο αυτό, ούτε ο τρόπος με τον οποίο θα αναπαρασταθούν τα δεδομένα ούτε ο τρόπος που θα υλοποιηθούν οι λειτουργίες σε κώδικα (code implementation). Μας ενδιαφέρει δηλαδή, το τι θα υπολογιστεί και όχι το πώς. Με την παραπάνω λογική οι Σύνθετοι Τύποι Δεδομένων μπορούν να χαρακτηριστούν ως ΑΤΔ. Έτσι, για παράδειγμα, μια γέφυρα είναι δυνατόν είτε να την βλέπουμε ως μια οντότητα (υψηλό επίπεδο αφαίρεσης) είτε ως πολλά τμήματα -δοκοί, στερεωτικά κ.ά., όπως θα την έβλεπε ένας Μηχανικός. 35