ΕΙΣΑΓΩΓΗ ΣΤΟ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΣΤΑΤΙΣΤΙΚΗΣ. ηµήτρης Καρλής Φώτης Σταυρόπουλος ΣΤΑΤΙΣΤΙΚΟ ΠΑΚΕΤΟ SPLUS ΑΘΗΝΑ- ΜΑΙΟΣ 2004

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

Download "ΕΙΣΑΓΩΓΗ ΣΤΟ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΣΤΑΤΙΣΤΙΚΗΣ. ηµήτρης Καρλής Φώτης Σταυρόπουλος ΣΤΑΤΙΣΤΙΚΟ ΠΑΚΕΤΟ SPLUS ΑΘΗΝΑ- ΜΑΙΟΣ 2004"

Transcript

1 ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΣΤΑΤΙΣΤΙΚΗΣ ηµήτρης Καρλής Φώτης Σταυρόπουλος ΕΙΣΑΓΩΓΗ ΣΤΟ ΣΤΑΤΙΣΤΙΚΟ ΠΑΚΕΤΟ SPLUS ΑΘΗΝΑ- ΜΑΙΟΣ 2004 ΕΚ ΟΣΕΙΣ ΟΙΚΟΝΟΜΙΚΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΑΘΗΝΩΝ

2 Πρόλογος Η SPLUS είναι ένα από τα πιο χρήσιµα στατιστικά πακέτα κυρίως εξαιτίας της ποικιλίας στατιστικών µοντέλων που προσφέρει και που µπορεί ο χρήστης να χρησιµοποιήσει αλλά και των µεγάλων προγραµµατιστικών δυνατοτήτων της για τον προγραµµατισµό και επέκταση νέων τεχνικών. Το οµώνυµο µάθηµα εντάχθηκε στο πρόγραµµα σπουδών του τµήµατος Στατιστικής για δύο κύριους λόγους. Για να αποτελέσει αφενός ένα βασικό µάθηµα προγραµµατισµού, όπου ο φοιτητής θα µάθει κάποιες βασικές ιδέες προγραµµατισµού και αφετέρου για να ξεκινήσει τη χρήση της SPLUS από τα πρώτα εξάµηνα σπουδών Οι σηµειώσεις που κρατάτε στα χέρια σας αποτελούν µια σύντοµή εισαγωγή στην SPLUS και ασχολούνται µε µερικά βασικά µόνο θέµατα που αφορούν την SPLUS, όπως βασικές δοµές δεδοµένων, κάποιες βασικές εντολές και εφαρµογές σε περιγραφική στατιστική, θεωρία κατανοµών και εκτιµητική. Παρά την προσπάθεια είναι βέβαιο πως υπάρχουν ακόµα κάποια τυπογραφικά λάθη. Θα βοηθήσει σηµαντικά, όποιος βρει τέτοια λάθη να µας ενηµερώσει στέλνοντας ένα στη διεύθυνση ώστε σε επόµενη έκδοση να απαλειφθούν όσα λάθη παραµένουν. Αθήνα, Μάιος 2004 ηµήτρης Καρλής Φώτης Σταυρόπουλος i

3 Περιεχόµενα 1 Εισαγωγη Εισαγωγή Γρήγορη εισαγωγή στην SPLUS Βασικά χαρακτηριστικά της SPLUS Βασικές ιδέες προγραµµατισµού Τα βασικά παράθυρα της SPLUS Βασικές πράξεις Εισαγωγή Αριθµητικοί τελεστές Τελεστές σύγκρισης Βασικες δοµες δεδοµενων Εισαγωγή ιανύσµατα ιδιάστατοι πίνακες Πολυδιάστατοι πίνακες Πίνακες δεδοµένων Λίστες ιάβασµα δεδοµένων από αρχεία Παράγοντες (factors) Γραφικα Εισαγωγή Ιστόγραµµα Boxplot ιάγραµµα διασποράς Πολλαπλά διαγράµµατα διασποράς Περαιτέρω παραµετροποίηση γραφηµάτων Πολλά γραφήµατα στο ίδιο πλαίσιο Πολλά γραφήµατα στο ίδιο παράθυρο Πολλά παράθυρα γραφικών Εντολeς if, while, for Εντολή if Εντολή for Εντολή while Η εντολή apply Συναρτησεις Εισαγωγή Βασικά χαρακτηριστικά Τοπικές και καθολικές µεταβλητές/αντικείµενα Επιστροφή αποτελεσµάτων Default τιµές Πλάγια αποτελέσµατα Εµβέλεια ιάφορα άλλα θέµατα Στατιστικές εφαρµογές Απλές στατιστικές συναρτήσεις- Περιγραφικά µέτρα...93 ii

4 7.2 Κατανοµές Εκτιµητική Κατανοµή Poisson Οµοιόµορφη κατανοµή Μέθοδος Newton Raphson Eµπειρική συνάρτηση κατανοµής Κεντρικό Οριακό Θεώρηµα Έλεγχοι υποθέσεων iii

5 1 ΕΙΣΑΓΩΓΗ 1.1 Εισαγωγή Η στατιστική επιστήµη έχει αναπτυχθεί ραγδαία τα τελευταία χρόνια κυρίως λόγω της ευρείας διάδοσης των υπολογιστών και της διαθεσιµότητας τους για περίπλοκους υπολογισµούς που πριν από τη χρήση των υπολογιστών φάνταζαν σχεδόν αδύνατοι. Ακόµα και ο υπολογισµός µιας µέσης τιµής χωρίς τη χρήση υπολογιστή µοιάζει µια βαρετή και κουραστική ρουτίνα. Το πρώτο µισό του 20 ου αιώνα η στατιστική βρήκε άνθιση κυρίως µέσα από µια σειρά θεωρητικών αποτελεσµάτων τα οποία όµως βρήκαν πολύ λίγες εφαρµογές αφού πολλά από αυτά για να εφαρµοσθούν στην πράξη απαιτούσαν εξαιρετικά επίπονες πράξεις. Ακόµα και η αντιστροφή ενός πίνακα µέτριων διαστάσεων ήταν µια επίπονη διαδικασία που απαιτούσε αρκετή οξυδέρκεια και εξειδίκευση. εν είναι υπερβολικό να πούµε πως η στατιστική και η ανάπτυξη των υπολογιστών πήγαν χέρι- χέρι. Μερικές σηµαντικές ανακαλύψεις και κάποιοι από τους πρώτους υπολογιστές αναπτύχθηκαν για να βοηθήσουν και να επιλύσουν στατιστικής φύσης προβλήµατα, όπως για παράδειγµα να πινακοποιηθούν και να αναλυθούν τα αποτελέσµατα της απογραφής. Ιστορικά οι πρώτοι υπολογιστές ήταν φτιαγµένοι για να εκτελούν ένα ή λίγα πράγµατα και εποµένως να επιλύουν πολύ συγκεκριµένα προβλήµατα. Στη συνέχεια αναπτύχθηκαν οι γλώσσες προγραµµατισµού οι οποίες επέτρεπαν στο χρήστη να γράφει τα δικά του προγράµµατα και εποµένως να χρησιµοποιεί τον υπολογιστή για να λύσει πολλά διαφορετικά προβλήµατα, πάντα βέβαια µέσα στην εµβέλεια του υπολογιστή. Για παράδειγµα οι πρώτοι υπολογιστές έλυναν αποκλειστικά αριθµητικά προβλήµατα και δεν µπορούσαν να χειριστούν χαρακτήρες (γράµµατα). Η ανάπτυξη γλωσσών προγραµµατισµού οδήγησε σταδιακά στην ανάπτυξη εργαλείων για τη συγγραφή πιο σύνθετων προγραµµάτων και αυτή µε τη σειρά της επέφερε την ανάπτυξη εξειδικευµένων προγραµµάτων που ειδικεύονταν σε συγκεκριµένα προβλήµατα. Με αυτή τη λογική και δεδοµένης της στενής σχέσης της στατιστικής µε τους υπολογιστές εµφανίστηκαν τα πρώτα στατιστικά πακέτα. Θα πρέπει να αναφερθεί πως στη δεκαετία του 1940 και λόγω των πολεµικών αναγκών ήδη είχαν αναπτυχθεί προγράµµατα στατιστικής προσοµοίωσης. 1

6 Τα πρώτα στατιστικά πακέτα αφορούσαν συγκεκριµένες στατιστικές τεχνικές (πχ πινακοποιήσεις, ελέγχους υποθέσεων κλπ). Ήταν γραµµένα σε µια γλώσσα προγραµµατισµού και προσέφεραν κάποιες δυνατότητες συγγραφής και προγραµµατισµού κυρίως γιατί απευθύνονταν σε εξειδικευµένο προσωπικό. Στη συνέχεια τα στατιστικά πακέτα έγιναν ολοένα πιο φιλικά προς τον απλό χρήστη χωρίς ιδιαίτερες γνώσεις και µετά την ευρεία είσοδο των παραθυρικών εφαρµογών οι προγραµµατιστικές τους ικανότητες σχεδόν παραµελήθηκαν. Σήµερα πολλά από τα στατιστικά πακέτα προσφέρουν τη δυνατότητα προγραµµατισµού µε τη χρήση οµάδων εντολών. Κάτι τέτοιο είναι φοβερά χρήσιµο στις πραγµατικές εφαρµογές αλλά και για εκπαιδευτικούς σκοπούς καθώς µπορεί ο στατιστικός να αναπτύξει και να προσαρµόσει τεχνικές στα δικά του µέτρα αλλά κυρίως γιατί επιτρέπει πλήρη έλεγχο στο χειρισµό των δεδοµένων. Η SPLUS είναι ένα πακέτο που προσφέρει σηµαντικές δυνατότητες προγραµµατισµού και συγγραφής προγραµµάτων για την επίλυση πολύπλοκων στατιστικών προβληµάτων. Έχει το τεράστιο πλεονέκτηµα ότι ενσωµατώνει µια σειρά από τεχνικές που είναι ιδιαίτερα σύγχρονες και εποµένως προσφέρει τα εργαλεία για στατιστικές αναλύσεις µε τη χρήση των πιο σύγχρονων µεθόδων. Στις σηµειώσεις αυτές θα ασχοληθούµε µε τον προγραµµατισµό στην SPLUS. Θα προσπαθήσουµε να δώσουµε µερικές συµβουλές προτροπές σε θέµατα προγραµµατισµού που ισχύουν πολύ γενικότερα και όχι µόνο για την SPLUS. 1.2 Γρήγορη εισαγωγή στην SPLUS Το στατιστικό πακέτο SPLUS είναι ένα πλήρες πακέτο για στατιστική ανάλυση που προσφέρει µια σειρά από πλεονεκτήµατα όπως Ποικιλία σύγχρονων στατιστικών µεθόδων Τις πιο σύγχρονες τεχνικές σχετικά µε θέµατα στατιστικής µοντελοποίησης Μεγάλη ποικιλία και εξαιρετική ποιότητα γραφικών Εύκολο προγραµµατισµό νέων συναρτήσεων και µεθοδολογιών Στις σηµειώσεις που κρατάτε στα χέρια σας θα ασχοληθούµε µε συντοµία µε την SPLUS από την άποψη του προγραµµατισµού και της χρήσης των εντολών και καθόλου µε την χρήση του πακέτου µέσα από τις παραθυρικές εφαρµογές. Επίσης θα ασχοληθούµε µε λίγα από τα 2

