Λογιστικό φύλλο

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Μετάβαση σε: πλοήγηση, αναζήτηση

Στη σύγχρονη χρήση ηλεκτρονικών υπολογιστών, λογιστικό φύλλο (αγγλ. spreadsheet) χαρακτηρίζεται ο λογιστικός πίνακας, (παλαιότερα «λογιστικό αβάκιο») σε ηλεκτρονική μορφή, που εμφανίζεται στην οθόνη του υπολογιστή και μπορεί να αποθηκευτεί, εκτυπωθεί ή και να διαβιβαστεί σε έτερο υπολογιστή.

Τούτο επιτυγχάνεται με ένα ιδιαίτερο πρόγραμμα υπολογιστή που μιμείται ένα χάρτινο, λογιστικό φύλλο εργασίας. Εμφανίζει κελιά (cells) συνήθως σε έναν πίνακα δύο διαστάσεων ή σε ένα πλέγμα από γραμμές και στήλες. Κάθε κελί περιέχει αλφαριθμητικό κείμενο, αριθμητικές τιμές ή μαθηματικούς τύπους. Ένας μαθηματικός τύπος (formula) ορίζει πώς το περιεχόμενο ενός κελιού υπολογίζεται από τα περιεχόμενα ενός ή παραπάνω άλλων κελιών γενικότερα, κάθε φορά που αυτά ενημερώνονται. Τα λογιστικά φύλλα συνήθως χρησιμοποιούνται για χρηματοοικονομικές πληροφορίες, λόγω της δυνατότητάς τους να υπολογίζουν πάλι ό,τι χρειάζεται σε όλο το φύλλο, όταν αλλάξει έστω και ένα κελί. Κάποιες φορές προστίθεται και μια τρίτη ψευδο-διάσταση, με την προσθήκη στρωμάτων (layers) ή φύλλων (sheets), πάνω σε ήδη υπάρχουσα δισδιάστατη πληροφορία.

Το πρώτο λογιστικό φύλλο θεωρείται ότι ήταν το Visicalc (αν και υπάρχουν διαφωνίες), το οποίο έπαιξε σημαντικό ρόλο στην επιτυχία του υπολογιστή Apple II. Στην εποχή που το κυρίαρχο λειτουργικό σύστημα ήταν το DOS, το πιο δημοφιλές λογιστικό φύλλο ήταν το Lotus 1-2-3. Σήμερα το μεγαλύτερο μερίδιο της αγοράς ανήκει στο Excel, για τις πλατφόρμες των Windows και του Macintosh.[1][2][3]

Λογιστικό φύλλο στο OpenOffice.org Calc

Πίνακας περιεχομένων

Ιστορία[Επεξεργασία | επεξεργασία κώδικα]

Πρώτες υλοποιήσεις[Επεξεργασία | επεξεργασία κώδικα]

Γεννήτριες αναφορών λογιστικών φύλλων σε δεσμίδες[Επεξεργασία | επεξεργασία κώδικα]

Ένα λογιστικό φύλλο σε δεσμίδες (batch spreadsheet) είναι ένας μεταγλωττιστής που δέχεται σαν είσοδο δεσμίδες από δεδομένα και παράγει στην έξοδο μια αναφορά. Η ιδέα ενός ηλεκτρονικού λογιστικού φύλλου αυτού του τύπου εμφανίστηκε το 1961 από τον Richard Mattessich, στη δημοσίευσή του «Budgeting Models and System Simulation».[4] Στη συνέχεια ο Mattessich (1964a, Κεφ. 9, Accounting and Analytical Methods, και 1964b, Simulation of the Firm through a Budget Computer Program) εφάρμοσε λογιστικά φύλλα μέσω υπολογιστή σε λογιστικές εφαρμογές (σε μεγάλους υπολογιστές της εποχής που προγραμματίζονταν σε FORTRAN IV). Αυτά τα πρώτα λογιστικά φύλλα συνήθως άθροιζαν ή αφαιρούσαν μαζικά ολόκληρες στήλες ή γραμμές από τα δεδομένα της εισόδου, και όχι μεμονωμένα κελιά.

Αυτή η 'ιδέα' των λογιστικών φύλλων (που είχε τότε το όνομα BCL, από το Business Computer Language) υλοποιήθηκε το 1962 σε έναν IBM 1130 και μεταφέρθηκε το 1963 σε έναν IBM 7040 από τον R. Brian Walsh του Πανεπιστημίου Marquette του Ουισκόνσιν. Το πρόγραμμα ήταν γραμμένο σε Fortran και οι υπολογιστές είχαν μια πρώιμη μορφή χρονοκαταμερισμού (timesharing). Το 1968 ο Walsh μετέφερε την BCL στον IBM 360/67, υπολογιστή που επίσης είχε δυνατότητες χρονοκαμερισμού, στο Washington State University, με σκοπό τη χρήση στη διδασκαλία των χρηματοοικονομικών σε φοιτητές επιχειρησιακών σπουδών. Οι φοιτητές με αυτόν τον τρόπο μπορούσαν να πάρουν πληροφορίες από τον καθηγητή τους και να τις χειριστούν έτσι ώστε να αναπαριστούν το περιεχόμενο, να δείχνουν κλάσματα, κλπ. Το 1964 εκδόθηκε και το βιβλίο Business Computer Language από τους Kimball, Stoffells και Walsh, το οποίο, μαζί με το λογισμικό απέκτησαν copyright το 1966 (το copyright ανανεώθηκε χρόνια μετά).[5]

Στα τέλη της δεκαετίας του 1960 η Xerox χρησιμοποίησε την BCL για να αναπτύξει μια πιο προχωρημένη έκδοση του συστήματος χρονοκαταμερισμού της.

Μεταγλωττιστής λογιστικών φύλλων LANPAR[Επεξεργασία | επεξεργασία κώδικα]

Μια σημαντική εφεύρεση στην ιστορία των λογιστικών φύλλων έγινε από τους Rene K. Pardo και Remy Landau, οι οποίοι έκαναν αίτηση για την πατέντα 4398249 των ΗΠΑ το 1971, σχετικά με έναν αλγόριθμο αυτόματου επανυπολογισμού λογιστικών φύλλων, του 1970. Αν και το γραφείο ευρεσιτεχνιών αρχικά απέρριψε την πατέντα σαν απλή μαθηματική εφεύρεση, μετά από 12 χρόνια εφέσεων, οι Pardo και Landau κέρδισαν μια σημαδιακή δίκη, το αποτέλεσμα της οποίας ήταν ότι «κάτι δεν παύει να μπορεί να αποτελεί ευρεσιτεχνία, επειδή το καινούριο του στοιχείο είναι ένας αλγόριθμος»[6]. Το 1995 όμως τα αμερικανικά δικαστήρια (United States Court of Appeals for the Federal Circuit) κατέληξαν ότι η πατέντα δε μπορεί να εφαρμοστεί.[7]

Το ίδιο το λογισμικό ονομαζόταν LANPAR - LANguage for Programming Arrays at Random (Γλώσσα για Τυχαίο Προγραμματισμό Πινάκων) και δημιουργήθηκε εξολοκλήρου το καλοκαίρι του 1969 μετά την αποφοίτηση των Pardo και Landau από το Πανεπιστήμιο του Χάρβαρντ. Ο Rene Pardo θυμάται ότι ένιωθε ότι κάποιος μάνατζερ της Bell Canada δε θα έπρεπε να εξαρτάται από προγραμματιστές για τον προγραμματισμό και την τροποποίηση οικονομικών φορμών, αλλά οι χρήστες θα έπρεπε να μπορούν να συμπληρώνουν φόρμες με οποιαδήποτε σειρά και το πρόγραμμα θα έπρεπε να υπολογίζει τα αποτελέσματα στη σωστή σειρά. Το λογισμικό αναπτύχθηκε το 1969.[8]

