ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 11: Vectors (διανύσματα)

Σχετικά έγγραφα
ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 8: Πακέτα (Packages)

Οντοκεντρικός Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays)

Οντοκεντρικός Προγραμματισμός

Διοικητική Λογιστική

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Εισαγωγή στους Αλγορίθμους

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 4: Συναρτήσεις

Εισαγωγή στους Αλγορίθμους

Κβαντική Επεξεργασία Πληροφορίας

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Κβαντική Επεξεργασία Πληροφορίας

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Γενική Φυσική Ενότητα: Δυναμική Άκαμπτου Σώματος

Πρακτική Άσκηση σε σχολεία της δευτεροβάθμιας εκπαίδευσης

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Διδακτική των εικαστικών τεχνών Ενότητα 1

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Διδακτική των εικαστικών τεχνών Ενότητα 3

Φιλοσοφία της Ιστορίας και του Πολιτισμού

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Συστήματα αρίθμησης

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 6: Πίνακες [2/2] (Δισδιάστατοι)

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Γενική Φυσική Ενότητα: Ταλαντώσεις

Εισαγωγή στους Υπολογιστές

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Γενική Φυσική Ενότητα: Εισαγωγή στην Ειδική Θεωρία της Σχετικότητας

Διδακτική των εικαστικών τεχνών Ενότητα 2

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Εισαγωγή στους Αλγορίθμους

Διοικητική Λογιστική

Βέλτιστος Έλεγχος Συστημάτων

Ενδεικτικές λύσεις ασκήσεων διαγραμμάτων περίπτωσης χρήσης (1ο Μέρος)

Έλεγχος Ποιότητας Φαρμάκων

Τεχνικό Σχέδιο - CAD

Πληροφορική ΙΙ Θεματική Ενότητα 5

Το Εικονογραφημένο Βιβλίο στην Προσχολική Εκπαίδευση

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Θεατρικές Εφαρμογές και Διδακτική της Φυσικής Ι

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Βάσεις Περιβαλλοντικών Δεδομένων

Τεχνικό Σχέδιο - CAD

Κβαντική Επεξεργασία Πληροφορίας

Παιδαγωγική ή Εκπαίδευση ΙΙ

Υπολογιστική άλγεβρα Ενότητα 10: Βάσεις Groebner ενός ιδεώδους ΙΙΙ

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

Διδακτική των εικαστικών τεχνών Ενότητα 2

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

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

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Μηχανολογικό Σχέδιο Ι

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στη Μουσική Τεχνολογία Ενότητα: Ελεγκτές MIDI μηνυμάτων (Midi Controllers)

Εισαγωγή στις Επιστήμες της Αγωγής

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Βάσεις Περιβαλλοντικών Δεδομένων

Λειτουργία και εφαρμογές της πολιτιστικής διαχείρισης

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 7: Αλγόριθμοι γραμμικής άλγεβρας

Παιδαγωγικά. Ενότητα Β: Γενικοί σκοποί της διδασκαλίας και διδακτικοί στόχοι. Ζαχαρούλα Σμυρναίου Σχολή Φιλοσοφίας Τμήμα Παιδαγωγικής και Ψυχολογίας

Διαχείριση Πολιτισμικών Δεδομένων

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Το Εικονογραφημένο Βιβλίο στην Προσχολική Εκπαίδευση

Οντοκεντρικός Προγραμματισμός

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

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

Πρακτική Άσκηση σε σχολεία της δευτεροβάθμιας εκπαίδευσης

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Βάσεις Περιβαλλοντικών Δεδομένων

Έννοιες Φυσικών Επιστημών Ι

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Βέλτιστος Έλεγχος Συστημάτων

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Τεχνολογία Πολιτισμικού Λογισμικού

Χωρικές σχέσεις και Γεωμετρικές Έννοιες στην Προσχολική Εκπαίδευση

Οντοκεντρικός Προγραμματισμός

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Προγραμματισμός Η/Υ. 7 η ενότητα: Αρχεία. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Το Εικονογραφημένο Βιβλίο στην Προσχολική Εκπαίδευση