7 πολλά χρήσιµα χαρακτηριστικά της παρουσιάζοντας τα βασικά µόνο στοιχεία που χρειάζεται κανείς για να δουλέψει στην SPLUS. Ιστορικά η SPLUS ξεκίνησε ως S στα εργαστήρια AT&T Bell ως ένα περιβάλλον που παρείχε υψηλής ποιότητας γραφικά αλλά και ανάπτυξη νέων στατιστικών τεχνικών για εσωτερική χρήση της εταιρείας στις αρχές της δεκαετίας του 80. Η διάδοση της όµως στα πανεπιστήµια οδήγησε στην αποδοχή της ως ένα πολύτιµο εργαλείο που έλειπε από τον ακαδηµαϊκό χώρο κι έτσι άρχισε η ανάπτυξη του σε µεγάλο και πιο γενικευµένο βαθµό. Μεγάλο µέρος γράφτηκε πάλι από την αρχή στα τέλη του 80. Στην αρχή της δεκαετίας του 90 άρχισε η διανοµή της εµπορικής πια έκδοσης µε το όνοµα SPLUS. Από τότε υπάρχουν σε τακτά χρονικά διαστήµατα καινούριες εκδόσεις αλλά και ειδικά Modules που αναφέρονται σε συγκεκριµένες εφαρµογές. Πριν ξεκινήσουµε θα πρέπει να αναφέρουµε µερικά γενικά χαρακτηριστικά Εκτός από την SPLUS η οποία είναι εµπορικό προϊόν υπάρχει και η R η οποία διακινείται δωρεάν στο διαδίκτυο. Οποιοσδήποτε µπορεί να κατεβάσει και να χρησιµοποιήσει δωρεάν την R από τη διεύθυνση Η οµοιότητα των δύο πακέτων είναι εξαιρετική. ιαφέρουν µόνο σε κάποιες πολύ συγκεκριµένες εντολές οι οποίες συνήθως αφορούν όχι τον προγραµµατισµό αλλά τη διαχείριση δεδοµένων και µεταβλητών. Εποµένως όλες οι εντολές που θα ακολουθήσουν λειτουργούν και στην R. Τα πλεονεκτήµατα της R είναι πως είναι πολύ πιο απλή, χρειάζεται λιγότερο χώρο στο σκληρό δίσκο, εκτελείται πιο γρήγορα (ειδικά σε ότι έχει να κάνει µε επαναλήψεις). Ως µειονεκτήµατα θα µπορούσαµε να αναφέρουµε τη χαµηλότερη ποιότητα των γραφηµάτων της. Ουσιαστικά η SPLUS είναι ένα πακέτο γραµµένο µε τη χρήση κάποιας άλλης γλώσσας προγραµµατισµού και µάλιστα κανείς µπορεί να ενσωµατώσει κώδικα από άλλες γλώσσες προγραµµατισµού (π.χ. Fortran, C++). Το πακέτο περιέχει µια σειρά από ρουτίνες που εκτελούν αυτόµατα κάποιες µεθόδους και που δεν χρειάζεται ο χρήστης να προγραµµατίσει. Από την άλλη µπορεί εύκολα κανείς να εισάγει δικές του ρουτίνες ή και να τροποποιήσει τις ρουτίνες που ήδη υπάρχουν. Συνεπώς µε αυτόν τον τρόπο η SPLUS συνέχεια αναπτύσσεται και εξαπλώνεται. Μια συµβουλή που σχετίζεται µε αυτό είναι πως στο διαδίκτυο υπάρχουν χιλιάδες ρουτίνες διαθέσιµες οι οποίες δεν έχουν ενσωµατωθεί ακόµα στην SPLUS. Εποµένως πριν γράψετε κάποια πολύπλοκή ρουτίνα ψάξτε µήπως την έχει γράψει κάποιος άλλος και σας απαλλάξει από τον κόπο! 3

8 1.3 Βασικά χαρακτηριστικά της SPLUS Μερικά χρήσιµα και βασικά χαρακτηριστικά της SPLUS είναι τα ακόλουθα Όταν δουλεύουµε µε τη γραµµή εντολών της SPLUS (παράθυρο Commands) θα βλέπουµε διάφορα σύµβολα της γλώσσας. Έτσι το σύµβολο > υπονοεί πως πρέπει να γράψουµε την εντολή µας, το σύµβολο + ότι η εντολή που γράψαµε δεν έχει τελειώσει και πρέπει να συνεχίσουµε ενώ τα αποτελέσµατα ξεκινούν πάντα µε έναν αριθµό µέσα σε αγκύλες, πχ [1] για να µπορεί κανείς εύκολα να βρει το αποτέλεσµα που χρειάζεται. Επίσης το σύµβολο <- (2 χαρακτήρες) αντιστοιχεί στην εντολή εκχώρησης, δηλαδή η τιµή του δεξιού µέλους της παράστασης εκχωρείται στο αριστερό µέλος. Πχ η εντολή x<-5 σηµαίνει πως εκχωρούµε στη µεταβλητή x την τιµή 5. Κρατήστε στο µυαλό σας ότι εναλλακτικά η εντολή εκχώρησης µπορεί να γίνει µε το χαρακτήρα '_' (underscore), δηλαδή ως x_5. Σε ολόκληρο το κείµενο που ακολουθεί θα χρησιµοποιήσουµε τον πρώτο τρόπο για να εκχωρούµε τιµές σε µεταβλητές. Η SPLUS χρησιµοποιεί διαφορετικά κεφαλαία και µικρά γράµµατα και συνεπώς θα πρέπει να φροντίζετε να γνωρίζετε πως έχετε ονοµάσει τις µεταβλητές σας, µε µικρά η κεφαλαία γράµµατα. Χρησιµοποιώντας τα βελάκια µπορώ να επανακαλέσουµε προηγούµενες εντολές χωρίς να τις ξαναπληκτρολογήσουµε. Παρόµοιες δυνατότητες υπάρχουν στις επιλογές history όπου ο χρήστης µπορεί να δει όλες τις εντολές που έχει πληκτρολογήσει Ίσως η πιο σηµαντική εντολή της SPLUS είναι η εντολή help. H SPLUS διαθέτει λεπτοµερέστατη βοήθεια για τη σύνταξη όλων των εντολών αλλά και παραδείγµατα χρήσης τους. Στην SPLUS επιτρέπεται να γράφουµε µια µόνο εντολή σε κάθε γραµµή. Ο µόνος τρόπος για να γράψουµε περισσότερες εντολές σε µια γραµµή είναι να χωρίσουµε τις εντολές µε το χαρακτήρα ;. Μια άλλη επιλογή, µόνο όµως για την SPLUS και όχι για την R είναι η χρήση του παραθύρου script. Σε αυτό το παράθυρο µπορούµε να γράψουµε πολλές εντολές και να τις τρέξουµε όλες µαζί απλά µαρκάροντας τις και στη συνέχεια πατώντας ένα πλήκτρο. Θα δούµε συνοπτικά αυτό τον τρόπο εκτέλεσης εντολών στη συνέχεια. 4

9 Οτιδήποτε ακολουθεί µετά το χαρακτήρα # η SPLUS το καταλαβαίνει σαν σχόλιο και όχι σαν εντολή. Αυτό ισχύει ακόµα και αν σε µια γραµµή πληκτρολογήσουµε µια εντολή και στην ίδια γραµµή προσθέσουµε κάποιο σχόλιο µε τη χρήση του χαρακτήρα # Μια βασική ιδέα στην SPLUS είναι τα αντικείµενα. Ουσιαστικά αντικείµενα είναι όλες οι µεταβλητές αλλά και οι συναρτήσεις που ορίζουµε οι οποίες µπορεί να πάρουν µια τεράστια ποικιλία από διαφορετικούς τύπους όπως θα δούµε αργότερα. Τα αντικείµενα είναι αυτόνοµα και ουσιαστικά είναι δοµές που οργανώνουν τα δεδοµένα µας. Αποθηκεύονται σε συγκεκριµένα σηµεία της SPLUS και µπορούν να ανακληθούν όποτε χρειαστεί. Η τιµή NA (απαραίτητα µε κεφαλαία) υποδηλώνει τα missing values στην SPLUS. H SPLUS χειρίζεται τα missing values µε διάφορους τρόπους που µπορούµε εµείς να επιλέξουµε µε κατάλληλες εντολές Μετά από αυτά τα βασικά σχόλια ας ξεκινήσουµε να βλέπουµε µερικά από τα χαρακτηριστικά της γλώσσας. Στο κείµενο που ακολουθεί θα επεκταθούµε ελάχιστα στη στατιστική συµπερασµατολογία των αποτελεσµάτων και απλά θα µιλήσουµε για τις εντολές και τον προγραµµατισµό µε SPLUS. Θα πρέπει να τονίσουµε πως επειδή αυτές οι σηµειώσεις είναι απλά εισαγωγικές, ένα σηµαντικό κοµµάτι όπου η SPLUS είναι πρωτοπόρος, το κοµµάτι που αφορά στατιστική µοντελοποίηση δεν θα µας απασχολήσει. Είναι όµως σηµαντικό να γνωρίζει ο αναγνώστης πως η ποικιλία στατιστικών µοντέλων που προσφέρει η SPLUS υπάρχουν µόνο σε πολύ λίγα άλλα στατιστικά πακέτα (πχ το SAS). Συνεπώς η SPLUS είναι πολύτιµο εργαλείο για όποιον ενδιαφέρεται να ασχοληθεί σοβαρά µε τη στατιστική. Στη συνέχεια θα µιλήσουµε για κάποιες βασικές αρχές προγραµµατισµού που προφανώς ισχύουν όχι µόνο για την SPLUS αλλά και γενικότερα. 1.4 Βασικές ιδέες προγραµµατισµού Ας δούµε κάποιες βασικές αρχές προγραµµατισµού πριν δούµε µε λεπτοµέρειες την SPLUS. Ο χώρος δεν αρκεί για µια πλήρη ανάπτυξη των ιδεών αλλά είναι βασικό να γνωρίζει κανείς κάποιες βασικές τεχνικές πριν ξεκινήσει την προσπάθεια να γράψει ένα πρόγραµµα. Γενικά δεν είναι σωστό να προσπαθεί να λύσει κάποιος ένα πρόβληµα γράφοντας κατευθείαν το πρόγραµµα (τις εντολές δηλαδή που χρειάζονται). Αυτό απαιτεί πολύ βαθιά γνώση και πείρα και για ρεαλιστικά προβλήµατα, που δεν είναι απλοϊκά, το να προσπαθήσει 5

10 κανείς να λύσει απευθείας το πρόβληµα γράφοντας εντολές συνήθως δεν αποδίδει. Μια πολύ βασική ιδέα είναι να γράψει κάποιος το πρόβληµα σε αλγοριθµική µορφή, δηλαδή να γράψει τα βήµατα που χρειάζεται για την επίλυση του προβλήµατος και µετά να προσπαθεί να επιλύσει τα µικρότερα επιµέρους προβλήµατα. Μια τέτοια προσέγγιση σπάει ένα µεγάλο πρόβληµα σε επιµέρους προβλήµατα και κάνει πιο εύκολη την επίλυση τους και άρα την επίλυση ενός µεγαλύτερου προβλήµατος. Παράδειγµα: Έστω πως ενδιαφερόµαστε για την εύρεση της διαµέσου. Ένας αλγόριθµος που βρίσκει τη διάµεσο είναι ο εξής 1. Βάλε τα δεδοµένα σε αύξουσα σειρά 2. Αν το πλήθος των δεδοµένων n είναι άρτιος αριθµός τότε Βρες τις παρατηρήσεις στις θέσεις n/2 και n/2 +1 Πάρε τον αριθµητικό µέσο τους ως τη διάµεσο 3. Αν το πλήθος των δεδοµένων n είναι περιττός αριθµός τότε Η διάµεσος είναι η παρατήρηση στη θέση (n+1)/2. Ο παραπάνω αλγόριθµος έχει σπάσει το πρόβληµα της εύρεσης της διαµέσου σε µικρότερα και πιο εύκολα να λυθούν προβλήµατα. Από εκεί και πέρα οι ακριβείς εντολές που θα χρησιµοποιηθούν εξαρτώνται από τη γλώσσα που θα χρησιµοποιηθεί, ο αλγόριθµος όµως δουλεύει για οποιαδήποτε γλώσσα. Τέτοιες λύσεις σε φυσική γλώσσα είναι ιδιαίτερα χρήσιµες και πρέπει να χρησιµοποιούνται σε κάθε περίπτωση (εκτός ίσως από την περίπτωση πολύ απλών προβληµάτων που ουσιαστικά απαιτούν µια µόνο ή πολύ λίγες εντολές). Τα χαρακτηριστικά ενός καλού αλγορίθµου είναι Η γενικότητα του, δηλαδή πρέπει να είναι έτσι φτιαγµένος όχτε να µπορεί να αντιµετωπίσει ποικιλία περιπτώσεων µε επιτυχία Η πειστικότητα του, δηλαδή πρέπει να επιλύει µε επιτυχία το πρόβληµα σε λογικά χρονικά πλαίσια και κυρίως µε αποτελεσµατική χρήση των πηγών (resources) που χρησιµοποιεί και Η οριστικότητα του, δηλαδή να είναι εύκολα κατανοητό ότι ο αλγόριθµος λύνει πραγµατικά το πρόβληµα για το οποίο φτιάχτηκε. 6