Το LANPAR χρησιμοποιήθηκε από την Bell Canada, την AT&T και 18 αμερικάνικες εταιρείες τηλεπικοινωνιών για τις τοπικές και διεθνείς οικονομικές λειτουργίες τους, ενώ χρησιμοποιήθηκε και από την General Motors. Η βασική του καινοτομία ήταν η χρήση επανυπολογισμού με φυσικό τρόπο, ,[9] αντί για τη σειρά υπολογισμού κελιών αριστερά-προς-τα-δεξιά, πάνω-προς-τα-κάτω, που χρησιμοποιούνταν από το Visicalc, το Supercalc και την πρώτη έκδοση του Multiplan. Χωρίς τη φυσική σειρά επανυπολογισμού ο χρήστης έπρεπε να επανυπολογίζει χειροκίνητα το λογιστικό φύλλο πολλές φορές, μέχρι οι τιμές στα κελιά να σταματήσουν να αλλάζουν.

Το σύστημα LANPAR υλοποιήθηκε στα συστήματα online χρονοκαταμερισμού GE400 και Honeywell 6000, δίνοντας στους χρήστες τη δυνατότητα να τα προγραμματίζουν απομακρυσμένα, μέσω τερματικών ή μόντεμ. Τα δεδομένα μπορούσαν να δοθούν δυναμικά μέσω χαρτοταινίας, πρόσβασης σε αρχείο, on line, ή από εξωτερικές βάσεις δεδομένων. Σε κάθε κελί μπορούσαν να χρησιμοποιηθούν προχωρημένες μαθηματικές εκφράσεις, όπως οι λογικές συγκρίσεις και οι εντολές «αν/τότε» ("if/then"), ενώ τα κελιά μπορούσαν να εμφανίζονται με οποιαδήποτε σειρά.

Γλώσσα προγραμματισμού λογιστικών φύλλων Autoplan/Autotab[Επεξεργασία | επεξεργασία κώδικα]

Το 1968, τρεις πρώην υπάλληλοι της εταιρείας υπολογιστών General Electric (που βρισκόταν στο Φοίνιξ της Αριζόνας), ξεκίνησαν τη δική τους εταιρεία ανάπτυξης λογισμικού. Ο A. Leroy Ellison, ο Harry N. Cantrell και ο Russell E. Edwards ανακάλυψαν ότι έκαναν πολλούς υπολογισμούς καθώς κατασκεύαζαν πίνακες για τα εταιρικά πλάνα που παρουσίαζαν σε επενδυτές. Αποφάσισαν να γλιτώσουν την προσπάθεια αυτή, γράφοντας ένα πρόγραμμα που κατασκεύαζε τους πίνακες. Το πρόγραμμα αυτό, που εμφανίστηκε σαν εργαλείο για προσωπική τους χρήση, θα κατέληγε να είναι το πρώτο προϊόν λογισμικού της εταιρείας τους, η οποία θα αποκτούσε το όνομα Capex Corporation. Το «AutoPlan» έτρεχε σε συστήματα χρονοκαταμερισμού της GE, ενώ στη συνέχεια αναπτύχθηκε έκδοσή του για κεντρικούς υπολογιστές IBM με το όνομα «AutoTab». (Η National CSS επίσης πρόσφερε ένα παρόμοιο προϊόν το CSSTAB, που χρησιμοποιήθηκε ανάμεσα σε άλλα, για έρευνες γνώμης.) Το AutoPlan/AutoTab δεν ήταν εργαλείο WYSIWYG και δεν διέθετε διαλογικές δυνατότητες: ήταν μια απλή γλώσσα σεναρίων για λογιστικά φύλλα. Ο χρήστης όριζε τα ονόματα και τις ετικέτες για τις γραμμές και τις στήλες, και στη συνέχεια έγραφε τους μαθηματικούς τύπους που όριζαν κάθε γραμμή ή στήλη.

Γλώσσα μοντελοποίησης APLDOT[Επεξεργασία | επεξεργασία κώδικα]

Ένα παράδειγμα λογιστικού φύλου για χρήση από εταιρείες ήταν το APLDOT, που αναπτύχθηκε το 1976 από το Σύνδεσμο Σιδηροδρόμων των Ηνωμένων Πολιτειών (United States Railway Association) σε έναν IBM 360/91, το οποίο έτρεχε στο Εργαστήριο Εφαρμοσμένης Φυσικής του Πανεπιστημίου Τζονς Χόπκινς (Johns Hopkins University Applied Physics Laboratory).[10] Χρησιμοποιήθηκε αρκετά χρόνια για την ανάπτυξη εφαρμογών όπως τα χρηματοοικονομικά μοντέλα και τα μοντέλα κόστους για το Κογκρέσο των ΗΠΑ και την Conrail. Το APLDOT αποκαλούνταν «λογιστικό φύλλο» («spreadsheet») γιατί οι οικονομικοί αναλυτές το χρησιμοποιούσαν για να λύσουν τα ίδια προβλήματα που έλυναν στο χαρτί, σε σημειωματάρια με λογιστικά φύλλα.

VisiCalc[Επεξεργασία | επεξεργασία κώδικα]

Λόγω της υλοποίησης του VisiCalc από τους Dan Bricklin και Bob Frankston για τον Apple II το 1979 και για το IBM PC το 1981, η ιδέα των λογιστικών φύλλων έγινε ευρέως γνωστή στα τέλη της δεκαετίας του 1970 και τις αρχές της δεκαετίας του 1980. Το VisiCalc ήταν το πρώτο λογιστικό φύλλο που συνδύαζε όλα τα απαραίτητα χαρακτηριστικά των σύγχρονων εφαρμογών λογιστικών φύλλων, όπως η διαλογική διεπαφή χρήστη τύπου WYSIWYG, ο αυτόματος επανυπολογισμός, οι γραμμές κατάστασης και μαθηματικών τύπων, η αντιγραφή περιοχών με σχετικές και απόλυτες αναφορές, και η κατασκευή μαθηματικών τύπων με την επιλογή των αναφερόμενων κελιών. Το περιοδικό PC World αποκάλεσε το VisiCalc το πρώτο ηλεκτρονικό λογιστικό φύλλο.[11]

Ο Bricklin έχει διηγηθεί πώς παρακολουθούσε τον καθηγητή του στο πανεπιστήμιο να κατασκευάζει έναν πίνακα από αποτελέσματα υπολογισμών στον πίνακα παρουσιάσεων. Όταν ο καθηγητής βρήκε κάποιο λάθος, έπρεπε χειρωνακτικά να σβήσει και να ξαναγράψει κάποιες διαδοχικές εγγραφές του πίνακα, με αποτέλεσμα ο Bricklin να σκεφτεί ότι αυτό θα μπορούσε να γίνει από κάποιον υπολογιστή, με τον «πίνακα» να είναι το μοντέλο με το οποίο θα φαίνονταν τα αποτελέσματα των μαθηματικών τύπων. Η ιδέα του έγινε το VisiCalc, η πρώτη εφαρμογή που μετέτρεψε τον προσωπικό υπολογιστή από χόμπι ερασιτεχνών σε επαγγελματικό εργαλείο.

Δείγμα από το VisiCalc, το πρώτο λογιστικό φύλλο για PC.

Το VisiCalc έγινε η πρώτη σημαντική εφαρμογή (killer app), και αποδείχτηκε τόσο ελκυστικό που χρήστες αγόραζαν κάποιον υπολογιστή μόνο για να μπορούν να το χρησιμοποιήσουν. Ο υπολογιστής που αρχικά ωφελήθηκε από αυτήν την επιτυχία ήταν ο Apple II. Το πρόγραμμα αργότερα μεταφέρθηκε σε αρκετούς από τους πρώτους υπολογιστές, όπως οι υπολογιστές που έτρεχαν CP/M, η οικογένεια 8-bit Atari και διάφορες πλατφόρμες Commodore. Παρόλα αυτά, το VisiCalc εξακολουθεί να είναι γνωστό σαν «πρόγραμμα του Apple II».