Transcript:

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 11: Vectors (διανύσματα) Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 11 Vectors (διανύσματα) Τα vectors είναι δυναμικές δομές δεδομένων. Κυριότερο χαρακτηριστικό τους: έχουν δυναμικό (μεταβαλλόμενο) μέγεθος. Το μέγεθος ενός πίνακα δεν μπορεί να αλλάξει από τη στιγμή που ο πίνακας οριστεί, ακόμα και αν το μέγεθος δεν ορίζεται επ ακριβώς μέσα στο πρόγραμμα αλλά το δίνει ο χρήστης σαν input στο πρόγραμμα. π.χ. private double [ ] a;... public void createarray(int size) { a = new double [size]; } δηλαδή αρχικά το μέγεθος του πίνακα a δεν είναι γνωστό, αλλά όταν κληθεί η μέθοδος createarray, το μέγεθος θα είναι γνωστό και θα σταλεί σαν όρισμα από τον χρήστη κατά την εντολή κλήσης της μεθόδου, οπότε ο πίνακας δημιουργείται μέσα στη μέθοδο (από τη στιγμή όμως που έχει ορισθεί έξω από τη μέθοδο, παραμένει ένας πίνακας κλάσης, δηλαδή η εμβέλειά του (scope) είναι ολόκληρη η κλάση). Αν κατόπιν θέλουμε να έχουμε περισσότερα στοιχεία (elements) στον a, τότε υπάρχει πρόβλημα! Για αυτό το λόγο υπάρχουν τα vectors, που έχουν μεταβλητό μέγεθος. Τότε γιατί να μην χρησιμοποιούμε πάντα vectors αντί για πίνακες; Τα vectors έχουν δύο βασικά μειονεκτήματα: Είναι λιγότερο αποτελεσματικά από τους πίνακες, δηλαδή πιο δύσκολα στη χρήση τους Τα στοιχεία τους πρέπει να είναι αντικείμενα (objects). Δεν μπορούν να είναι απλές τιμές πρωτογενών μεταβλητών (int, double, char, κτλ.) όπως στους πίνακες (αυτό φυσικά έχει και πάρα πολλά πλεονεκτήματα) Χρήση των vectors : Ο ορισμός της κλάσης Vector δεν παρέχεται αυτόματα. Βρίσκεται στο πακέτο java.util, το οποίο πρέπει να γίνει import από οποιοδήποτε πρόγραμμα χρησιμοποιεί vectors: import java.util.*; Δημιουργία vector: Η Vector είναι κλάση, άρα τα vectors δημιουργούνται όπως δημιουργούνται τα αντικείμενα: Vector vectorname = new Vector(); ver. 120305 Τμήμα Μαθηματικών ΕΚΠΑ 1

Κάθε vector έχει μια χωρητικότητα (capacity), μια «αύξηση χωρητικότητας» (capacityincrement) και ένα μέγεθος (size). Η χωρητικότητά του είναι πάντα μεγαλύτερη ή ίση με το μέγεθός του (capacity >= size). Σαν μέγεθος θεωρούμε το πλήθος των στοιχείων που έχει ανά πάσα στιγμή το vector. Κατασκευαστές της Vector: public Vector() δημιουργεί ένα κενό vector με αρχική χωρητικότητα = 10. Κάθε φορά που χρειάζεται αύξηση της χωρητικότητας, η χωρητικότητα διπλασιάζεται. public Vector(int initialcapacity) όπως προηγουμένως, αλλά η αρχική χωρητικότητα είναι = initialcapacity. π.χ., Vector v1 = new Vector(35); public Vector(int initialcapacity, int capacityincrement) όπως προηγουμένως, αλλά η χωρητικότητα μεγαλώνει κατά capacityincrement στοιχεία κάθε φορά που χρειάζεται. - Προσθήκη στοιχείου: - στο τέλος του vector (μετά το τελευταίο στοιχείο) Μέθοδοι της Vector: public void addelement(object newelement) π.χ., αν έχουμε το vector v2: 4 2 1 0 15 9 και θέλουμε να προσθέσουμε μια int τιμή στο τέλος του vector: private int x = 2; v2.addelement(new Integer(x)); 4 2 1 0 15 9 2 - ενδιάμεσα: public void insertelementat(object newelement, int index) π.χ., v2.insertelementat(new Integer(7),4); 4 2 1 0 7 15 9 2 Σημείωση: Η τρέχουσα έκδοση της Java δεν απαιτεί πλέον τη δημιουργία αντικειμένου για την προσθήκη του ως στοιχείο του vector, αφού έχει αυτοματοποιήσει τη μετατροπή του σε αντικείμενο. Δηλαδή, μπορεί κάποιος να προσθέσει κατευθείαν έναν πρωτογενή τύπο σε διάνυσμα και σε αυτή την περίπτωση η Java θα κάνει αυτόματα τη μετατροπή του στο αντίστοιχο αντικείμενο. Άρα, π.χ., η προηγούμενη προσθήκη: v2.insertelementat(new Integer(7),4); θα μπορούσε να γραφεί απλά ως: ver. 120305 Τμήμα Μαθηματικών ΕΚΠΑ 2