11 Τα βήµατα ενός αλγορίθµου πρέπει να είναι ξεκάθαρα και αν δεν είναι ίσως αυτό σηµαίνει πως πρέπει να τα αναλύσουµε ακόµα περισσότερο. Στη συνέχεια για λόγους οικονοµίας χώρου δεν θα αναφέρουµε συχνά τη λύση των προβληµάτων σε φυσική γλώσσα, δηλαδή την κατασκευή των αλγορίθµων που επιλύουν το πρόβληµα που µας απασχολεί. Παρόλα αυτά συµβουλεύουµε τον αναγνώστη να καταφεύγει πάντα σε µια λύση σε φυσική γλώσσα πριν προσπαθήσει να γράψει το πρόγραµµα που επιλύει το πρόβληµα µε το οποίο ασχολείται. Ο προγραµµατισµός δεν είναι καθόλου εύκολη υπόθεση και για αυτό στην αρχή θα συναντήσετε αρκετά προβλήµατα τα οποία µε την πάροδο του χρόνου θα βελτιώνονται. Οι παρούσες σηµειώσεις δεν θα έχουν κανένα αποτέλεσµα αν δεν κάτσετε µπροστά στον υπολογιστή και δοκιµάσετε τις εντολές που υπάρχουν στις σηµειώσεις αυτές αλλά και όποιες άλλες απορίες σας δηµιουργηθούν κατά τη διάρκεια. 1.5 Τα βασικά παράθυρα της SPLUS Αν και θα ασχοληθούµε µόνο µε το µέρος της SPLUS που χρησιµοποιεί εντολές ας δούµε τα βασικά παράθυρα της SPLUS. Η εικόνα 1.1 δείχνει τα βασικά παράθυρα της SPLUS. Τα βασικά παράθυρα είναι (ξεκινώντας από πάνω αριστερά) Object Explorer: σε αυτό το παράθυρο µπορεί κανείς να δει όλα τα αντικείµενα που είναι διαθέσιµα αυτή τη στιγµή στην SPLUS. Επιλέγοντας κάποιο από αυτά µε το ποντίκι µπορεί κανείς να δει τα περιεχόµενα κάθε αντικειµένου ανάλογα µε τον τύπο του. Commands: Σε αυτό το παράθυρο θα πληκτρολογούµε τις εντολές που θέλουµε να εκτελεστούν. Η SPLUS εκτελεί µια εντολή κάθε φορά εποµένως αν θέλουµε περισσότερες εντολές µπορούµε να τις γράψουµε µε κάποιον επεξεργαστή κειµένου και να τις τρέξουµε στην SPLUS µε τη χρήση του copy-paste. Script: Σε αυτό το παράθυρο µπορούµε εναλλακτικά να γράφουµε και να τρέχουµε τις εντολές µας. Το µειονέκτηµα είναι πως µπορούµε να δούµε µόνο το τελευταίο αποτέλεσµα και συνεπώς αν θέλουµε να δούµε προηγούµενα αποτελέσµατα κάτι τέτοιο δεν είναι εφικτό. Report: Σε αυτό το παράθυρο εµφανίζονται διάφορα αποτελέσµατα (όχι όλα όµως) 7

12 Εικόνα 1.1. Τα βασικά παράθυρα της SPLUS Εκτός από τα παραπάνω παράθυρα υπάρχει και το Graph Sheet το οποίο είναι το παράθυρο στο οποίο εµφανίζονται γραφήµατα. Στη συνέχεια των σηµειώσεων αυτών θα αναφερθούµε σε απλές µαθηµατικές και λογικές πράξεις µε την SPLUS (κεφάλαιο 2). Στο κεφάλαιο 3 θα αναφέρουµε τις βασικές δοµές δεδοµένων και τη χρήση τους στη στατιστική συµπεριλαµβανοµένης της εισόδου δεδοµένων από αρχεία. Το κεφάλαιο 4 είναι αφιερωµένο στα γραφήµατα που µπορεί να δηµιουργήσει κανείς στην SPLUS τα οποία είναι υψηλής ποιότητας. Έµφαση δίνεται στην κατασκευή των γραφηµάτων µε τη χρήση εντολών και όχι παραθυρικών επιλογών. Το κεφάλαιο 5 περιλαµβάνει µερικές βασικές εντολές προγραµµατισµού ενώ το κεφάλαιο 6 αναφέρεται στις συναρτήσεις που µπορεί να κατασκευάσει ο χρήστης. Τέλος το κεφάλαιο 7 αναφέρεται σε εφαρµογές στη στατιστική περιλαµβάνοντας όµως µόνο απλές περιπτώσεις. 8

13 2 ΒΑΣΙΚΕΣ ΠΡΑΞΕΙΣ 2.1 Εισαγωγή Η SPLUS µας επιτρέπει να κάνουµε από τις πιο απλές πράξεις µέχρι πολύπλοκες µαθηµατικές πράξεις, όπως πχ µεγιστοποίηση συναρτήσεων. Στη συνέχεια οι εντολές της SPLUS θα περιέχονται µέσα σε πλαίσιο για να είναι ευκολότερα κατανοητές. Η πιο απλή εντολή έχει τη µορφή: > 5+5 #this is my very first command [1] 10 Παρατηρείστε τα σύµβολα >, [1] που όπως είπαµε τα βάζει η ίδια η γλώσσα αφενός για να µας προτρέψει να πληκτρολογήσουµε τις εντολές µας και αφετέρου για µας δείξει τα αποτελέσµατα. Στην παραπάνω εντολή απλά ζητήσαµε να προσθέσει 2 αριθµούς. Οτιδήποτε ακολουθεί µετά τον χαρακτήρα # αγνοείται από την SPLUS. Αυτά αποτελούν απλά κάποια σχόλια που διευκολύνουν το χρήστη. Η παράσταση θα µπορούσε να είναι πιο πολύπλοκη περιέχοντας και συναρτήσεις, όπως για παράδειγµα η επόµενη > 3+sqrt(45)*exp(0.4)+8*cos(0.5) [1] η οποία περιέχει υπάρχουσες µαθηµατικές συναρτήσεις όπως η τετραγωνική ρίζα (sqrt), ύψωση στο e (exp) και το συνηµίτονο (cos). Εντολές όπως οι παραπάνω έχουν ως µοναδικό αποτέλεσµα να εµφανιστεί στην οθόνη το αποτέλεσµα, το οποίο δεν καταχωρείται πουθενά. Αν θέλαµε να καταχωρήσουµε κάποιο αποτέλεσµα θα έπρεπε να δώσουµε την εντολή ως εξής > x <- 3+sqrt(45)*exp(0.4)+8*cos(0.5) > x [1] όπου οι χαρακτήρες <- είναι η εντολή εκχώρησης δηλαδή εκχωρεί το αποτέλεσµα στο δεξί µέλος της σχέσης στη µεταβλητή που υπάρχει στο αριστερό µέλος της σχέσης. εν πρέπει να 9

14 συγχέετε την εντολή εκχώρησης µε αλγεβρικές πράξεις, ουσιαστικά απλά εκχωρεί το αποτέλεσµα στο αριστερό µέλος. Μια µεταβλητή (αντικείµενο) µπορεί να εµφανιστεί και στα δύο µέρη µιας εντολής εκχώρησης. Για παράδειγµα η εντολή x <- x + 3 σηµαίνει πως εκτελείται η πράξη x+3 χρησιµοποιώντας την τιµή που έχει η µεταβλητή x και το αποτέλεσµα της πράξης αποθηκεύεται στη µεταβλητή x η οποία εποµένως αλλάζει τιµή. Στην εντολή που είδαµε παραπάνω, το αποτέλεσµα δεν εµφανίζεται στην οθόνη αλλά καταχωρείται στη µεταβλητή x που δηµιουργήσαµε και την οποία ζητάµε να δούµε τι περιέχει µε τη δεύτερη εντολή που απλά περιέχει το όνοµα της εντολής. Μια µεταβλητή, δηλαδή κάποιο στοιχείο το οποίο ορίζουµε µπορεί να έχει έναν από τους πολλούς τύπους που επιτρέπει η SPLUS. Μπορεί να είναι απλός αριθµός (number), διάνυσµα (vector), πίνακας (matrix), πίνακας δεδοµένων (data.frame) διάφοροι άλλοι τύποι στοιχειών µε πιο πολύπλοκη δοµή όπως λίστα (list). Όλα αυτά ονοµάζονται αντικείµενα στην SPLUS (objects). Προς τo παρόν δεν θα επεκταθούµε περισσότερα στα αντικείµενα αλλά να θυµάστε πως παίζουν σηµαντικότατο ρόλο στην ευκολία που προσφέρει η SPLUS, όπως θα δούµε αργότερα. Είναι επίσης σηµαντικό να θυµάστε πως είναι εξαιρετικά χρήσιµο να δίνετε αρχικές τιµές στις µεταβλητές / αντικείµενα που ορίζετε. Η SPLUS δεν δίνει αυτόµατα αρχικές τιµές όπως άλλες γλώσσες προγραµµατισµού. Εποµένως αν µια µεταβλητή βρεθεί στο δεξί µέρος εντολής εκχώρησης χωρίς να έχει ήδη κάποια τιµή τότε θα πάρετε µήνυµα λάθους. Στην περίπτωση που το όνοµα που δίνετε το έχετε ξαναχρησιµοποιήσει µπορεί να πάρετε είτε µήνυµα λάθους είτε το προυπάρχον αντικείµενο να αντικατασταθεί µε το καινούριο µε συνέπεια τα παλιά περιεχόµενα να χαθούν. Αυτό είναι σηµαντικό στην SPLUS γιατί κρατάει στην µνήµη της όλα τα αντικείµενα που έχουν οριστεί κατά καιρούς (εκτός αν τα διαγράψετε µε συγκεκριµένες εντολές) και συνεπώς µπορεί ύστερα από πολύ καιρό να ορίσετε ξανά µια µεταβλητή µε το ίδιο όνοµα ξεχνώντας πως έχετε ήδη µια µεταβλητή µε το ίδιο όνοµα. 10

15 2.2 Αριθµητικοί τελεστές Οι εντολές που ακολουθούν δίνουν αρχικές τιµές στα x και y και στη συνέχεια κάνουµε πράξεις µε αυτά. Βασικά τα ορίζουµε να έχουν ένα µόνο στοιχείο, αλλά αυτό για την SPLUS ισοδυναµεί µε τον ορισµό ενός διανύσµατος µε ένα µόνο στοιχείο. > x<-4 > y<-5 > x+y [1] 9 > x/y [1] 0.8 > x==y [1] F > x%%y [1] 4 > x%/%y [1] 0 > x^2+8 [1] 24 Οι πράξεις που µπορούµε να χρησιµοποιήσουµε στην SPLUS είναι οι εξής Σύµβολο Πράξη + Πρόσθεση - Αφαίρεση * Πολλαπλασιασµός / ιαίρεση ^ Ύψωση σε δύναµη %/% Ακέραια διαίρεση, επιστρέφει δηλαδή το ακέραιο µέρος της διαίρεσης %% Υπόλοιπο διαίρεσης Πίνακας 2.1. Οι διάφοροι αριθµητικοί τελεστές της SPLUS Γενικά στις παραστάσεις η προτεραιότητα στις πράξεις είναι από αριστερά προς τα δεξιά, και οι πολλαπλασιασµοί και οι διαιρέσεις έχουν υψηλότερη προτεραιότητα από την πρόσθεση και την αφαίρεση, δηλαδή εκτελούνται πρώτα. Η ύψωση σε δύναµη έχει ακόµα µεγαλύτερη προτεραιότητα, εκτελείται δηλαδή πρώτη. Αν δεν είστε σίγουροι για την προτεραιότητα µε την οποία θα εκτελεστούν οι πράξεις, ένας απλός τρόπος να αποφύγετε 'περίεργα' αποτελέσµατα είναι να χρησιµοποιήσετε παρενθέσεις. Για να δείτε τη σηµασία παρατηρείστε τις επόµενες εντολές 11