Το Lotus 1-2-3 και άλλα λογιστικά φύλλα για MS-DOS[Επεξεργασία | επεξεργασία κώδικα]

Η αποδοχή του IBM PC από την εμφάνισή του τον Αύγουστο του 1981 υπήρξε αρχικά αργή, επειδή τα περισσότερα προγράμματα που ήταν διαθέσιμα για την πλατφόρμα ήταν μεταφορές από άλλα μοντέλα υπολογιστών. Η κατάσταση άλλαξε δραματικά με την εμφάνιση του Lotus 1-2-3 το Νοέμβριο του 1982 και την κυκλοφορία του στην αγορά τον Ιανουάριο του 1983. Επειδή είχε γραφεί ειδικά για το IBM PC, είχε καλή ταχύτητα και έγινε η σημαντικότερη εφαρμογή για το PC. Το Lotus 1-2-3 έφτασε στην κορυφή των πωλήσεων για το PC λόγω της βελτίωσης στην ταχύτητα και τα γραφικά σε σχέση με το VisiCalc στον Apple II.

Το Lotus 1-2-3, μαζί με τον ανταγωνιστή Borland Quattro, σύντομα υπερίσχυσαν του VisiCalc. Το Lotus 1-2-3 κυκλοφόρησε στις 26 Ιανουαρίου του 1983, και τον ίδιο χρόνο έκανε περισσότερες πωλήσεις από το μέχρι τότε δημοφιλέστερο VisiCalc, ενώ για πολλά χρόνια ήταν το πιο δημοφιλές λογιστικό φύλλο για το DOS.

Microsoft Excel[Επεξεργασία | επεξεργασία κώδικα]

Η Microsoft είχε ήδη αρχίσει την ανάπτυξη του Excel για την πλατφόρμα του Macintosh για αρκετά χρόνια, όπου είχε ήδη εξελιχθεί σε αρκετά ισχυρό σύστημα. Η μεταφορά του Excel στα Windows 2.0 είχε σαν αποτέλεσμα ένα πλήρως λειτουργικό λογιστικό φύλλο για Windows. Οι πιο ώριμες πλατφόρμες των Windows 3.x στις αρχές της δεκαετίας του 1990 έδωσαν την ευκαιρία στο Excel να πάρει μερίδιο αγοράς από το Lotus. Μέχρι το Lotus να αποκτήσει εύχρηστα προϊόντα για Windows, η Microsoft είχε ήδη αρχίσει να δίνει σχήμα στη σουίτα εφαρμογών Office. Από τα μέσα της δεκαετίας του 1990 μέχρι σήμερα, το Microsoft Excel είναι το πιο δημοφιλές εμπορικό ηλεκτρονικό λογιστικό φύλλο.

Apple Numbers[Επεξεργασία | επεξεργασία κώδικα]

Το Numbers είναι το λογισμικό λογιστικών φύλλων της Apple και αποτελεί μέρος του iWork. Εστιάζει στην ευχρηστία και στην κομψή παρουσίαση διαγραμμάτων. Το Numbers ολοκληρώνει τη σουίτα παραγωγικότητας της Apple, κάνοντάς την πλήρως ανταγωνιστική του Microsoft Office (αν και διαφέρει σε κάποια χαρακτηριστικά που προσφέρει).

OpenOffice.org Calc[Επεξεργασία | επεξεργασία κώδικα]

Το OpenOffice.org Calc είναι ελεύθερο πρόγραμμα ανοιχτού κώδικα, που ακολουθεί το μοντέλο του Microsoft Excel. Το Calc μπορεί να ανοίξει και να σώσει αρχεία μορφής Excel (XLS).[12] Το Calc μπορεί είτε να εγκατασταθεί, είτε να εκτελείται σαν φορητό πρόγραμμα που τρέχει από κάποια συσκευή μνήμης USB. Είναι διαθέσιμο από τη σελίδα του OpenOffice.org.

Gnumeric[Επεξεργασία | επεξεργασία κώδικα]

Το Gnumeric 1.6.3 στο Ubuntu.

Το Gnumeric είναι πρόγραμμα λογιστικών φύλλων ελεύθερου λογισμικού για διάφορες πλατφόρμες και ανήκει στο Εγχείρημα Ελεύθερου Λογισμικού Επιφάνειας Εργασίας του GNOME (GNOME Free Software Desktop Project). Σκοπός του είναι να αποτελεί μια ελεύθερη εναλλακτική λύση έναντι κλειστών προγραμμάτων όπως το Microsoft Excel, το οποίο και μιμείται. Το Gnumeric δημιουργήθηκε από τον Miguel de Icaza, και συντηρείται από τον Jody Goldberg.

Αρχικά επρόκειτο να προστεθεί στο Gnumeric μια γλώσσα σεναρίων που να είναι συμβατή με τη Visual Basic, μέσω του εγχειρήματος Gnome Basic. Η Gnome Basic όμως εγκαταλείφθηκε για χάρη του Mono, με αποτέλεσμα να ακυρωθούν τα σχέδια για υλοποίηση λειτουργιών τύπου Basic στο Gnumeric.

Το Gnumeric μπορεί να διαβάζει και να γράφει δεδομένα σε διάφορες μορφές αρχείων (CSV, Microsoft Excel, HTML, LaTeX, Lotus 1-2-3, OpenDocument και Quattro Pro), αλλά έχει και δική του μορφή αρχείων (.gnm ή .gnumeric), που είναι αρχεία XML συμπιεσμένα με το gzip.[13] Περιλαμβάνει όλες τις μαθηματικές συναρτήσεις για λογιστικά φύλλα της Αμερικανικής έκδοσης του Microsoft Excel, καθώς και άλλες, δικές του συναρτήσεις. Κάποια χαρακτηριστικά λείπουν και προστίθενται σε επόμενες εκδόσεις. Λόγω της ακρίβειάς του, το Gnumeric[14][15] χρησιμοποιείται αρκετά για στατιστική ανάλυση και άλλες επιστημονικές εργασίες. Για τη βελτίωση της ακρίβειας, οι προγραμματιστές του Gnumeric, συνεργάζονται με το Εγχείρημα R (R Project).

Λογιστικά φύλλα βασισμένα στον Ιστό[Επεξεργασία | επεξεργασία κώδικα]

Με την εμφάνιση προχωρημένων τεχνολογιών του Παγκόσμιου Ιστού, όπως το Ajax, το 2005, προέκυψε μια νέα γενιά online λογιστικών φύλλων. Κάποιες από τις καλύτερες εφαρμογές του είδους παρέχουν πλούσια εμπειρία χρήστη και χαρακτηριστικά που είχαν μόνο τα κλασικά λογιστικά φύλλα που εκτελούνται τοπικά. Κάποια από αυτά τα νέα λογιστικά φύλλα παρέχουν επίσης δυνατότητες συνεργασίας μεταξύ των χρηστών ή ανανέωση τιμών όπως οι τιμές μετοχών ή οι ισοτιμίες σε πραγματικό χρόνο.