v2.insertelementat(7,4); - Αντικατάσταση (υπάρχοντος) στοιχείου: public void setelementat(object newelement, int index) π.χ., θέλουμε να αλλάξουμε το τρίτο στοιχείο του v2 σε 5 : v2.setelementat(new Integer(5), 2); 4 2 5 0 7 15 9 2 ( ή, πιο απλά: v2.setelementat(5, 2); ) - Διαγραφή στοιχείου: - public void removeelementat(int index) π.χ., v2.removeelementat(3); 4 2 5 7 15 9 2 - public boolean removeelement(object theelement) (διαγράφει το στοιχείο theelement μόνο από την πρώτη του θέση στο vector επιστρέφει true εάν βρει το στοιχείο και το διαγράψει, και false εάν δεν το βρει) π.χ., v2.removeelement(new Integer(2)); true 4 5 7 15 9 2 v2.removeelement(new Integer(3)); false - public void removeallelements() - Πρόσβαση σε στοιχείο: - public Object elementat(int index) π.χ., θέλουμε να προσθέσουμε τις τιμές του 3ου και 5ου στοιχείου του v2: int sum = (Integer)v2.elementAt(2) + (Integer)v2.elementAt(4); Object Integer object Σημείωση: Η Java σε αυτή την περίπτωση έχει αυτοματοποιήσει ακόμα μία διαδικασία, αυτή της μετατροπής του αντικειμένου Integer στον αντίστοιχο πρωτογενή τύπο (int). Κάτι τέτοιο σε παλαιότερες εκδόσεις της Java γίνονταν μέσω εξειδικευμένων μεθόδων. Για να γίνει όμως η αυτόματη μετατροπή σε int, πρέπει το αντικείμενο Object που επιστρέφει η elementat να μετατραπεί σε αντικείμενο Integer. Χωρίς αυτή τη μετατροπή, η Java δεν μπορεί να μετατρέψει τα στοιχεία σε πρωτογενείς τύπους, άρα η έκφραση: int sum = v2.elementat(2) + v2.elementat(4); // ΛΑΘΟΣ! θα έβγαζε σφάλμα κατά το compilation. ver. 120305 Τμήμα Μαθηματικών ΕΚΠΑ 3

- Μέθοδοι αναζήτησης: - public boolean contains(object target) true/false π.χ., αν έχουμε το vector v2 στη μορφή: 4 2 5 7 15 9 2 v2.contains(new Integer(15)); true - public int indexof(object target) -> 1o index του target ή -1 αν δεν υπάρχει π.χ., πάντα για το ίδιο v2: v2.indexof(new Integer(2)); 1 v2.indexof(new Integer(3)); -1 - public int indexof(object target, int StartIndex) π.χ., v2.indexof(new Integer(2), 3); 6 - public int lastindexof(object target) π.χ., v2.lastindexof(new Integer(2)); 6 - public Object firstelement() π.χ., v2.firstelement(); 4 (το οποίο όμως είναι αντικείμενο!) - public Object lastelement() π.χ., v3.lastelement(); 2 (αντικείμενο) - Άλλες μέθοδοι: - public int size() - public int capacity() - public void trimtosize() κάνει το capacity = με το size - public void setsize(int newsize) κάνει το μέγεθος (και όχι το capacity) = με το newsize. Αν το newsize > προηγούμενο size τα νέα στοιχεία = null. Αν το newsize < προηγούμενο size τα επιπλέον στοιχεία χάνονται. π.χ., Vector v3 = new Vector(); v3.addelement(new Double(2.3)); v3.addelement(new Double(1.5)); 0 1 2 3... 9 2.3... 2.3 1.5... ver. 120305 Τμήμα Μαθηματικών ΕΚΠΑ 4