16 > (3+5)* 8 %/% 3 [1] 16 > (3+5)* (8 %/% 3 ) [1] 16 > ((3+5)* 8) %/% 3 [1] 21 > 5/0 [1] Inf Ενδιαφέρουσα είναι η τελευταία εντολή όπου η διαίρεση µε το 0 δίνει αποτέλεσµα άπειρο. Στην SPLUS η τιµή Inf αντιστοιχεί στο άπειρο και αυτό έχει χρησιµότητα σε αρκετές περιπτώσεις. Τέλος, η εντολή print χρησιµοποιείται για να εµφανίζουµε στην οθόνη αποτελέσµατα, πχ >print(x) [1] Τελεστές σύγκρισης Εκτός από τους τελεστές που κάνουν πράξεις υπάρχουν και τελεστές συγκρίσεων. Για παράδειγµα ο τελεστής == που συναντήσαµε στην προηγούµενη οµάδα εντολών, ελέγχει αν τα δύο στοιχεία είναι ίσα κι επιστρέφει την τιµή T (true) αν ισχύει η παράσταση και την τιµή F (false) αν δεν ισχύει. Άλλοι τελεστές συγκρίσεων είναι οι εξής Τελεστής Ερµηνεία > Μεγαλύτερο από < Μικρότερο από >= Μεγαλύτερο ή ίσο <= Μικρότερο ή ίσο == Ίσο!= Όχι ίσο Πίνακας 2.2. Οι διάφοροι τελεστές συγκρίσεων της SPLUS Τέλος µπορούµε να συνδυάσουµε 2 ή περισσότερες συγκρίσεις µε τη χρήση των & και. Έτσι χρησιµοποιώντας το & θα πάρουµε τιµή T αν ισχύουν όλες οι συνθήκες ενώ µε το αν ισχύει τουλάχιστον µία από αυτές. Μερικές χρήσιµες παρατηρήσεις είναι οι εξής 12

17 Η τιµή F είναι µικρότερη της τιµής Τ. Το παραπάνω είναι ενδιαφέρον όταν κάνουµε σύγκριση ανάµεσα σε δύο παραστάσεις. Μπορούµε να χρησιµοποιήσουµε συγκρίσεις στο δεξί µέλος µιας εντολής εκχώρησης. Η SPLUS δίνει την τιµή 0 στο F και την τιµή 1 στο Τ εποµένως µπορούµε να γράψουµε εκφράσεις µε τη χρήση παραστάσεων. Γενικά η χρήσης της ισότητας σε συγκρίσεις είναι παρακινδυνευµένη καθώς λόγω στρογγυλοποιήσεων αλλά και συσσώρευσης µικρών λαθών µπορεί να πάρουµε τιµή F σε περιπτώσεις που δεν θα έπρεπε και το αντίθετο. είτε ένα παράδειγµα στις εντολές που ακολουθούν. Συνήθως για να εκφράσουµε µια σύγκριση που έχει ισότητα χρησιµοποιούµε ανισότητα της µορφής ότι η απόλυτη διαφορά των δύο αριθµών είναι µικρότερη από έναν πολύ µικρό αριθµό > (3<5) > (4 < 3) [1] T > (3<5) > (4>3) [1] F > > 5 [1] T > (3 + 4) > 5 [1] T > 3 + (4 > 5) [1] 3 > (4 > 5) + 3 [1] 3 > (4 < 5) + 3 [1] 4 > > (x < -5) (x >5) [1] T > == 16 [1] T > ( ) ==0 [1] T Η σειρά προτεραιότητας λαµβάνοντας υπόψη και τους τελεστές σύγκρισης αλλά και τους αριθµητικούς τελεστές είναι η εξής 13

18 Τελεστής Ερµηνεία ^ Ύψωση σε δύναµη %/%, %% Ακέραια διαίρεση, υπόλοιπο /, * ιαίρεση, πολλαπλασιασµός +,- Πρόσθεση, αφαίρεση <, >, <=, >=, ==,!= Συγκρίσεις! Λογική άρνηση &, Λογικοί τελεστές Πίνακας 2.3 Σειρά προτεραιότητα διαφόρων τελεστών Ο τελεστής! υποδηλώνει το αντίθετο της παράστασης που ακολουθεί. Έτσι η παράσταση!(3>4) παίρνει την τιµή T επειδή η παράσταση (3>4) έχει την τιµή F. Ο παρακάτω πίνακας που ακολουθεί µας δίνει διαφόρους συνδυασµούς λογικών τελεστών. Ένας τέτοιος πίνακας ονοµάζεται και πίνακας αληθείας. Από τον πίνακα µπορούµε να δούµε την τιµή διαφόρων εκφράσεων µε βάση την τιµή των αρχικών εκφράσεων Α Β Α&Β Α Β!(A&B)!Α!B!A &!B!(Α Β) (!Α) (!Β) F F F F T T T T T T F T F T T T F F F T T F F T T F T F F T T T T T F F F F F F Πίνακας 2.4. Πίνακας αληθείας για τις παραστάσεις Α και Β Ο παραπάνω πίνακας ουσιαστικά επιβεβαιώνει τους κανόνες που είναι γνωστοί και ως κανόνες De Morgan, δηλαδή πως Η άρνηση της τοµής δύο ενδεχοµένων είναι ίση µε την ένωση των αρνήσεων των δύο ενδεχοµένων ή σχηµατικά χρησιµοποιώντας τελεστές της SPLUS!(Α&Β) = (!Α) (!Β) και Η άρνηση της ένωσης δύο ενδεχοµένων είναι ίση µε την τοµή της άρνησης των δύο ενδεχοµένων ή σχηµατικά!(α Β) = (!Α) & (!Β) 14

19 Παράδειγµα: Ένα έτος είναι δίσεκτό όταν διαιρείται µε το 4. Τα έτη όµως που διαιρούνται µε το 100 δεν είναι δίσεκτα εκτός εάν διαιρούνται µε το 400 (πχ το 2000 ήταν δίσεκτο, όχι όµως και το 1900). Να γράψετε µια έκφραση που να ελέγχει αν το έτος x είναι δίσεκτο. Ουσιαστικά θέλουµε να δούµε αν ισχύουν τα εξής 3 ενδεχόµενα Α: διαιρείται µε το 4 Β: διαιρείται µε το 100 Γ: διαιρείται µε το 400 Προκύπτει ο επόµενος πίνακα αληθείας Α Β Γ Είναι δίσεκτο Παρατηρήσεις T T T Τ T T F F T F T Αδύνατο T F F T F T T Αδύνατο F T F Αδύνατο F F T Αδύνατο F F F F Για να είναι ένα έτος δίσεκτό πρέπει να ισχύει το Α και να ισχύει είτε το Γ είτε η άρνηση του Β. Μπορούµε να εκφράσουµε τις 3 συγκρίσεις ως Α: (x%%4==0) B: (x%%100==0) Γ: (x%%400==0) Και εποµένως η συνθήκη που θέλουµε είναι η (x%%4==0) & ((x%%400==0)! (x%%100==0)) Προφανώς η συνθήκη αυτή µπορεί να γραφτεί και µε άλλους τρόπους. 15

20 16

21 3 ΒΑΣΙΚΕΣ ΟΜΕΣ Ε ΟΜΕΝΩΝ 3.1 Εισαγωγή Είδαµε ότι τα αποτελέσµατα µαθηµατικών πράξεων παρουσιάζονται στην οθόνη και «χάνονται» από τη µνήµη του υπολογιστή αν δεν καταχωρηθούν σε κάποια µεταβλητή. Η περίπτωση όπου ένας αριθµός, µία λογική τιµή ή ένα σύνολο χαρακτήρων (string) καταχωρείται σε µία µεταβλητή είναι η απλούστερη δυνατή. Η SPLUS παρέχει µία πληθώρα από δοµές δεδοµένων, οι οποίες είναι διαφορετικοί τρόποι να καταχωρηθούν πολλά δεδοµένα µαζί σε ένα αντικείµενο. Στο κεφάλαιο αυτό θα παρουσιάσουµε τις πιο βασικές: διάνυσµα (vector), διδιάστατος πίνακας (matrix), πολυ-διάστατος πίνακας (array), πίνακας δεδοµένων (data.frame) λίστα (list). Όπως θα δούµε, οι τρεις πρώτες δοµές επιβάλλουν όλα τα δεδοµένα που καταχωρούνται σε αυτές να είναι του ίδιου τύπου (π.χ. όλα αριθµοί ή όλα strings) ενώ οι δύο τελευταίες επιτρέπουν την ταυτόχρονη καταχώρηση δεδοµένων διαφορετικού τύπου. Οι λίστες µάλιστα µπορεί να περιέχουν ως στοιχεία άλλες δοµές δεδοµένων. Στο κεφάλαιο αυτό θα ασχοληθούµε επίσης µε την εισαγωγή δεδοµένων από αρχεία σε δοµές δεδοµένων της SPLUS. 3.2 ιανύσµατα Η πιο βασική δοµή της SPLUS είναι το διάνυσµα (vector). Μάλιστα, όταν ένα µεµονωµένο στοιχείο καταχωρείται σε µία µεταβλητή, αυτή στην ουσία είναι ένα διάνυσµα µε ένα στοιχείο. ιάνυσµα είναι κάθε αντικείµενο της SPLUS το οποίο περιέχει ένα σύνολο στοιχείων του ίδιου τύπου, καταχωρηµένα µε συγκεκριµένη σειρά, την οποία έχει ορίσει ο χρήστης. 17

22 ηµιουργείται µε την εντολή c( ), µε τα στοιχεία του να εµφανίζονται µέσα στις παρενθέσεις χωρισµένα µε κόµµατα. Για παράδειγµα: > vec1<-c(4,-5.2,13,9.6,-0.17) > vec1 [1] > vec2<-c(5,6,7,8,9,10,11) > vec2 [1] > vec2<-c(1,3,0) > vec2 [1] Στο παραπάνω πλαίσιο ορίσαµε το διάνυσµα vec1 µε στοιχεία τις τιµές 4, -5.2, 13, 9.6 και Επίσης ορίσαµε το vec2 του οποίου στη συνέχεια αλλάξαµε τελείως τη σύνθεση. Προσέξτε ότι η SPLUS δεν µας δίνει καµία προειδοποίηση όταν µεταβάλλουµε κάποιο αντικείµενο. Ονόµατα αντικειµένων: τα ονόµατα των αντικειµένων της SPLUS µπορούν να αποτελούνται από οποιουσδήποτε συνδυασµούς γραµµάτων, αριθµών και τελειών και πρέπει να αρχίζουν µε γράµµα. Η SPLUS δεν θα εµποδίσει το χρήστη ακόµα κι αν αυτός χρησιµοποιήσει για όνοµα αντικειµένου µία δεσµευµένη λέξη (π.χ. το όνοµα µίας έτοιµης συνάρτησης), γι αυτό απαιτείται προσοχή στην ονοµατοδοσία. Με την εντολή c() µπορούµε να επικολλήσουµε στοιχεία σε διανύσµατα ή και περισσότερα του ενός διανύσµατα µεταξύ τους. > vec3<-c(4,5,vec1) > vec3 [1] > vec4<-c(vec1,5,5) > vec4 [1] > vec5<-c(vec1,vec2) > vec5 [1] Με κάθε διάνυσµα που ορίζουµε συνδέεται και ένα διάνυσµα το οποίο περιέχει ένα όνοµα για κάθε στοιχείο του διανύσµατος. Το διάνυσµα έχει το προκαθορισµένο όνοµα 18