Άλλα λογιστικά φύλλα[Επεξεργασία | επεξεργασία κώδικα]

  • Κατάλογος λογιστικών φύλλων που αναπτύσσονται σήμερα
    • IBM Lotus Symphony (2007)
    • KSpread
    • ZCubes-Calci
    • Resolver One
    • GNU Oleo - κλασικό λογιστικό φύλλο κονσόλας για συστήματα βασισμένα στο GNU
    • sc - λογιστικό φύλλο κονσόλας για συστήματα βασισμένα στο GNU
    • slsc - λογιστικό φύλλο κατάστασης τερματικού για συστήματα βασισμένα στο GNU
  • Παλαιότερες εφαρμογές λογιστικών φύλλων που δεν αναπτύσσονται πια
    • Advantage
    • Lotus Improv[16]
    • Javelin Software
    • Lotus Jazz για τον Macintosh
    • MultiPlan
    • Quattro Pro της Borland
    • SuperCalc
    • Lotus Symphony για DOS (1984)
    • Informix Wingz για τον Macintosh
    • Target Planner Calc για το CP/M και το TRS-DOS[17][18]

Άλλα προϊόντα[Επεξεργασία | επεξεργασία κώδικα]

Αρκετές εταιρείες έχουν προσπαθήσει να εισέλθουν στην αγορά των λογιστικών φύλλων με προγράμματα που ακολουθούν διαφορετικές φιλοσοφίες. Η Lotus είναι μάλλον το πιο επιτυχημένο παράδειγμα, με το Lotus Improv, που γνώρισε κάποια εμπορική επιτυχία, ειδικά στον τομέα των χρηματοοικονομικών, λόγω των ισχυρών δυνατοτήτων του για ανάλυση μεγάλων όγκων δεδομένων (data mining). Άλλο παράδειγμα είναι το Spreadsheet 2000, το οποίο προσπάθησε να απλοποιήσει σημαντικά την κατασκευή μαθηματικών τύπων, χωρίς όμως επιτυχία.

Βασικές ιδέες[Επεξεργασία | επεξεργασία κώδικα]

Η βασική ιδέα ενός λογιστικού φύλλου είναι ότι υπάρχει ένας πίνακας από κελιά (cells), που ονομάζεται φύλλο (sheet) και περιέχει στα κελιά απλά δεδομένα («τιμές») ή μαθηματικούς τύπους. Οι μαθηματικοί τύποι δείχνουν πώς νέες τιμές υπολογίζονται από υπάρχουσες τιμές. Οι τιμές συνήθως είναι αριθμοί, αλλά μπορούν να είναι απλό κείμενο, ημερομηνίες, μήνες, κλπ. Επέκταση αυτής της ιδέας είναι τα λογικά λογιστικά φύλλα (logical spreadsheets). Συνήθως τα λογιστικά φύλλα παρέχουν εργαλεία για τον προγραμματισμό φύλλων, την οπτικοποίηση (visualizing) δεδομένων, τη σύνδεση απομακρυσμένων φύλλων, την απεικόνιση εξαρτήσεων μεταξύ των κελιών (dependencies), κ.α.

Κελιά[Επεξεργασία | επεξεργασία κώδικα]

Ένα κελί (cell) μπορεί να θεωρηθεί σαν κουτί που περιέχει δεδομένα. Ένα κελί αποκτά όνομα από τη στήλη και τη γραμμή που βρίσκεται (για παράδειγμα, το A2 αναπαριστά το παρακάτω κελί με την τιμή 10). Οι γραμμές συνήθως έχουν ακέραιους αριθμούς, αρχίζοντας από το 1, ενώ οι στήλες ονομάζονται με βάση τα γράμματα A-Z και συνδυασμούς αυτών. Το μέγεθος ενός κελιού μπορεί να ρυθμιστεί τραβώντας με το ποντίκι τα όριά του, κατά μήκος ή κατά πλάτος (για ολόκληρες στήλες και γραμμές αυτό γίνεται τραβώντας τα όρια των τίτλων των στηλών ή των γραμμών αντίστοιχα).

Το λογιστικό φύλλο μου
A B C D
01 τιμή1 τιμή2 άθροισμα πολλαπλασιασμός
02 10 20 30 200

Ένας πίνακας από κελιά ονομάζεται «φύλλο» («sheet») ή «φύλλο εργασίας» («worksheet»). Μοιάζει με έναν πίνακα από μεταβλητές στις γλώσσες προγραμματισμού (αν και κάποιες τιμές, που δεν αλλάζουν ποτέ, μάλλον είναι πιο κοντά στις σταθερές σε αυτήν την αναλογία). Στα περισσότερα προγράμματα λογιστικών φύλλων, ένα λογιστικό φύλλο μπορεί να περιέχει πολλά φύλλα εργασίας. Ένα φύλλο εργασίας είναι απλά ένα υποσύνολο ενός λογιστικού φύλλου, με το διαχωρισμό να εξυπηρετεί κάποιο συγκεκριμένο λόγο. Λειτουργικά, ένα λογιστικό φύλλο λειτουργεί σαν ενιαία μονάδα και όλα τα κελιά έχουν το ρόλο καθολικών μεταβλητών (global variables), που μπορούν μόνο να διαβαστούν από τα άλλα κελιά και να τροποποιηθούν μόνο από το ίδιο το κελί.

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

Τιμές[Επεξεργασία | επεξεργασία κώδικα]

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

Ο Κανόνας Τιμών των λογιστικών φύλλων

Ο επιστήμονας της πληροφορικής Alan Kay χρησιμοποίησε τον όρο κανόνας τιμών (value rule) για να περιγράψει τη λειτουργία ενός λογιστικού φύλλου: η τιμή ενός κελιού εξαρτάται μόνο από το μαθηματικό τύπου που ο χρήστης έγραψε σε αυτό.[19] Ο μαθηματικός τύπος μπορεί να εξαρτάται από τις τιμές άλλων κελιών, τα οποία με τη σειρά τους εξαρτώνται μόνο από τιμές που έχει πληκτρολογήσει ο χρήστης ή από άλλους μαθηματικούς τύπους. Κατά τον υπολογισμό ενός τύπου δεν υπάρχουν 'παρενέργειες' ('side effects'): το μόνο αποτέλεσμα είναι η εμφάνιση του αποτελέσματος στο κελί. Ένα κελί δε μπορεί να αποκτήσει μόνιμα μια τιμή, εκτός και αν ο χρήστης την πληκτρολογήσει σε αυτό. Με όρους γλωσσών προγραμματισμού, πρόκειται για μια περιορισμένη μορφή συναρτησιακού προγραμματισμού πρώτης τάξης.[20]

Αυτόματος επανυπολογισμός[Επεξεργασία | επεξεργασία κώδικα]

Ένα χαρακτηριστικό που είναι επιθυμητό στα λογιστικά φύλλα είναι ο αυτόματος υπολογισμός όσων τιμών άλλαξαν. Ήδη από τη δεκαετία του 1980 αποτελεί βασικό χαρακτηριστικό των περισσότερων λογιστικών φύλλων και απενεργοποιείται από το χρήστη μόνο σε ειδικές περιπτώσεις (όπως τα πολύ μεγάλα λογιστικά φύλλα, στα οποία είναι χρονοβόρο). Σε κάποια από τα πρώτα λογιστικά ο χρήστης έπρεπε να ζητήσει χειροκίνητα τον επανυπολογισμό, γιατί κάτι τέτοιο μείωνε την ταχύτητα της εισόδου των δεδομένων σε μεγάλα ή πολύπλοκα λογιστικά φύλλα. Κάποια σύγχρονα λογιστικά φύλλα διατηρούν αυτήν την επιλογή.

Ανανέωση σε πραγματικό χρόνο (Real-time update)[Επεξεργασία | επεξεργασία κώδικα]

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

Κλειδωμένο κελί[Επεξεργασία | επεξεργασία κώδικα]