v3.addelement(new Double(4.2)); 2.3 1.5 4.2... int a = v3.size(); // a = 3 int b = v3.capacity(); // b = 10 v3.trimtosize(); 2.3 1.5 4.2 int c = v3.capacity(); // c = 3 (το capacity γίνεται = με το size) v3.setsize(5); 2.3 1.5 4.2 null null int d = v3.size() // d = 5 int e = v3.capacity(); // e = 6 (το capacity διπλασιάστηκε) v3.setsize(2); 2.3 1.5 int f = v3.capacity(); // f = 6 (το capacity δεν άλλαξε) v3.setsize(3); 2.3 1.5 null (δηλαδή, η τιμή του 3 ου στοιχείου (4.2) έχει χαθεί πλέον και δεν επανέρχεται) Σημείωση: Υπάρχει διαφορά μεταξύ θέσεων με τιμή null και κενών θέσεων. Οι κενές θέσεις ενός vector στην ουσία δεν υπάρχουν μέχρι τη στιγμή που παίρνουν κάποια τιμή (ή την τιμή null). Υπάρχει μόνο η πρόβλεψη στη μνήμη για μελλοντική κάλυψη αυτών των θέσεων. Αυτό το νόημα έχει το capacity. Αν π.χ. κάποιος προσπαθήσει να προσπελάσει μια θέση ενός vector που «υπάρχει» στην χωρητικότητά του αλλά δεν έχει κάποια τιμή ή την τιμή null, ο compiler θα βγάλει σφάλμα (εξαίρεση): java.lang.arrayindexoutofboundsexception Παράδειγμα χρήσης vector: - Να γραφεί μέθοδος που να ζητάει από τον χρήστη εισαγωγή double τιμών διαφορετικών του μηδενός μέχρι να δοθεί η τιμή 0 (για τερματισμό της διαδικασίας), και να αποθηκεύει τις τιμές αυτές. Μπορούμε να χρησιμοποιήσουμε έναν double πίνακα; Όχι, γιατί δεν ξέρουμε εξ αρχής πόσες τιμές θα εισάγει ο χρήστης! Άρα, χρησιμοποιούμε vector για την αποθήκευση των τιμών. Ένας τρόπος είναι ο ακόλουθος (υπάρχουν φυσικά διάφοροι τρόποι για να έχουμε το ίδιο αποτέλεσμα...): import java.util.*; // για χρήση του Vector public class VectorExample { Vector data = new Vector(); // δημιουργία του Vector data Scanner input = new Scanner(System.in); // για user input // Η μέθοδος που ζητείται: ver. 120305 Τμήμα Μαθηματικών ΕΚΠΑ 5

public void askandstoredata() { double d; do { System.out.println( Δώσε έναν πραγματικό αριθμό. Δώσε 0 για τερματισμό. ); d = input.nextdouble(); data.addelement(new Double(d)); // ή: data.addelement(d); } while (d!= 0); // επανέλαβε όσο η τιμή δεν γίνεται 0 // πρέπει να σβήσουμε το 0 που αποθηκεύτηκε στο τέλος! data.removeelement(0.0); // ή: data.removeelementat(data.size()-1); // ή: data.setsize(data.size()-1); } // end method } // end class Προσοχή χρειάζεται στο σημείο που αφαιρούμε το στοιχείο 0.0 από το τέλος του vector. Αν γράψουμε τη σύντομη μορφή της εντολής όπως φαίνεται παραπάνω αντί της: data.removeelement(new Double(0)), θα πρέπει να γράψουμε 0.0 και όχι απλά 0, γιατί στη δεύτερη περίπτωση η java μετατρέπει αυτόματα το 0 σε Integer και όχι σε Double, οπότε δεν βρίσκει το αντικείμενο Double 0 που βρίσκεται στο τέλος του vector! Προφανώς, οι δύο εναλλακτικοί τρόποι διαγραφής του μηδενός που φαίνονται στα σχόλια του κώδικα είναι προτιμότεροι, αφού δεν κάνουν αναζήτηση και άρα είναι πιο γρήγοροι. Σημείωση: Αναφέρθηκε ότι ο μόνος «περιορισμός» είναι ότι τα στοιχεία των vectors πρέπει να είναι αντικείμενα. Άρα, ένα vector μπορεί να περιέχει (φαινομενικά τουλάχιστον) στοιχεία διαφορετικών τύπων (φαινομενικά γιατί στην ουσία όλα τα στοιχεία είναι αντικείμενα). Π.χ., ένα vector μπορεί να είναι το εξής: index 0 1 2 3 4 vector 3.14 10 Hello a 5 7 2 --> double --> int --> String --> char --> πίνακαs ver. 120305 Τμήμα Μαθηματικών ΕΚΠΑ 6

Σημειώματα Σημείωμα Αναφοράς Copyright Εθνικόν και Καποδιστριακόν Πανεπιστήμιον Αθηνών, Μιχάλης Δρακόπουλος, 2014. Μιχάλης Δρακόπουλος. «Πληροφορική ΙI. Ενότητα 11: Vectors (διανύσματα)». Έκδοση: 1.0. Αθήνα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://opencourses.uoa.gr/courses/math106/. Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Αθηνών» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. Σελίδα 4