23 names(όνοµα διανύσµατος). Στην αρχή είναι κενό, αλλά ο χρήστης µπορεί να ορίσει τα ονόµατα. > height<-c(1.75,1.84,1.81,1.63) > names(height) NULL > names(height)<-c("jim","george","john","mary") > names(height) [1] "Jim" "George" "John" "Mary" > height Jim George John Mary Στο παραπάνω παράδειγµα, ορίσαµε το διάνυσµα height και είδαµε ότι δεν υπάρχουν προκαθορισµένα ονόµατα των στοιχείων του. Η ένδειξη NULL υποδηλώνει ότι το διάνυσµα names(height) είναι ακαθόριστο. Μετά ορίσαµε στοιχεία του διανύσµατος αυτού, δηλαδή ορίσαµε ονόµατα για τα στοιχεία του height. Βλέπουµε ότι το names(height) είναι ένα διάνυσµα µε στοιχεία τύπου string (ή character όπως τα ονοµάζει η SPLUS). Τέλος προσέξτε πως εµφανίζει η SPLUS τα στοιχεία ενός διανύσµατος τα οποία διαθέτουν ονόµατα. Προσοχή: ονόµατα πρέπει να δίνονται στα στοιχεία διανυσµάτων µόνο αν αυτό έχει νόηµα. Στο παραπάνω παράδειγµα θεωρήσαµε ότι τα δεδοµένα της height έδιναν το ύψος τεσσάρων ανθρώπων, τα ονόµατα των οποίων δόθηκαν ως στοιχεία στο names(height). Η SPLUS παρέχει µία διαδικασία για τον ορισµό διανυσµάτων τα οποία περιέχουν αριθµητικές ακολουθίες, δηλαδή ακολουθίες τιµών που ισαπέχουν µεταξύ τους. Η διαδικασία µπορεί να χρησιµοποιηθεί είτε µε τη χρήση κατάλληλης εντολής είτε µε έναν απλούστερο τρόπο. Παρουσιάζουµε πρώτα τον απλό τρόπο: > x<-1:10 > x [1] > x<-10:1 > x [1] > x<--5:5 > x [1] > x<-1.3:5.3 > x [1]

24 Παρατηρούµε ότι η χρήση του : ορίζει ακολουθία τιµών από τον αριθµό που προηγείται του : µέχρι τον αριθµό που ακολουθεί το :, µε βήµα 1. Όταν ο πρώτος αριθµός είναι µεγαλύτερος του δεύτερου τότε η ακολουθία είναι φθίνουσα. Προσέξτε ότι δεν είναι απαραίτητο να χρησιµοποιηθεί η εντολή c(). Όταν η διαφορά των δύο αριθµών δεν είναι ακέραιος αριθµός, τότε η SPLUS δηµιουργεί ακολουθία µε βήµα 1, η οποία ξεκινάει από τον πρώτο αριθµό και σταµατάει πριν ξεπεράσει το δεύτερο. > x<-1.3:5.5 > x [1] > x<-2.7:-1.7 > x [1] Προσέξτε τι έγινε στη φθίνουσα ακολουθία που περιλαµβάνει και θετικούς και αρνητικούς αριθµούς. Η εντολή για τη δηµιουργία ακολουθιών είναι η seq() η οποία δέχεται µέχρι 5 παραµέτρους. seq(from=,to=,by=,length=,along= ) from ίνει τον πρώτο όρο της ακολουθίας To ίνει τον τελευταίο όρο της ακολουθίας By ίνει το βήµα της ακολουθίας length ίνει το µήκος της ακολουθίας along ίνει το όνοµα ενός άλλου διανύσµατος. Τότε η SPLUS δηµιουργεί ακολουθία µε µήκος ίδιο µε του άλλου διανύσµατος. Πίνακας 3.1. Εντολή seq της SPLUS για δηµιουργία ακολουθιών. Από τις πρώτες τέσσερις παραµέτρους πρέπει να οριστούν οποιεσδήποτε τρεις. Η SPLUS θα υπολογίσει τότε την τέταρτη. Μπορούν να δίνονται και λιγότερες παράµετροι. Όπου µπορεί, η SPLUS δίνει default (προκαθορισµένες) τιµές στις υπόλοιπες. Συγκεκριµένα οι from, to και by έχουν default τιµή 1. 20

25 > seq(from=1,to=10,by=1) [1] > seq(from=10,to=1,by=-1) [1] > seq(to=10,by=1) [1] > seq(from=10,by=-1) [1] > seq(from=1,by=1) [1] 1 Παρατηρείστε τη χρήση των default τιµών. Ειδικά στην τελευταία περίπτωση, όπου λείπει η by, δηµιουργείται ακολουθία από τον όρο 1 ως τον όρο 1 (default τιµή της by). ίνουµε επιπλέον παραδείγµατα: > seq(from=1,by=1,length=20) [1] > seq(from=10,by=2,length=12) [1] > seq(10) [1] > seq(to=15,length=5) [1] Η along χρησιµοποιείται όπως φαίνεται στα ακόλουθα παραδείγµατα: > y<-1:20 > seq(from=10,by=10,along=y) [1] > seq(along=y) [1] > seq(y) [1] Η SPLUS παρέχει την εντολή rep() η οποία δέχεται ως παράµετρο ένα διάνυσµα το οποίο και επαναλαµβάνει τόσες φορές και µε τον τρόπο που καθορίζει ο χρήστης µέσω κατάλληλων παραµέτρων. rep(vector, times=,each= ) vector Το διάνυσµα το οποίο θα επαναληφθεί times Αριθµός επαναλήψεων του διανύσµατος. each Αριθµός επαναλήψεων κάθε στοιχείου του διανύσµατος. Πίνακας 3.2 Εντολή rep της SPLUS για δηµιουργία επαναλήψεων. Αν η times είναι ένας αριθµός, τότε όλο το vector επαναλαµβάνεται times φορές. Αν η times είναι διάνυσµα ίδιου µήκους µε το vector, το πρώτο στοιχείο του vector 21

26 επαναλαµβάνεται τόσες φορές όσο το πρώτο στοιχείο της times, το δεύτερο στοιχείο του vector επαναλαµβάνεται τόσες φορές όσο το δεύτερο στοιχείο της times, κ.ο.κ. > rep(10,5) [1] > vec2 [1] > rep(vec2,2) [1] > rep(vec2,each=2) [1] > rep(1:3,4) [1] > rep(c(1,-2,0),each=2) [1] > rep(c(1,-2,0),times=2,each=2) [1] > rep(c(1,2,3),c(5,4,3)) [1] Προσέξτε το διαφορετικό αποτέλεσµα των times και each. Επίσης δείτε στο προτελευταίο παράδειγµα ότι αν δοθούν και οι δύο παράµετροι εφαρµόζεται πρώτα η each και στο αποτέλεσµά της εφαρµόζεται η times. Οι seq και rep µπορούν να χρησιµοποιηθούν συµπληρωµατικά. Πχ η εντολή > rep(1:4,3) [1] επαναλαµβάνει 3 φορές την ακολουθία Στην SPLUS µπορούν να γίνουν πράξεις µεταξύ διανύσµατος και αριθµού. Το αποτέλεσµα είναι να γίνει η πράξη χωριστά σε κάθε στοιχείο του διανύσµατος και να παραχθεί ένα νέο διάνυσµα µε τα αποτελέσµατα. > x<-1:10 > x+2 [1] > x-2 [1] > x*2 [1] > 2*x [1] > x/2 [1] > x^2 [1] > 2^x [1]

27 Στην SPLUS υπάρχουν οι ειδικές τιµές Inf (σηµαίνει άπειρο), -Inf (σηµαίνει άπειρο) και NaN (σηµαίνει not a number, δηλαδή αποτέλεσµα πράξης που δεν ορίζεται). Η τελευταία χρειάζεται προσοχή γιατί στην οθόνη εµφανίζεται ως NA, δηλαδή το ίδιο σύµβολο µε τις τιµές που λείπουν. > x/0 [1] Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf > -1*x/0 [1] -Inf -Inf -Inf -Inf -Inf -Inf -Inf -Inf -Inf -Inf > (x-1)/0 [1] NA Inf Inf Inf Inf Inf Inf Inf Inf Inf Στην τελευταία πράξη το πρώτο στοιχείο του x-1 είναι 0 και διαιρείται µε 0. Το αποτέλεσµα 0/0 δεν ορίζεται. Παρόµοια εφαρµόζονται σε κάθε στοιχείο ενός διανύσµατος οι µαθηµατικές συναρτήσεις που ζητούµε να εφαρµοστούν στο διάνυσµα: > sqrt(x) [1] [10] > log(x) [1] [9] > log10(x) [1] [9] > exp(x) [1] [7] > (2^x+exp(x)-5*x)/log10(x) [1] -Inf [7] Σηµειώνεται ότι η συνάρτηση log επιστρέφει τον φυσικό λογάριθµο. Στα διανύσµατα µπορούν να εφαρµοστούν και λογικές πράξεις. Ζητάµε να αξιολογηθεί δηλαδή αν τα στοιχεία ενός διανύσµατος ικανοποιούν µία συνθήκη. Η συνθήκη αξιολογείται σε 23

28 κάθε στοιχείο του διανύσµατος χωριστά και το αποτέλεσµα είναι ένα διάνυσµα από λογικές τιµές (T και F, δηλαδή true και false). > height Jim George John Mary > height>1.8 Jim George John Mary F T T F > height==1.75 Jim George John Mary T F F F > height!=1.75 Jim George John Mary F T T T > height>1.8 & height<1.83 Jim George John Mary F F T F > height<1.70 height>1.82 Jim George John Mary F T F T Πράξεις γίνονται και µεταξύ διανυσµάτων ίδιου µήκους, οπότε και εκτελούνται µεταξύ των αντιστοίχων στοιχείων των διανυσµάτων. Το αποτέλεσµα είναι διάνυσµα ίδιου µήκους µε τα αρχικά. > x<-1:10 > y<-rep(c(2,3),each=5) > x [1] > y [1] > x+y [1] > x-y [1] > x^y [1] > x*y [1] > x/y [1] > (x^2)/(y-5) [1] [9] > x*y-2 [1] > x*(y-2) [1] > exp(x-y) [1]

29 [9] > x>y [1] F F T T T T T T T T > x<y [1] T F F F F F F F F F > x>y & x<8 [1] F F T T T T T F F F Προσοχή χρειάζεται σε περιπτώσεις όπου τα διανύσµατα δεν έχουν ίδιο µήκος. Τότε το µήκος του αποτελέσµατος είναι όσο και το µήκος του µεγαλύτερου από τα διανύσµατα. Όσα διανύσµατα έχουν µικρότερο µήκος, επαναλαµβάνονται από την αρχή τους τόσες φορές όσες χρειάζονται για να φτάσουν αυτό το µήκος. > x<-1:10 > y<-rep(1:2,3) > x [1] > y [1] > x+y [1] Warning messages: Length of longer object is not a multiple of the length of the shorter object in: x + y Αυτό που συνέβη είναι ότι επειδή το y έχει µήκος 6, ενώ το x έχει µήκος 10, στο τέλος του y επαναλήφθηκαν τα 4 πρώτα στοιχεία του (όσα χρειάζονταν για να αποκτήσει κι αυτό µήκος 10) και στη συνέχεια έγινε η άθροιση. Σηµειώνεται ότι το µήκος του y αυξήθηκε µόνο για να γίνει η πράξη. Με το τέλος του υπολογισµού της το y είναι όπως ήταν πριν την πράξη. Επειδή δεν επαναλήφθηκε ολόκληρο το y, η SPLUS µας έδωσε ένα προειδοποιητικό µήνυµα. > y<-1:2 > x+y [1] Στο παραπάνω παράδειγµα, το y χρειάζεται να επαναληφθεί ολόκληρο πέντε φορές πριν γίνει η πράξη, και η SPLUS δεν δίνει καµία προειδοποίηση γι αυτό. Η διαδικασία που µόλις περιγράψαµε λέγεται ανακύκλωση. Ενδέχεται ορισµένες φορές να θέλουµε να εξετάσουµε ή να εργαστούµε µε συγκεκριµένα και όχι όλα τα στοιχεία ενός διανύσµατος. Η SPLUS µας δίνει τον τρόπο να εξαγάγουµε συγκεκριµένα στοιχεία. Ο τρόπος είναι ο εξής: vector[ ], όπου vector είναι το όνοµα του 25