Όταν έχουν αποκτήσει τιμή, κάποια κελιά (ή ακόμα και ολόκληρο το λογιστικό φύλλο) προαιρετικά μπορούν να κλειδωθούν («locked») ώστε να μην γίνουν σε αυτά αλλαγές κατά λάθος. Αυτό συνήθως εφαρμόζεται σε κελιά που περιέχουν μαθηματικούς τύπους, αλλά μπορεί να χρησιμοποιηθεί και για κελιά που περιέχουν ειδικές σταθερές, όπως για παράδειγμα ο λόγος μετατροπής από κιλά σε λίβρες (2.20462262 με οκτώ δεκαδικά ψηφία). Αν και μεμονωμένα κελιά μπορούν να μαρκάρονται σαν κλειδωμένα, τα δεδομένα του λογιστικού φύλλου συνολικά δεν προστατεύονται, εκτός και αν το χαρακτηριστικό αυτό έχει ενεργοποιηθεί στις επιλογές του προγράμματος.

Μορφή των δεδομένων[Επεξεργασία | επεξεργασία κώδικα]

Ένα κελί ή ένα σύνολο από διαδοχικά κελιά (range) μπορούν να ρυθμιστούν όσον αφορά την εμφάνιση των δεδομένων τους. Αν δεν έχει προκαθοριστεί, η μορφή εμφάνισης ορίζεται από τα πρώτα δεδομένα που εισάγονται στο κελί, για παράδειγμα η τιμή «31/12/2007» θα έθετε τη μορφή του κελιού σε «ημερομηνία». Όμοια, αν τοποθετηθεί το σύμβολο % μετά από μια αριθμητική τιμή, το κελί σημειώνεται σαν ποσοστό. Η μορφή αφορά μόνο το πώς εμφανίζονται και μορφοποιούνται τα δεδομένα, τα οποία δεν τροποποιούνται.

Κάποιες μορφές κελιών, όπως η «αριθμητική» και η «νομισματική μονάδα», μπορούν να ορίζουν και δεκαδικές θέσεις.

Αυτό μπορεί να επιτρέψει λάθος λειτουργίες (όπως ο πολλαπλασιασμός με ένα κελί που περιέχει μια ημερομηνία), με αποτέλεσμα λάθος δεδομένα, χωρίς την κατάλληλη προειδοποίηση από το πρόγραμμα.

Μορφοποίηση κελιών[Επεξεργασία | επεξεργασία κώδικα]

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

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

Κελιά με όνομα[Επεξεργασία | επεξεργασία κώδικα]

Χρήση των μεταβλητών στηλών με όνομα x στο y στο Microsoft Excel. Ο μαθηματικός τύπος για το y=x2 μοιάζει με τη Fortran, και ο διαχειριστής ονομάτων (Name Manager) δείχνει τους ορισμούς των x και y.

Στις περισσότερες υλοποιήσεις μπορεί να δοθεί ένα όνομα σε ένα κελί ή μια ομάδα κελιών μιας γραμμής ή στήλης, ώστε ο χρήστης να μπορεί να αναφέρεται σε αυτά ονομαστικά αντί να χρησιμοποιεί τους κωδικούς του πίνακα. Ένα όνομα πρέπει να είναι μοναδικό μέσα σε ένα λογιστικό φύλλο αλλά όταν χρησιμοποιούνται πολλά φύλλα σε ένα λογιστικό φύλλο, μπορεί να χρησιμοποιηθεί το ίδιο όνομα σε δύο διαφορετικά φύλλα (που έχουν δηλαδή διαφορετικά ονόματα). Αυτό μπορεί να αποδειχτεί χρήσιμο σε μακροεντολές που εκτελούν μια λειτουργία σε διάφορα φύλλα. Ένας άλλος λόγος είναι ότι οι μαθηματικοί τύποι που χρησιμοποιούν μεταβλητές με όνομα ελέγχονται με βάση την άλγεβρα που υλοποιούν (αφού μοιάζουν με εκφράσεις της Fortran). Γενικά η χρήση ονομάτων για μεταβλητές και συναρτήσεις κάνει τη δομή του λογιστικού φύλλου ξεκάθαρη.

Αναφορά σε κελί[Επεξεργασία | επεξεργασία κώδικα]

Αντί για όνομα, μπορεί να χρησιμοποιηθεί μια αναφορά κελιού (ή πλέγματος, grid). Οι περισσότερες αναφορές κελιών δείχνουν σε κάποιο άλλο κελί στο ίδιο λογιστικό φύλλο, αλλά μπορούν να δείχνουν και σε ένα κελί σε κάποιο άλλο φύλλο του ίδιου λογιστικού φύλλου, ή (ανάλογα την υλοποίηση) σε ένα κελί ενός άλλου λογιστικού φύλλου, ή σε μια τιμή μιας απομακρυσμένης εφαρμογής.

Μια τυπική αναφορά κελιού (cell reference) όπως η "A1" αποτελείται από ένα ή δύο γράμματα (δε λαμβάνεται υπόψη η διαφορά κεφαλαίων-μικρών) που ορίζουν τη στήλη (για μέχρι 256 στήλες: A-Z και AA-IV) που ακολουθούνται από έναν αριθμό γραμμής (π.χ. στο εύρος 1-65536). Κάθε μέρος μπορεί να είναι σχετικό (αλλάζει όταν ο τύπος μεταφέρεται ή αντιγράφεται), ή απόλυτο (με το σύμβολο $ μπροστά του). Η εναλλακτική μορφή "R1C1" αποτελείται από το γράμμα R, τον αριθμό γραμμής, το γράμμα C και τον αριθμό στήλης, ενώ οι σχετικοί αριθμοί γραμμής ή στήλης ορίζονται μέσα σε τετράγωνες αγκύλες. Τα περισσότερα σύγχρονα λογιστικά φύλλα χρησιμοποιούν το στυλ A1, αλλά κάποια υποστηρίζουν και το στυλ R1C1 για συμβατότητα.

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

Ένα κελί στο ίδιο «φύλλο» συνήθως ονομάζεται ως εξής:

=A1

Ένα κελί σε διαφορετικό φύλλο του ίδιου λογιστικού φύλλου συνήθως ονομάζεται ως εξής:

=SHEET2!A1             (το πρώτο κελί στο δεύτερο φύλλο του ίδιου λογιστικού φύλλου)

Κάποιες υλοποιήσεις λογιστικών φύλλων επιτρέπουν αναφορές σε κελιά σε άλλα λογιστικά φύλλα (όχι στο τρέχον ανοιχτό αρχείο) στον ίδιο υπολογιστή ή στο τοπικό δίκτυο. Μπορεί επίσης να γίνεται αναφορά σε ένα κελί σε κάποιο άλλο ανοιχτό και ενεργό λογιστικό φύλλο στον ίδιο υπολογιστή ή δίκτυο, που θεωρείται διαμοιραζόμενο (shareable). Αυτές οι αναφορές περιέχουν ολόκληρο το όνομα αρχείου, όπως η ακόλουθη:

='C:\Documents and Settings\Username\My spreadsheets\[main sheet]Sheet1!A1

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

Μια κυκλική αναφορά (circular reference) προκύπτει όταν ένας τύπος σε ένα κελί έχει μια αναφορά που άμεσα ή έμμεσα, μέσα από κάποια αλυσίδα αναφορών, δείχνει στον εαυτό του. Τέτοιες κυκλικές αναφορές μπορούν να προκύψουν από πολλά κοινά λάθη αλλά υπάρχουν και χρήσιμες εφαρμογές τους, όπως ο επαναληπτικός υπολογισμός τιμών σε ένα λογιστικό φύλλο, μέχρι να φτάσει σε μια αποδεκτή τιμή.

Ομάδες κελιών[Επεξεργασία | επεξεργασία κώδικα]