30 διανύσµατος ενώ µέσα στις αγκύλες προσδιορίζουµε τα συγκεκριµένα στοιχεία. Ο προσδιορισµός γίνεται µε τρεις τρόπους: δίνοντας αριθµούς που δηλώνουν τη θέση των στοιχείων στο διάνυσµα, δίνοντας τα ονόµατα των στοιχείων που επιθυµούµε (εφόσον έχουν οριστεί ονόµατα) δίνοντας λογική συνθήκη την οποία ικανοποιούν τα στοιχεία του διανύσµατος που θέλουµε > height Jim George John Mary > height[3] John 1.81 > height[c(1,3)] Jim John > height[1:2] Jim George > height[c(4,1)] Mary Jim > height[c(4,1,4)] Mary Jim Mary Βλέπουµε ότι µε τη χρήση αριθµών µπορούµε να ζητήσουµε τα στοιχεία µε οποιαδήποτε σειρά θέλουµε. Μπορούµε ακόµα και να τα ζητήσουµε πάνω από µία φορά (αν και είναι αµφίβολο ότι θα χρειαζόµασταν ποτέ αυτή τη δυνατότητα). > height["mary"] Mary 1.63 > height[c("mary","jim")] Mary Jim > height[height<=1.8] Jim Mary > height[height<=1.8 height>=1.82] Jim George Mary Οι λογικές συνθήκες στα παραπάνω παραδείγµατα αναφέρονται στο ίδιο διάνυσµα. Μπορούν όµως να αναφέρονται και σε ένα άλλο, αρκεί βέβαια αυτό να συνδέεται εννοιολογικά 26

31 µε το διάνυσµα από το οποίο εξάγουµε στοιχεία. Για παράδειγµα έστω ότι για τα άτοµα των οποίων έχουµε καταγράψει το ύψος στο height, έχουµε καταγράψει και το φύλο στο διάνυσµα sex. Μπορούµε να ζητήσουµε τα ύψη των αντρών. > sex<-c("male","male","male","female") > height[sex=="male"] Jim George John > height[height>1.8 & sex=="male"] George John Για να δηλώσουµε ποια στοιχεία δεν θέλουµε να εξαχθούν δίνουµε τη θέση τους µε ένα «µείον» µπροστά τους. > height[-c(2,4)] Jim John Μία χρήσιµη συνάρτηση είναι η length() η οποία µας επιστρέφει τον αριθµό στοιχείων του διανύσµατος. Αν υπάρχουν τιµές που λείπουν (κωδικοποιηµένες από την SPLUS ως NA) µετρώνται και αυτές. Η λογική συνάρτηση is.na() µας επιστρέφει ένα λογικό διάνυσµα µε τιµή Τ όπου η παράµετρος της έχει τιµή που λείπει. > length(height) [1] 4 > x [1] > x[3]<-na > x [1] 1 2 NA > is.na(x) [1] F F T F F F F F F F > x<-0:2 > x/0 [1] NA Inf Inf > is.na(x/0) [1] T F F Η SPLUS παρέχει εντολές για την εύρεση της ελάχιστης και της µέγιστης τιµής ενός διανύσµατος (min και max αντίστοιχα) και για την εύρεση του αθροίσµατος και του γινοµένου των τιµών του (sum και prod αντίστοιχα). > min(height) [1]

32 > max(height) [1] 1.84 > sum(height) [1] 7.03 > prod(height) [1] Τέλος, προσφέρεται η εντολή sort για την ταξινόµηση των τιµών ενός διανύσµατος κατ αύξουσα τάξη µεγέθους. Αν στο αποτέλεσµά της εφαρµόσουµε την εντολή rev οι τιµές του διανύσµατος ταξινοµούνται κατά φθίνουσα τάξη µεγέθους. Παρατηρείστε στο ακόλουθο παράδειγµα πως συνδυάζουµε τις δύο εντολές για να ταξινοµήσουµε απευθείας σε φθίνουσα σειρά ένα διάνυσµα. > height [1] > rev(sort(height)) [1] > sort(height) [1] Προφανώς, η εφαρµογή της sort ή της rev δεν επηρεάζει το διάνυσµα εκτός από την περίπτωση που το αποτέλεσµα των εντολών αυτών εκχωρηθεί στο ίδιο το διάνυσµα. 3.3 ιδιάστατοι πίνακες Οι πίνακες (πίνακας matrix) είναι δοµές δεδοµένων οι οποίες έχουν τα στοιχεία τους διατεταγµένα σε γραµµές και στήλες. Κάθε πίνακας περιέχει στοιχεία του ίδιου τύπου (αριθµούς, λογικές τιµές ή character). ηµιουργούνται εφαρµόζοντας την εντολή matrix() σε ένα διάνυσµα και δηλώνοντας πόσες γραµµές και στήλες επιθυµούµε να έχει ο πίνακας. > x<-c(1:3,11:13,21:23,31:33) > x [1] > y<-matrix(x,ncol=3) > y [,1] [,2] [,3] [1,] [2,] [3,] [4,] > y<-matrix(x,nrow=4) > y [,1] [,2] [,3] [1,] [2,]

33 [3,] [4,] Οι παράµετροι ncol και nrow δηλώνουν αριθµό στηλών και αριθµό γραµµών αντίστοιχα. Μόνο η µία αρκεί. Η άλλη θα υπολογιστεί αυτόµατα από την SPLUS. Προσέξτε στα παραπάνω παραδείγµατα ότι τα στοιχεία του διανύσµατος, καθώς αυτό «γεµίζει» τον πίνακα, τον γεµίζουν στήλη-στήλη. Αν θέλουµε να τον γεµίσουν γραµµή-γραµµή πρέπει να δώσουµε στην εντολή matrix() την παράµετρο byrow=t. > y<-matrix(x,ncol=3,byrow=t) > y [,1] [,2] [,3] [1,] [2,] [3,] [4,] Συγκρίνετε τα αποτελέσµατα µε τον προηγούµενο πίνακα y. Σηµείωση: Μπορούµε να θεωρήσουµε ότι υπάρχουν ένα δείκτης γραµµών κι ένας δείκτης στηλών που δείχνουν το στοιχείο του πίνακα στο οποίο αναφερόµαστε ανά πάσα στιγµή. Όταν ο πίνακας «γεµίζει» στήλη-στήλη τα στοιχεία καταχωρούνται στη στήλη 1 µέχρι αυτή να γεµίσει, δηλαδή µέχρι ο δείκτης γραµµής να µεταβληθεί από 1 ως το πλήθος γραµµών. Μετά αρχίζει να γεµίζει η στήλη 2, πάλι µέχρι ο δείκτης γραµµών να µετακινηθεί από το 1 ως τον αριθµό γραµµών. Για κάθε µεταβολή δηλαδή της τιµής του δείκτη στηλών, ο δείκτης γραµµών παίρνει όλο το εύρος τιµών του. Αυτό το φαινόµενο περιγράφεται µε τη φράση «ο δείκτης γραµµών κινείται γρηγορότερα από το δείκτη στηλών». Θα ξανασυναντήσουµε την ορολογία αυτή όταν µιλήσουµε για πολυδιάστατους πίνακες. Μπορούµε να δώσουµε ονόµατα στις γραµµές και στήλες ενός πίνακα µε χρήση της εντολής dimnames(). Παίρνει ως παράµετρο δύο διανύσµατα ονοµάτων: το πρώτο αντιστοιχεί στις γραµµές και το δεύτερο στις στήλες. > k<-matrix(c(2.3,1.4,0,-12,5.27,6),ncol=3) > k [,1] [,2] [,3] [1,] [2,] > dimnames(k)<-list(c("row 1","Row 2"),c("Col 1","Col 2","Col 3")) > k Col 1 Col 2 Col 3 29

34 Row 1 Row > dimnames(k)<-list(null,c("col 1","Col 2","Col 3")) > k Col 1 Col 2 Col 3 [1,] [2,] Η δεσµευµένη λέξη NULL χρησιµοποιείται υποχρεωτικά για να δηλώσουµε ότι δεν θέλουµε να δώσουµε ή ότι θέλουµε να σβήσουµε τα ονόµατα µίας ή και των δύο διαστάσεων. Η dimnames µπορεί να δοθεί και ως παράµετρος της εντολής matrix() µε τη µορφή matrix(,dimnames=list ). Οι διαστάσεις ενός πίνακα επιστρέφονται µε την εντολή dim(). Η ίδια εντολή δηµιουργεί πίνακες. > dim(k) [1] 2 3 > x<-1:6 > dim(x)<-c(3,2) > x [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 Όταν ο πίνακας που ζητάµε να φτιαχτεί έχει περισσότερα στοιχεία από το διάνυσµα από το οποίο παράγεται, τότε η SPLUS πάλι κάνει ανακύκλωση και µας δίνει σχετική προειδοποίηση. > matrix(c(12,-3,4,5,7,-1,0,4),ncol=3) [,1] [,2] [,3] [1,] [2,] [3,] Warning messages: Replacement length not a multiple of number of elements to replace in: data[1:ll] <- old Πίνακες δηµιουργούνται και µε τη συνένωση διανυσµάτων. Τα διανύσµατα τοποθετούνται το ένα δίπλα στο άλλο σαν στήλες αν δοθούν ως παράµετροι της εντολής cbind() και το ένα κάτω από το άλλο σαν γραµµές αν δοθούν ως παράµετροι της εντολής rbind().ανάλογα µε την εντολή, τα ονόµατα των διανυσµάτων γίνονται ονόµατα στηλών ή γραµµών. Αν τα διανύσµατα δεν έχουν το ίδιο µήκος, η SPLUS εφαρµόζει ανακύκλωση ώστε να τα φέρει όλα στο µήκος του µακρύτερου. 30

35 > x<-c(5,3,4,7) > y<-c(-2,-1,0,4) > cbind(x,y) x y [1,] 5-2 [2,] 3-1 [3,] 4 0 [4,] 7 4 > cbind(y,x) y x [1,] -2 5 [2,] -1 3 [3,] 0 4 [4,] 4 7 > rbind(x,y,x) [,1] [,2] [,3] [,4] x y x Τέλος µπορούµε να δηµιουργήσουµε διαγώνιους πίνακες µε την εντολή diag(). Αν η παράµετρος είναι διάνυσµα τότε τα στοιχεία του τοποθετούνται στη διαγώνιο. Αν η παράµετρος είναι αριθµός τότε δηµιουργείται πίνακας µε αριθµό γραµµών και στηλών όσο ο αριθµός και την τιµή 1 σε όλα τα διαγώνια στοιχεία. > x [1] > diag(x) [,1] [,2] [,3] [,4] [1,] [2,] [3,] [4,] > diag(4) [,1] [,2] [,3] [,4] [1,] [2,] [3,] [4,] Μαθηµατικές και λογικές πράξεις που εφαρµόζονται σε πίνακες, εφαρµόζονται σε κάθε στοιχείο τους και το αποτέλεσµα είναι πίνακας µε τις ίδιες διαστάσεις µε τους αρχικούς. > x<-matrix(1:9,ncol=3) > x [,1] [,2] [,3] [1,] [2,] [3,] > x^2 [,1] [,2] [,3] 31

36 [1,] [2,] [3,] > sqrt(x) [,1] [,2] [,3] [1,] [2,] [3,] > x/0 [,1] [,2] [,3] [1,] Inf Inf Inf [2,] Inf Inf Inf [3,] Inf Inf Inf > x==4 [,1] [,2] [,3] [1,] F T F [2,] F F F [3,] F F F > x>3 & x<6 [,1] [,2] [,3] [1,] F T F [2,] F T F [3,] F F F > y<-matrix(-3:5,ncol=3) > y [,1] [,2] [,3] [1,] [2,] [3,] > x>2 & y>0 [,1] [,2] [,3] [1,] F F T [2,] F T T [3,] F T T Επιµέρους στοιχεία πίνακα εξάγονται µε τρόπο αντίστοιχο των διανυσµάτων, µόνο που µέσα στις αγκύλες πρέπει να αναφερόµαστε και σε γραµµές και σε στήλες, χωρίζοντας τις συνθήκες ή αριθµούς που δίνουµε µε κόµµατα. > x [,1] [,2] [,3] [,4] [1,] [2,] [3,] > x[1,1] [1] -5 > x[1:2,c(4,2)] [,1] [,2] [1,] 4-2 [2,] 5-1 > x[x<=0] [1] > x[-2,-1] [,1] [,2] [,3] 32

37 [1,] [2,] Παρατηρείστε ότι όταν χρησιµοποιείται λογική συνθήκη τα αποτελέσµατα επιστρέφονται ως διάνυσµα. Με την τελευταία εντολή δηλώνουµε ότι δεν θέλουµε τη δεύτερη γραµµή ούτε την πρώτη στήλη του πίνακα. Αν παραλείψουµε να δώσουµε αριθµό για κάποια διάσταση είναι σαν να δηλώνουµε το πλήρες εύρος της διάστασης. > x[2,] [1] > x[,3] [1] > x[,] [,1] [,2] [,3] [,4] [1,] [2,] [3,] Ένας άλλος τρόπος να εξαγάγουµε στοιχεία πιο «ακανόνιστα» κατανεµηµένα σε έναν πίνακα είναι να κατασκευάσουµε έναν άλλο πίνακα µε δύο στήλες. Κάθε γραµµή του δίνει τον αριθµό γραµµής και στήλης ενός στοιχείου. Στο παρακάτω παράδειγµα ζητάµε τα στοιχεία [1,3] (πρώτη γραµµή, τρίτη στήλη) και [2,4] (δεύτερη γραµµή, τέταρτη στήλη) του πίνακα x. > z<-matrix(c(1,3,2,4),ncol=2,byrow=t) > z [,1] [,2] [1,] 1 3 [2,] 2 4 > x[z] [1] 1 5 Τέλος, η εντολή diag() επιστρέφει τα στοιχεία της κύριας διαγωνίου του πίνακα. Προσέξτε ποια στοιχεία επιστρέφονται όταν ο πίνακας δεν είναι τετραγωνικός. > x [,1] [,2] [,3] [,4] [1,] [2,] [3,] > diag(x) [1] > y<-matrix(1:9,ncol=3) > y [,1] [,2] [,3] [1,]

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

επιµέλεια Θοδωρής Πιερράτος Βασικές έννοιες προγραµµατισµού Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως,

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

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

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

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

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

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

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

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη Επιλογή και επανάληψη Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως, ότι στο

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

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

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

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

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

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

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

Πρώτη επαφή με το μαθηματικό πακέτο Mathematica

Πρώτη επαφή με το μαθηματικό πακέτο Mathematica Πρώτη επαφή με το μαθηματικό πακέτο Mathematica Με δύο λόγια, μπορούμε να πούμε ότι η Mathematica είναι ένα πρόγραμμα που το χρησιμοποιούμε για να κάνουμε αναλυτικούς και αριθμητικούς υπολογισμούς αλλά

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

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) 1 ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) ιάλεξη 1 1.1 ΕΙΣΑΓΩΓΗ ΣΤΗ FORTRAN 77 Ένα πρόγραµµα σε οποιαδήποτε γλώσσα προγραµµατισµού δεν τίποτα άλλο από µια σειρά εντολών που πρέπει

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

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

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

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

Προγραµµατισµός στην Basic

Προγραµµατισµός στην Basic Προγραµµατισµός στην Basic 1. εντολή εισόδου Χρησιµοποιείται η εντολή INPUT, η οποία µπορεί να συνταχθεί : α. INPUT X, αν το δεδοµένο που ζητάει είναι αριθµητικό ή β. INPUT X$, αν το δεδοµένο που ζητάει

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

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα. ΚΕΦΑΛΑΙΟ 7 ο 1. Επιλογή της κατάλληλης γλώσσας προγραµµατισµού Εκατοντάδες γλώσσες προγραµµατισµού χρησιµοποιούνται όπως αναφέρθηκε σήµερα για την επίλυση των προβληµάτων µε τον υπολογιστή, τη δηµιουργία

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

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

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

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

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Σύντομες εισαγωγικές σημειώσεις για την. Matlab Σύντομες εισαγωγικές σημειώσεις για την Matlab Δήλωση Μεταβλητών Για να εισάγει κανείς δεδομένα στη Matlab υπάρχουν πολλοί τρόποι. Ο πιο απλός είναι στη γραμμή εντολών να εισάγουμε αυτό που θέλουμε και

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

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

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

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

Σχήµα 3.1: Εισαγωγή shift register σε βρόγχο for-loop.

Σχήµα 3.1: Εισαγωγή shift register σε βρόγχο for-loop. Η δοµή «Shift register» 1. Η δοµή «Shift register» εισάγεται στο βρόγχο for-loop αλλά και σε άλλους βρόγχους που θα δούµε στη συνέχεια, όπως ο βρόγχος «While loop». Ο τρόπος εισαγωγής και λειτουργίας της

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

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 5 ο Έλεγχος Προγράµµατος Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Η εντολή if (Ι) Η εντολή if είναι µία από τις βασικότερες δοµές ελέγχου ροής στη C, αλλά και στις περισσότερες

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ. Δρ. Π. Νικολαΐδου

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ. Δρ. Π. Νικολαΐδου ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Δρ. Π. Νικολαΐδου Προγραμματίζοντας στη γλώσσα R Εισαγωγή ( 1 ο Μάθημα ) Βασικές εντολές - λειτουργίες Μπορούμε να διαγράψουμε το περιεχόμενο της R κονσόλας επιλέγοντας Edit>Clear

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού Μάθημα 2ο Μεταβλητές Μεταβλητή ονομάζεται ένα μέγεθος

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

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) 8 ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) ιάλεξη 2 2.1 ΜΕΤΑΒΛΗΤΕΣ (ΜΕΡΟΣ Β) Στην προηγούµενη διάλεξη µάθαµε ότι µπορούµε να χρησιµοποιούµε τη ρητή ή την αυτονόητη δήλωση µεταβλητών

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

Ανάλυση Δεδοµένων µε χρήση του Στατιστικού Πακέτου R

Ανάλυση Δεδοµένων µε χρήση του Στατιστικού Πακέτου R Ανάλυση Δεδοµένων µε χρήση του Στατιστικού Πακέτου R, Επίκουρος Καθηγητής, Τοµέας Μαθηµατικών, Σχολή Εφαρµοσµένων Μαθηµατικών και Φυσικών Επιστηµών, Εθνικό Μετσόβιο Πολυτεχνείο. Περιεχόµενα Εισαγωγή στη

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

Μαθηµατικοί Υπολογισµοί στην R

Μαθηµατικοί Υπολογισµοί στην R Κεφάλαιο 3 Μαθηµατικοί Υπολογισµοί στην R Ενα µεγάλο µέρος της ανάλυσης δεδοµένων απαιτεί διάφορους µαθηµατικούς υπολογισµούς. Αυτό το κεφάλαιο εισαγάγει τον αναγνώστη στις διάφορες δυνατότητες που έχει

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

char name[5]; /* define a string of characters */

char name[5]; /* define a string of characters */ Συµβολοσειρές (Strings) Συµβολοσειρά (string) είναι µια σειρά αλφαριθµητικών χαρακτήρων (γενικά εκτυπώσιµων συµβόλων ASCII). Όταν λέµε σειρά εννοούµε διαδοχικές θέσεις µνήµης που µπορούν να αντιµετωπισθούν

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

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

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

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

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

Εισαγωγή στο Πρόγραμμα Maxima Εισαγωγή στο Πρόγραμμα Maxima Το Maxima είναι ένα πρόγραμμα για την εκτέλεση μαθηματικών υπολογισμών, συμβολικών μαθηματικών χειρισμών, αριθμητικών υπολογισμών και γραφικών παραστάσεων. Το Maxima λειτουργεί

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

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

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

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

Τυπικές χρήσεις της Matlab