Ο χρήστης μπορεί, αντί να χρησιμοποιεί ένα εύρος από κελιά με κάποιο όνομα, να χρησιμοποιεί μια αναφορά εύρους (range reference). Η αναφορά αυτή μπορεί να είναι της μορφής (A1:A6) που ορίζει τα κελιά από A1 έως A6. Ένας μαθηματικός τύπος όπως ο =SUM(A1:A6) προσθέτει τότε όλα αυτά τα κελιά και τοποθετεί το αποτέλεσμα στο κελί που περιέχει τον ίδιο τον τύπο.

Φύλλα[Επεξεργασία | επεξεργασία κώδικα]

Στα πρώτα λογιστικά φύλλα, τα κελιά βρίσκονταν σε ένα απλό πλέγμα δύο διαστάσεων. Το μοντέλο αναπτύχθηκε με το χρόνο, με την προσθήκη μιας τρίτης διάστασης, και κάποιες φορές με μια σειρά πλεγμάτων με όνομα, που ονομάζονται φύλλα. Σε πιο προχωρημένες περιπτώσεις μπορεί να εφαρμοστεί αναστροφή (inversion) ή περιστροφή (rotation) στα δεδομένα, με αποτέλεσμα το διαχωρισμό τους ή την εμφάνισή τους με διάφορους τρόπους.

Μαθηματικοί τύποι[Επεξεργασία | επεξεργασία κώδικα]

Ένα απλό λογιστικό φύλλο που πολλαπλασιάζει τις τιμές στην αριστερή στήλη επί 2 και στη συνέχεια προσθέτει τις υπολογισμένες τιμές από τη δεξιά στήλη στο τελευταίο κελί. Σε αυτό το παράδειγμα, δίνονται μόνο οι τιμές στη στήλη A, που είναι 10, 20, και 30, και τα υπόλοιπα κελιά είναι μαθηματικοί τύποι. Οι μαθηματικοί τύποι στη στήλη B πολλαπλασιάζουν τιμές από τη στήλη A χρησιμοποιώντας σχετικές αναφορές, και ο τύπος στο B4 χρησιμοποιεί τη συνάρτηση SUM() για να βρει το άθροισμα των τιμών στο εύρος B1:B3.

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

Ένας τύπος δίνει τιμές σε ένα κελί ή σε ένα εύρος από κελιά, και συνήθως έχει τη μορφή:

=έκφραση

όπου η έκφραση αποτελείται από:

  • τιμές, όπως το 2, το 9.14 ή το 6.67E-11,
  • αναφορές σε άλλα κελιά, π.χ. A1 για ένα κελί ή B1:B3 για ένα εύρος,
  • τελεστές αριθμητικής, όπως οι +, -, *, /, κ.α.,
  • τελεστές σύγκρισης, όπως οι >=, <, κ.α. και
  • συναρτήσεις, όπως η SUM(), η TAN(), και πολλές άλλες.

Όταν ένα κελί περιέχει έναν τύπο, συνήθως περιέχει αναφορές σε άλλα κελιά. Μια τέτοια αναφορά μοιάζει με μια μεταβλητή και η τιμή της είναι η τιμή του κελιού στο οποίο αναφέρεται ή κάποιο αποτέλεσμα που προέρχεται από αυτό. Αν αυτό το κελί στη συνέχεια αναφέρεται σε άλλα κελιά, η τιμή του εξαρτάται από αυτά. Οι αναφορές μπορούν να είναι σχετικές (π.χ. A1 ή B1:B3), απόλυτες (π.χ. $A$1 ή $B$1:$B$3) ή συνδυασμός τους σε γραμμή/στήλη, σχετικά/απόλυτα (π.χ. η $A1 είναι απόλυτη κατά στήλη και η A$1 είναι απόλυτη κατά γραμμή).

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

Ένας μαθηματικός τύπος μπορεί να περιέχει μια συνθήκη (ή πολλές συνθήκες, τη μια μέσα στην άλλη) - με ή χωρίς κάποιον πραγματικό υπολογισμό - και μερικές φορές χρησιμοποιείται απλά για την εύρεση και επισήμανση λαθών. Στο παρακάτω παράδειγμα, το άθροισμα μιας στήλης από ποσοστά (A1 έως A6) ελέγχεται αν είναι έγκυρο και ένα κατάλληλο μήνυμα τοποθετείται στο κελί.

=IF(SUM(A1:A6) > 100, «Πάνω από 100%», SUM(A1:A6))

Ένα λογιστικό φύλλο δε χρειάζεται να περιέχει πάντα μαθηματικούς τύπους, μπορεί απλά να έχει το ρόλο συλλογής δεδομένων, διατεταγμένων σε στήλες και γραμμές (μια βάση δεδομένων), όπως ένα ημερολόγιο, ένα ημερήσιο πρόγραμμα ή μια λίστα. Επειδή τα λογιστικά φύλλα είναι εύχρηστα και διαθέτουν δυνατότητες μορφοποίησης και συνδέσμων, πολλές φορές χρησιμοποιούνται μόνο για αυτόν το σκοπό.

Συναρτήσεις[Επεξεργασία | επεξεργασία κώδικα]

Τα λογιστικά φύλλα συνήθως περιέχουν έναν αριθμό από συναρτήσεις, όπως οι αριθμητικές λειτουργίες (όπως τα αθροίσματα ή οι μέσοι όροι), τριγωνομετρικές συναρτήσεις, συναρτήσεις στατιστικής, κλπ. Επιπλέον πολλές φορές επιτρέπεται ο ορισμός συναρτήσεων από το χρήστη (user-defined functions). Αυτές ορίζονται στο Microsoft Excel με τη χρήση της Visual Basic for Applications, στο διορθωτή Visual Basic, και μπορούν να χρησιμοποιηθούν άμεσα σε ένα λογιστικό φύλλο. Επιπλέον, μπορούν να γραφούν προγράμματα που διαβάζουν πληροφορίες από ένα λογιστικό φύλλο, κάνουν κάποιους υπολογισμούς, και τοποθετούν τα αποτελέσματα πάλι στο λογιστικό φύλλο. Στην εικόνα, ο χρήστης δίνει το όνομα sq, και η συνάρτηση sq εισάγεται με το διορθωτή της Visual Basic, του Excel. Ο διαχειριστής ονομάτων (Name Manager) δείχνει τους ορισμούς του λογιστικού φύλλου για τις μεταβλητές με ονόματα x και y.

Υπορουτίνες[Επεξεργασία | επεξεργασία κώδικα]

Υπορουτίνα στο Microsoft Excel γράφει τιμές που έχει υπολογίσει χρησιμοποιώντας το x στο y.

Οι ίδιες οι συναρτήσεις δε μπορούν να γράφουν στο λογιστικό φύλλο, αλλά απλά επιστρέφουν μια τιμή, Όμως, στο Microsoft Excel, οι υπορουτίνες μπορούν να γράφουν τιμές ή κείμενο που περιέχεται στην υπορουτίνα, στο ίδιο το λογιστικό φύλλο. Η εικόνα δείχνει κώδικα υπορουτίνας σε Visual Basic που διαβάζει κάθε μέλος της στήλης με όνομα μεταβλητής x, υπολογίζει το τετράγωνό της, και γράφει την τιμή που προκύπτει στο αντίστοιχο στοιχείο της μεταβλητής στήλης με όνομα y. Η στήλη-y δεν περιέχει μαθηματικούς τύπους γιατί οι τιμές της υπολογίζονται στην υπορουτίνα, όχι στο λογιστικό φύλλο, και απλά καταγράφονται.

Απομακρυσμένα λογιστικά φύλλα[Επεξεργασία | επεξεργασία κώδικα]

Όταν γίνεται μια αναφορά σε ένα κελί ή μια ομάδα κελιών που δε βρίσκονται στο υπάρχον αρχείο λογιστικού φύλλου, θεωρείται πρόσβαση σε ένα «απομακρυσμένο» («remote») λογιστικό φύλλο. Τα περιεχόμενα ενός αναφερόμενου κελιού, μπορούν να προσπελαστούν, είτε χειροκίνητα, την πρώτη φορά που γίνεται αναφορά σε αυτά, ή πιο πρόσφατα, όπως στα λογιστικά φύλλα Ιστού (web based spreadsheets), όπου οι τιμές περιοδικά ανανεώνονται αυτόματα για να φαίνονται (όσο το δυνατό) σε πραγματικό χρόνο.

Γραφικές παραστάσεις[Επεξεργασία | επεξεργασία κώδικα]

Γραφική παράσταση από το Microsoft Excel

Πολλές εφαρμογές λογιστικών φύλλων επιτρέπουν τη δημιουργία γραφικών παραστάσεων (charts), γράφων (graphs) ή ιστογραμμάτων (histograms), που να διαβάζουν τα δεδομένα τους από συγκεκριμένα κελιά και να αλλάζουν την εμφάνισή τους δυναμικά όταν τα δεδομένα αυτά αλλάζουν. Τα γραφικά που παράγονται αποτελούν συνήθως μέρος του τρέχοντος φύλλου ή προστίθενται σαν ξεχωριστά αντικείμενα.

Πολυδιάστατα λογιστικά φύλλα[Επεξεργασία | επεξεργασία κώδικα]

Στα τέλη της δεκαετίας του 1980 και στις αρχές της δεκαετίας του 1990, εμφανίστηκε η Javelin Software και αργότερα το Lotus Improv που, σε αντίθεση με τα συμβατικά μοντέλα λογιστικών φύλλων, έκαναν χρήση μοντέλων που βασίζονταν σε αντικείμενα που ονομάζονταν μεταβλητές (variables), και όχι σε δεδομένα σε κελιά. Αυτά τα πολυδιάστατα λογιστικά φύλλα επέτρεπαν την εμφάνιση των δεδομένων και των αλγορίθμων με διάφορους τρόπους αυτο-τεκμηρίωσης. Πολλές φορές ο χρήστης μπορούσε να δει διάφορους τρόπους εμφάνισης ταυτόχρονα, που συγχρονίζονταν μεταξύ τους. Για παράδειγμα, οι χρήστες του Javelin μπορούσαν να μετακινούνται ανάμεσα στις συνδέσεις μεταξύ των μεταβλητών ενός διαγράμματος, βλέποντας παράλληλα τις λογικές «ρίζες» και «κλαδιά» κάθε μεταβλητής. Αυτό ήταν και ίσως η σημαντικότερη καινοτομία του Javelin—η ιδέα ότι η λογική ή η δομή του μοντέλου ενός χρήστη μπορούσε να ακολουθηθεί μέσα από τους δώδεκα διαφορετικούς τρόπους εμφάνισης. Κάποιο πολύπλοκο μοντέλο μπορούσε να αναλυθεί και να γίνει κατανοητό από άτομα που δεν το είχαν κατασκευάσει, κάτι που είναι μοναδικό, ακόμα και για τα σημερινά δεδομένα. Το Javelin χρησιμοποιήθηκε κυρίως για μοντελοποίηση χρηματοοικονομικών δεδομένων, αλλά χρησιμοποιήθηκε επίσης και για την κατασκευή εκπαιδευτικών μοντέλων σε μαθήματα χημείας κολεγίων, για τη μοντελοποίηση οικονομιών κρατών, και αρχικά από το στρατό στο εγχείρημα Star Wars. Χρησιμοποιείται ακόμα από ινστιτούτα, όπου η ακεραιότητα ενός μοντέλου θεωρείται ύψιστης σημασίας.

Σε αυτά τα προγράμματα, μια χρονική ακολουθία (time series), ή κάθε μεταβλητή, ήταν αντικείμενο, όχι απλά κάποιο σύνολο κελιών που τυχαίνει να εμφανίζονται στην ίδια σειρά ή στην ίδια στήλη. Οι μεταβλητές μπορούσαν να έχουν πολλά γνωρίσματα, όπως το να γνωρίζουν όλες τις συνδέσεις τους με άλλες μεταβλητές, αναφορές σε δεδομένα, και κείμενο ή εικόνες. Οι υπολογισμοί γίνονταν σε αυτά τα αντικείμενα, όχι σε κάποιο σύνολο από κελιά, επομένως η πρόσθεση δύο χρονικών ακολουθιών αυτόματα τις στοίχιζε με βάση το χρόνο του ημερολογίου, ή ανάλογα με κάποιο χρονικό πλαίσιο που έθετε ο χρήστης. Τα δεδομένα ήταν ανεξάρτητα από τα λογιστικά φύλλα—οι μεταβλητές, και άρα τα δεδομένα, δε μπορούσαν να καταστραφούν από τη διαγραφή μιας γραμμής, στήλης, ή ακόμα και ολόκληρου του λογιστικού φύλλου. Για παράδειγμα, τα κόστη του Ιανουαρίου μπορούν να αφαιρούνται από τα έσοδα του Ιανουαρίου, ανεξάρτητα από το αν κάθε ένα από αυτά εμφανίζεται στο λογιστικό φύλλο. Αυτό επιτρέπει αργότερα ενέργειες που χρησιμοποιήθηκαν στους συγκεντρωτικούς πίνακες (pivot tables), αν και ο ευέλικτος χειρισμός πινάκων με αποτελέσματα ήταν μόνο μια από τις δυνατότητες των μεταβλητών. Επιπλέον, αν τα κόστη δίνονταν ανά εβδομάδα, και τα έσοδα ανά μήνα, το Javelin μπορούσε να τα χειριστεί και να υποθέσει τις ενδιάμεσες τιμές (interpolate), όπως αυτό κρινόταν απαραίτητο. Αυτή η σχεδίαση των αντικειμένων επέτρεπε στις μεταβλητές και σε ολόκληρα μοντέλα να αναφέρονται το ένα στο άλλο με ονόματα μεταβλητών που ορίζονταν από το χρήστη, και να κάνουν πολυδιάστατη ανάλυση και συγχωνεύσεις μεγάλης κλίμακας, που όμως ήταν εύκολο να επεξεργαστούν από το χρήστη.

Λογικά λογιστικά φύλλα[Επεξεργασία | επεξεργασία κώδικα]

Τα λογιστικά φύλλα στα οποία οι μαθηματικοί τύποι βασίζονται σε λογικές εκφράσεις αντί για αριθμητικές είναι γνωστά σαν λογικά λογιστικά φύλλα (logical spreadsheets). Σε αυτά μπορεί να γίνει χρήση της συνεπαγωγής (deduction) για την ανάλυση ιδιοτήτων των τιμών των κελιών τους.

Προγραμματιστικά θέματα[Επεξεργασία | επεξεργασία κώδικα]

Όπως οι πρώτες γλώσσες προγραμματισμού είχαν σχεδιαστεί για να παράγουν εκτυπώσεις λογιστικών φύλλων, έτσι και οι ίδιες οι προγραμματιστικές τεχνικές εξελίχθηκαν ώστε να επεξεργάζονται πίνακες (γνωστούς και σαν λογιστικά φύλλα ή matrices - εν. matrix) από δεδομένα στον υπολογιστή με μεγαλύτερη αποτελεσματικότητα.