Τυπικές χρήσεις της Matlab Matlab Μάθημα 1 Τι είναι η Matlab Ολοκληρωμένο Περιβάλλον Περιβάλλον ανάπτυξης Διερμηνευμένη γλώσσα Υψηλή επίδοση Ευρύτητα εφαρμογών Ευκολία διατύπωσης Cross platform (Wintel, Unix, Mac) Τυπικές χρήσεις

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

ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK

ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK ρ. Γεώργιος Φ. Φραγκούλης Καθηγητής Ver. 0.2 9/2012 ιανύσµατα & ισδιάστατοι πίνακες Ένα διάνυσµα u = (u1, u2,, u ) εισάγεται στη MATLAB ως εξής : u=[ u1, u2,, un ] ή u=[ u1

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

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex Γραµµικός Προγραµµατισµός - Μέθοδος Simplex Η πλέον γνωστή και περισσότερο χρησιµοποιηµένη µέθοδος για την επίλυση ενός γενικού προβλήµατος γραµµικού προγραµµατισµού, είναι η µέθοδος Simplex η οποία αναπτύχθηκε

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

Εντολές της LOGO (MicroWorlds Pro)

Εντολές της LOGO (MicroWorlds Pro) Εντολές της LOGO (MicroWorlds Pro) Εντολές εμφάνισης (εξόδου) και αριθμητικές πράξεις δείξε Εμφανίζει στην οθόνη έναν αριθμό, το αποτέλεσμα πράξεων, μια λέξη ή μια λίστα (ομάδα) λέξεων. δείξε 200 200 δείξε

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

Επαναληπτικές δοµές. µτ α.τ. Όχι. ! απαγορεύεται µέσα σε µία ΓΙΑ να µεταβάλλουµε τον µετρητή! διότι δεν θα ξέρουµε µετά πόσες επαναλήψεις θα γίνουν

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

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

Σημαντικές δυνατότητες των σύγχρονων υπολογιστικών μηχανών: Αξιόπιστη καταγραφή πολύ μεγάλου όγκου δεδομένων

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

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

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

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

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

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

Επιµέλεια Θοδωρής Πιερράτος Ερωτήσεις Σωστό - Λάθος 1. Ο αλγόριθµος πρέπει να τερµατίζεται µετά από εκτέλεση πεπερασµένου αριθµού εντολών. 2. Η είσοδος σε έναν αλγόριθµο µπορεί να είναι έξοδος σε έναν άλλο αλγόριθµο. 3. Ένας αλγόριθµος

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

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo;

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

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

o AND o IF o SUMPRODUCT

o AND o IF o SUMPRODUCT Πληροφοριακά Εργαστήριο Management 1 Information Συστήματα Systems Διοίκησης ΤΕΙ Τμήμα Ελεγκτικής Ηπείρου Χρηματοοικονομικής (Παράρτημα Πρέβεζας) και Αντικείµενο: Μοντελοποίηση προβλήµατος Θέµατα που καλύπτονται:

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

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

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

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

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

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

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

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

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου

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

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

2 o Καλοκαιρινό σχολείο Μαθηµατικών Νάουσα 2008

2 o Καλοκαιρινό σχολείο Μαθηµατικών Νάουσα 2008 2 o Καλοκαιρινό σχολείο Μαθηµατικών Νάουσα 2008 Μικρό Θεώρηµα του Fermat, η συνάρτηση του Euler και Μαθηµατικοί ιαγωνισµοί Αλέξανδρος Γ. Συγκελάκης ags@math.uoc.gr Αύγουστος 2008 Αλεξανδρος Γ. Συγκελακης

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

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

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram. Εισαγωγή αρχείων δεδοµένων 1. Η εισαγωγή αρχείων δεδοµένων στο LaVIEW γίνεται στο Block Diagram µε την εντολή Read From Spreadsheet File. 2. Εισάγουµε την εντολή Read From Spreadsheet File στο Block Diagram

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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

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

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

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

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

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

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

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

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

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

Βασικά στοιχεία της Java

Βασικά στοιχεία της Java Βασικά στοιχεία της Java προτάσεις, εκφράσεις, µεταβλητές, σταθερές, τελεστές Ορισµοί Πρόταση (statement) είναι µία απλή εντολή σε µία γλώσσα προγραµµατισµού. Γιαπαράδειγµα: int x=12; Έκφραση (expression)

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΠΡΑΞΕΙΣ. Παράδειγμα #1. Πράξεις μεταξύ ακεραίων αριθμών

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΠΡΑΞΕΙΣ. Παράδειγμα #1. Πράξεις μεταξύ ακεραίων αριθμών ΥΠΟΛΟΓΙΣΤΕΣ Ι ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΠΡΑΞΕΙΣ Τύποι δεδομένων Οι παρακάτω τύποι δεδομένων υποστηρίζονται από τη γλώσσα προγραμματισμού Fortran: 1) Ακέραιοι αριθμοί (INTEGER). 2) Πραγματικοί αριθμοί απλής ακρίβειας

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

2.2.3 Η εντολή Εκτύπωσε

2.2.3 Η εντολή Εκτύπωσε 2.2.3 Η εντολή Εκτύπωσε Η εντολή Εκτύπωσε χρησιµοποιείται προκειµένου να εµφανίσουµε κάτι στην οθόνη του υπολογιστή. Για τον λόγο αυτό ονοµάζεται και εντολή εξόδου. Ισοδύναµα µπορεί να χρησιµοποιηθεί και

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

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

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Σ ΗΜΕΡΗΣΙΟΥ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΡΙΤΗ 3 ΙΟΥΝΙΟΥ 2003 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

Κεφάλαιο 4ο: Εντολές επιλογής

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

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

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

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

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

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

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΟ 2 2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου 2.4.1 Δομή ακολουθίας ΚΕΦΑΛΑΙΟ 7 7.1 7.9 Σταθερές (constants): Προκαθορισμένες τιμές που παραμένουν

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

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

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

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

Με Χρήση της ΦΟΡΜΑΣ να προσθέσετε εγγραφές στον πίνακα που ακολουθεί

Με Χρήση της ΦΟΡΜΑΣ να προσθέσετε εγγραφές στον πίνακα που ακολουθεί 4. Ε ΟΜΕΝΑ (DATA) Το excel έχει τη δυνατότητα να θεωρεί µία περιοχή του φύλλου εργασίας σαν µια βάση δεδοµένων όπου η κάθε γραµµή είναι µία εγγραφή και η κάθε κολώνα ένα πεδίο. Το όνοµα του κάθε πεδίου

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

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

scanf() scanf() stdin scanf() printf() int float double %lf float

scanf() scanf() stdin scanf() printf() int float double %lf float Εισαγωγή Στον Προγραµµατισµό «C» Είσοδος Δεδοµένων Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Η συνάρτηση scanf() Η συνάρτηση

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

Ας δούμε λίγο την θεωρία με την οποία ασχοληθήκαμε μέχρι τώρα.

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

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

Εισαγωγή στον Προγραµµατισµό «C»

Εισαγωγή στον Προγραµµατισµό «C» Εισαγωγή Στον Προγραµµατισµό «C» Δείκτες Πανεπιστήµιο Πελοποννήσου Τµήµα Επιστήµης & Τεχνολογίας Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Μνήµη Υπολογιστή Η µνήµη RAM (Random Access Memory) ενός υπολογιστή

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor ΕισαγωγήστουςΗ/Υ PHP Hypertext Preprocessor ΤιείναιηPHP; PHP είναιµία server-based scripting language σχεδιασµένη ειδικά για το web. Σε µία html σελίδα µπορούµε να ενσωµατώσουµε php κώδικα που εκτελείται

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

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

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

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

Τεχνικές Αναπαράστασης αλγορίθµων Ψευδοκώδικας Διάγραµµα Ροής Αλγοριθµικές δοµές (Ακολουθία Επιλογή Επανάληψη)

Τεχνικές Αναπαράστασης αλγορίθµων Ψευδοκώδικας Διάγραµµα Ροής Αλγοριθµικές δοµές (Ακολουθία Επιλογή Επανάληψη) Τεχνικές Αναπαράστασης αλγορίθµων Διάγραµµα Ροής Αλγοριθµικές δοµές (Ακολουθία Επιλογή ) 1 Βασικές έννοιες Τυποποίηση αναπαράστασης αλγορίθµου - Ανάγκη ύπαρξης ενός κοινού τρόπου αναπαράστασης αλγορίθµων

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1 Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave Περιεχόμενο εργαστηρίου: - Το περιβάλλον ανάπτυξης προγραμμάτων Octave - Διαδικασία ανάπτυξης προγραμμάτων MATLAB - Απλά

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

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

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

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

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB Εαρινό εξάμηνο 2018-2019 Τμήμα Μαθηματικών ΑΠΘ Διδάσκουσα: Αγγελική Παπάνα Μεταδιδακτορική Ερευνήτρια Πολυτεχνική σχολή, Α.Π.Θ. & Οικονομικό Τμήμα, Πανεπιστήμιο

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

Οι δείκτες στη γλώσσα C

Οι δείκτες στη γλώσσα C Οι δείκτες στη γλώσσα C Δείκτης είναι µία µεταβλητή η οποία περιέχει σαν τιµή µία διεύθυνση της µνήµης Η τιµή ενός δείκτη δείχνει σε µία άλλη µεταβλητή, η οποία µπορεί να προσεγγισθεί έµµεσα µε τους ειδικούς

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 10 ΟΥ ΚΕΦΑΛΑΙΟΥ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Πως ορίζεται ο τμηματικός προγραμματισμός; Τμηματικός προγραμματισμός

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

Σ η μ ε ι ώ σ ε ι ς γ ι α τ ο υ π ο λ ο γ ι σ τ ι κ ό φ ύ λ λ ο

Σ η μ ε ι ώ σ ε ι ς γ ι α τ ο υ π ο λ ο γ ι σ τ ι κ ό φ ύ λ λ ο Σ η μ ε ι ώ σ ε ι ς γ ι α τ ο υ π ο λ ο γ ι σ τ ι κ ό φ ύ λ λ ο Το λογισμικό αυτό μας διευκολύνει να κατηγοριοποιήσουμε τα δεδομένα μας, να τα ταξινομήσουμε με όποιον τρόπο θέλουμε και να κάνουμε σύνθετους

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

Πρόβλημα 29 / σελίδα 28

Πρόβλημα 29 / σελίδα 28 Πρόβλημα 29 / σελίδα 28 Πρόβλημα 30 / σελίδα 28 Αντιμετάθεση / σελίδα 10 Να γράψετε αλγόριθμο, οποίος θα διαβάζει τα περιεχόμενα δύο μεταβλητών Α και Β, στη συνέχεια να αντιμεταθέτει τα περιεχόμενά τους

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

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 4 ο Εργαστήριο. Διανύσματα-Πίνακες 1 ο Μέρος

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 4 ο Εργαστήριο. Διανύσματα-Πίνακες 1 ο Μέρος Εργαστήρια Αριθμητικής Ανάλυσης Ι 4 ο Εργαστήριο Διανύσματα-Πίνακες 1 ο Μέρος 2017 Εισαγωγή Όπως έχουμε προαναφέρει σε προηγούμενα εργαστήρια. Ο βασικός τύπος δεδομένων στο Matlab είναι οι πίνακες. Ένα

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

ΣΚΗΝΙΚΟ ΥΠΟΒΑΘΡΑ ΑΡΧΙΚΗ

ΣΚΗΝΙΚΟ ΥΠΟΒΑΘΡΑ ΑΡΧΙΚΗ Scratch 1. Σκηνικό (Αρχική Έχασες Κέρδισες). Η πρώτη μου δουλειά όταν φτιάχνω ένα παιχνίδι είναι πάω στο ΣΚΗΝΙΚΟ - ΥΠΟΒΑΘΡΑ και να σχεδιάσω (ή να αντιγράψω μια εικόνα από το διαδίκτυο ή από οπουδήποτε

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

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ Λογικός τύπος ( ) Ο τύπος είναι κατάλληλoς για την αναπαράσταση ποσοτήτων που μπορούν να πάρουν δύο μόνο τιμές (π.χ. ναι/όχι, αληθές/ψευδές, ). Τιμές ή Δήλωση Εκχώρηση Ισοδυναμία με ακέραιους

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

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας

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

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

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

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η Δ.Π.Θ. - Πολυτεχνική Σχολή Τμήμα Μηχανικών Παραγωγής & Διοίκησης Ακαδ. έτος 2016-2017 Τομέας Συστημάτων Παραγωγής Εξάμηνο Β Αναπληρωτής Καθηγητής Στέφανος Δ. Κατσαβούνης ΜΑΘΗΜΑ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η Δημοκρίτειο Πανεπιστήμιο Θράκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Παραγωγής & Διοίκησης Ακαδ. έτος 2015-2016 Τομέας Συστημάτων Παραγωγής Εξάμηνο Β Αναπληρωτής Καθηγητής Στέφανος Δ. Κατσαβούνης ΜΑΘΗΜΑ :

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

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

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

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

3 Αναδροµή και Επαγωγή

3 Αναδροµή και Επαγωγή 3 Αναδροµή και Επαγωγή Η ιδέα της µαθηµατικής επαγωγής µπορεί να επεκταθεί και σε άλλες δοµές εκτός από το σύνολο των ϕυσικών N. Η ορθότητα της µαθηµατικής επαγωγής ϐασίζεται όπως ϑα δούµε λίγο αργότερα

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

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

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

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.

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

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ Εντολές επανάληψης Κεφάλαια 02-08 οµές Επανάληψης Επιτρέπουν την εκτέλεση εντολών περισσότερες από µία φορά Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη η οποία καθορίζει την έξοδο από το βρόχο

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

Γραµµική Αλγεβρα. Ενότητα 1 : Εισαγωγή στη Γραµµική Αλγεβρα. Ευστράτιος Γαλλόπουλος Τµήµα Μηχανικών Η/Υ & Πληροφορικής

Γραµµική Αλγεβρα. Ενότητα 1 : Εισαγωγή στη Γραµµική Αλγεβρα. Ευστράτιος Γαλλόπουλος Τµήµα Μηχανικών Η/Υ & Πληροφορικής Γραµµική Αλγεβρα Ενότητα 1 : Εισαγωγή στη Γραµµική Αλγεβρα Ευστράτιος Γαλλόπουλος Τµήµα Μηχανικών Η/Υ & Πληροφορικής Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

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

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

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

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο 2015. Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο 2015. Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2015 Δοµές Δεδοµένων - Εργασία 2 Διδάσκων: E. Μαρκάκης Ταξινόµηση και Ουρές Προτεραιότητας Σκοπός της 2 ης εργασίας είναι η εξοικείωση

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

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

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

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Python scripts Ένα πρόγραμμα στην Python (συχνά αποκαλείται script) αποτελείται από μία ακολουθία ορισμών και εντολών. H ακολουθία των ορισμών και

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

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

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

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

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

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

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

Υπολογιστές Ι. Άδειες Χρήσης. Τύποι δεδομένων. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Υπολογιστές Ι. Άδειες Χρήσης. Τύποι δεδομένων. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης Υπολογιστές Ι Τύποι δεδομένων Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

Σύντοµος Οδηγός της Qbasic. Πέρδος Αθανάσιος Καθηγητής Πληροφορικής

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

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

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΙΛΟΓΗΣ 1) Ποιοι είναι οι τελεστές σύγκρισης και

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

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

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Εισαγωγή στις έννοιες Αλγόριθµοι και Πολυπλοκότητα, Οργάνωση Δεδοµένων και Δοµές Δεδοµένων Χρήσιµοι µαθηµατικοί

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

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα;

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα; Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο Τι θα τυπωθεί στον παρακάτω κώδικα; Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο Τι θα τυπωθεί στον παρακάτω κώδικα; Χωρίς να αλλάξουμε τον τύπο των a,b,

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ. Δρ. Π. Νικολαΐδου

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ. Δρ. Π. Νικολαΐδου ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Δρ. Π. Νικολαΐδου Προγραμματίζοντας στη γλώσσα R Αντικείμενα Δεδομένων ( 2 ο Μάθημα ) Αντικείμενα Δεδομένων Τα αντικείµενα δεδοµένων είναι οι διάφορες µορφές στις οποίες µπορούν

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