Τα λογιστικά φύλλα χρησιμοποιούνται συχνά από απλούς χρήστες για ανάπτυξη προγραμμάτων (end-user development).[21] Άτομα που δεν είναι επαγγελματίες προγραμματιστές μπορούν να αυτοματοποιήσουν ενέργειες και να κατασκευάσουν πολύπλοκα αντικείμενα δεδομένων χωρίς σημαντικές γνώσεις προγραμματισμού. Πολλοί μάλιστα βρίσκουν ευκολότερο το να κάνουν υπολογισμούς μέσα σε ένα λογιστικό φύλλο από το να κατασκευάσουν το αντίστοιχο ακολουθιακό πρόγραμμα. Αυτό οφείλεται σε διάφορα γνωρίσματα των λογιστικών φύλλων.

  • Χρησιμοποιούν χωρικές σχέσεις για να ορίσουν σχέσεις του προγράμματος. Ο άνθρωπος έχει αναπτύξει σημαντική διαίσθηση σχετικά με το χώρο και τις εξαρτήσεις μεταξύ αντικειμένων. Αντίθετα, ο ακολουθιακός προγραμματισμός απαιτεί την πληκτρολόγηση της μιας γραμμής μετά την άλλη, που πρέπει να διαβάζονται αργά και προσεκτικά για να είναι εύκολες στην κατανόηση και την τροποποίηση.
  • Συγχωρούν τα λάθη, επιτρέποντας τη λειτουργία μερικών αποτελεσμάτων και συναρτήσεων. Ένα μέρος ενός προγράμματος μπορεί να λειτουργεί σωστά, ακόμα και αν άλλα μέρη είναι ημιτελή ή χαλασμένα. Αυτό διευκολύνει τη συγγραφή και την αποσφαλμάτωση των προγραμμάτων. Ο ακολουθιακός προγραμματισμός συνήθως απαιτεί κάθε γραμμή και κάθε χαρακτήρας να είναι σωστός για να μπορεί να εκτελεστεί το πρόγραμμα. Ένα λάθος μπορεί να σταματήσει ολόκληρο το πρόγραμμα, χωρίς να προκύψει κανένα αποτέλεσμα.
  • Τα περισσότερα σύγχρονα λογιστικά φύλλα επιτρέπουν δευτερογενή σημειογραφία (secondary notation): το πρόγραμμα μπορεί να έχει χρώματα, γραμματοσειρές, γραμμές, κλπ, ώστε να υπάρχουν οπτικές ενδείξεις της σημασίας διαφόρων στοιχείων του προγράμματος.

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

Συχνά είναι βολικό να θεωρούμε ένα λογιστικό φύλλο σαν ένα γράφο των μαθηματικών, όπου ο κάθε κόμβος είναι ένα κελί του λογιστικού φύλλου, και οι ακμές είναι αναφορές σε άλλα κελιά, όπως εμφανίζονται σε μαθηματικούς τύπους. Αυτό συχνά ονομάζεται ο γράφος εξαρτήσεων (dependency graph) του λογιστικού φύλου. Οι αναφορές ανάμεσα στα κελιά εκμεταλλεύονται χρονικές έννοιες όπως η σχετική και η απόλυτη θέση, ή οι θέσεις με όνομα, για να κάνει τους μαθηματικούς τύπους πιο εύκολους στην κατανόηση και τη χρήση.

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

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

Τα λογιστικά φύλλα εξελίχθηκαν ώστε να χρησιμοποιούν γλώσσες σεναρίων (scripting languages) όπως η VBA σαν εργαλεία για επέκταση πέρα από όσα παρέχουν τα ίδια τα φύλλα.

Δείτε επίσης[Επεξεργασία | επεξεργασία κώδικα]

Παραπομπές[Επεξεργασία | επεξεργασία κώδικα]

  1. «Rivals Set Their Sights on Microsoft Office: Can They Topple the Giant? - Knowledge@Wharton». Knowledge.wharton.upenn.edu. http://knowledge.wharton.upenn.edu/article.cfm?articleid=1795. Ανακτήθηκε στις 2010-08-20. 
  2. «spreadsheet analysis from winners, losers, and Microsoft». Utdallas.edu. http://www.utdallas.edu/%7Eliebowit/book/sheets/sheet.html. Ανακτήθηκε στις 2010-08-20. 
  3. «A». Utdallas.edu. http://www.utdallas.edu/%7Eliebowit/book/wordprocessor/word.html. Ανακτήθηκε στις 2010-08-20. 
  4. Mattessich, Richard (1961). «Budgeting Models and System Simulation». The Accounting Review 36 (3): 384–397. http://www.jstor.org/pss/242869. Ανακτήθηκε στις 2009-02-09. 
  5. Kimball, Wm. L., John, Stoffels, and R. Brian Walsh. Business Computer Language. 1996, IT-Directors.com
  6. "...something does not cease to become patentable merely because the point of novelty is in an algorithm."
  7. «Refac v. Lotus». Ll.georgetown.edu. http://www.ll.georgetown.edu/Federal/judicial/fed/opinions/95opinions/95-1350.html. Ανακτήθηκε στις 2010-08-20. 
  8. Rene Pardo - Personal Web Page
  9. http://www.renepardo.com/articles/spreadsheet.pdf
  10. portal.acm.org – APLDOT
  11. PC World - Three Minutes: Godfathers of the Spreadsheet[νεκρός σύνδεσμος]
  12. OpenOffice.org Calc
  13. Gnumeric XML File Format[νεκρός σύνδεσμος] από το εγχειρίδιο του Gnumeric.
  14. “Fixing Statistical Errors in Spreadsheet Software: The Cases of Gnumeric and Excel”, B. D. McCullough, 2004 <http://www.csdassn.org/software_reports/gnumeric.pdf>. (Αφορά τα Microsoft Excel XP και Gnumeric 1.1.2., με περιορισμένα στοιχεία για το νέο τότε 2003).
  15. “On the accuracy of statistical procedures in Microsoft Excel 2003”, B. D. McCullough, 2005 Computational Statistics & Data Analysis Volume 49, Issue 4, 15 Ιουνίου 2005, σελ. 1244-1252: "Excel 2003 is an improvement over previous versions, but not enough has been done that its use for statistical purposes can be recommended."
  16. «Improv and PowerStep». Web.archive.org. http://web.archive.org/web/20020606140158/simson.net/clips/91.MIPS.ImprovPowerStep.html. Ανακτήθηκε στις 2010-08-20. 
  17. THE EXECUTIVE COMPUTER; Lotus 1-2-3 Faces Up to the Upstarts By Peter H. Lewis Published: March 13, 1988
  18. Linux Spreadsheets
  19. Kay, Alan (September 1984). «Computer Software». Scientific American 251 (3): 52–59. doi:10.1038/scientificamerican0984-52.  – Value Rule
  20. Burnett, Margaret; Atwood, J., Walpole Djang, R., Reichwein, J., Gottfried, H., and Yang, S. (March 2001). «Forms/3: A first-order visual language to explore the boundaries of the spreadsheet paradigm». Journal of Functional Programming 11 (2): 155–206. http://journals.cambridge.org/action/displayAbstract?aid=72731. Ανακτήθηκε στις 2008-06-22.  – spreadsheets as functional programming
  21. Peter Hornsby. «Empowering Users to Create Their Own Software». http://www.uxmatters.com/mt/archives/2009/08/empowering-users-to-create-their-own-software.php. 

Ιστορία των λογιστικών φύλλων[Επεξεργασία | επεξεργασία κώδικα]

  • A Brief History of Spreadsheets (Σύντομη ιστορία των λογιστικών φύλλων) (Αγγλικά)
  • The History of Mathematical Tables: From Sumer to Spreadsheets by Martin Campbell-Kelly, Mary Croarken, Raymond Flood, Eleanor Robson (Editors). (στο amazon.com) (Αγγλικά)

Εξωτερικοί σύνδεσμοι[Επεξεργασία | επεξεργασία κώδικα]

Στο λήμμα αυτό έχει ενσωματωθεί κείμενο από το λήμμα Spreadsheet της Αγγλικής Βικιπαίδειας, η οποία διανέμεται υπό την GNU FDL και την CC-BY-SA 3.0. (ιστορικό/συντάκτες).