Παρασκευή, 26 Φεβρουαρίου 2016

Εγχειρίδιο της Μ2000 - Τεύχος 20ο

10.4 Επεξεργασία/Αλλαγές Εγγράφου

Ένα έγγραφο μπορούμε να το διορθώσουμε στον διορθωτή, ή προγραμματιστικά να κάνουμε αλλαγές, προσθήκη παραγράφων/ διαγραφή καθώς και εύρεση λέξεων αλλά και μετρήσεις!

 

10.4.1 Παρεμβολή κειμένου σε έγγραφο.

 
Με εντολές για αλφαριθμητικά όπως Παρεμβολή, όπου η αριθμητική έκφραση σχετίζεται με τη θέση:
 
Έγγραφο α$={Γιορτή
            Εκδήλωση
            Πάρτι
            Φεστιβάλ
            }
Στη ι=θέση(α$, "Πάρτι")
Παρεμβολή ι+5 α$="Μετά το πάρτι ακριβώς"
Παρεμβολή 8 α$="Πριν την Εκδήλωση"
Αναφορά α$


θα μπορούσε να γίνει χωρίς αντικείμενο έγγραφο:
 
β$={Γιορτή
            Εκδήλωση
            Πάρτι
            Φεστιβάλ
            }
Στη ι=θέση(β$, "Πάρτι")
Παρεμβολή ι+5 β$="Μετά το πάρτι ακριβώς"
Παρεμβολή 8 β$="Πριν την Εκδήλωση"
Αναφορά β$

Ή θα μπορούσαμε να αποφύγουμε το μπέρδεμα με τους υπολογισμούς των θέσεων από την αρχή του εγγράφου, αναφέροντας αριθμό παραγράφου (στη δεύτερη παρεμβολή λέμε και τη θέση στη παράγραφο:
 
Έγγραφο α$={Γιορτή
            Εκδήλωση
            Πάρτι
            Φεστιβάλ
            }
Παρεμβολή στο 2 α$="Πριν την Εκδήλωση"
Παρεμβολή στο 3,6 α$="Μετά το πάρτι ακριβώς"
Αναφορά α$

Όμως και αυτό μπορεί εδώ να δούλεψε αλλά αν στο 2 βάζαμε πολλές παραγράφους τότε η 3η παράγραφος θα ήταν άλλη και όχι μετά το πάρτι ακριβώς!
Μπορούμε όμως να πάρουμε το δείκτη της 3ης παραγράφου, ο οποίος δεν αλλάζει για αυτήν ακόμα και αν μετακινθεί, γίνει τέταρτη. Μόνο αν την σβήσουμε θα γίνει άκυρη. Αλλά ακόμα δεν ξέρουμε πώς!
 
Έγγραφο α$={Γιορτή
            Εκδήλωση
            Πάρτι
            Φεστιβάλ
            }
\\ παίρνουμε τον δείκτη της 3ης παραγράφου
κ=Παράγραφος(α$,3)
Παρεμβολή στο 2 α$={Πριν την Εκδήλωση
            Και άλλη γραμμή
            }
\\ η τρίτη παράγραφος μετακινήθηκε δυο παραγράφους πιο κάτω
\\ αλλά δεν μας πειράζει, ξέρουμε που έχει πάει!
\\ διότι δεν έχει αλλάξει ο δείκτης της (τον έχουμε στο κ)
Παρεμβολή στο αριθμός.παραγράφου(α$, κ),6 α$="Μετά το πάρτι ακριβώς"
Αναφορά α$
Τύπωσε Υπό \\ αλλαγή γραμμής με υπογράμμιση της προηγούμενης
Παρεμβολή 1 α$="Και εδώ πριν την "
Αναφορά α$

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

10.4.2 Διαγραφή παραγράφων σε έγγραφο

 
Θα δούμε δυο παραδείγματα. Ένα όπου αφαιρούμε μια παραγραφο και την βάζουμε ξανά στο τέλος, και ένα άλλο που αφαιρούμε δυο συνεχόμενες και τις βάζουμε σε άλλο έγγραφο
 
Έγγραφο α$={Γιορτή
            Εκδήλωση
            Πάρτι
            Φεστιβάλ
            }
Αναφορά α$
Τύπωσε Υπό
\\ αποκόπτω την δεύτερη παράγραφο
\\ και την κρατάω στη π$
π$=Παραγραφος$(α$,2,-1)
\\ την προσθέτω στο τέλος με αλλαγή παραγράφου
α$=π$+{
}
Αναφορά α$
Τώρα εξάγω μια προς μια τις παραγράφους και τις βάζω σε άλλο έγραφο. Με τον ίδιο τρόπο μπορώ να τις επεξεργαστώ και μετά να τις παρεμβάλω στις θέσεις τους, αλλά εδώ απλά με ενδιαφέρει να τις προσθέσω στο τέλος του εγγράφου.
 

Έγγραφο α$={Γιορτή
            Εκδήλωση
            Πάρτι
            Φεστιβάλ
            }
Αναφορά α$
Τύπωσε Υπό
\\ αποκόπτω την δεύτερη παράγραφο
\\ και την κρατάω στη π$, δυο φορές
\\ βάζω και αλλαγή παραγράφου
Έγγραφο π$
Για ι=1 έως 2 {
      π$=Παράγραφος$(α$,2,-1)+{
      }
}
\\ προσθέτω στο τέλος
α$=π$
Καθαρό π$
Αναφορά α$
 

10.4.3 Καταχώρηση σε παραγράφους

 
 
Η Καταχώρηση γράφει πάνω σε άλλες παραγράφους, αλλά μπορούμε να γράψουμε και σε θέσεις, που είτε υπάρχουν είτε δημιουργούνται (με προσθήκη διαστημάτων) σε μια παράγραφο:
 
Έγγραφο α$={Γιορτή
            Εκδήλωση
            Πάρτι
            Φεστιβάλ
            }
\\ αλλάζουμε τη 2η παράγραφο
Καταχώρηση 2 α$="Κενό"
\\ σβήνουμε δυο χαρακτήρες και βάζουμε ένα διάστημα
Καταχώρηση 3,3 α$=" "   \\ δεν βάζει απλά κενά αλλά με shift+ctrl+space
\\ το οποίο λέγεται non-breaking space
\\ ή με shift+alt+space διάστημα για αριθμούς
\\ βλέπουμε στο διορθωτή τους μη φανερούς χαρακtήρες με F10
\\ μπορώ να περάσω διαστήματα αν δεν είναι στις άκρες"
Καταχώρηση 4,3 α$="12 45"
' αν δεν υπάρχει η 20η θέση, τότε μπαίνουν διαστήματα
Καταχώρηση 1,40 α$="οκ"
αναφορά α$
Τύπωσε Υπό
Καταχώρηση 1 α$={Νέα πρώτη παράγραφος
      Και νέα δεύτερη παράγραφος
      }
αναφορά α$
Καταχώρηση 1, 5 α$="ΠΡΩΤΗ"
Τύπωσε Υπό
αναφορά α$

 

1.5 Εύρεση λέξης/φράσης σε παράγραφο

 
Για φράση δείτε όπου το Γιορτή το κάνουμε Γιο ρτή και δουλεύει. Η εύρεση δουλεύει χωρίς να κοιτάει πεζά και κεφαλαία, αλλά κοιτάει τόνους. Η εύρεση εδώ είναι με σειριακό τρόπο, από παράγραφο σε παράγραφο.
 
Έγγραφο α$={Διαγράφω αυτό
            Γιορτή Χαράς
            Εκδήλωση
            Πάρτι και Γιορτή Παιδιών
            Φεστιβάλ
            }
\\ πετάω τη πρώτη παράγραφο
πέταξέτο$=παράγραφος$(α$,1,-1)
Εύρεση α$, "ΓΙΟΡΤΉ"  \\ βρίσκει με τόνο μόνο
Διάβασε Τι
\\ διαβάζουμε 0 αν δεν βρει ή ένα νούμερο από το 1 που δηλώνει...
\\ ...θέση στο κείμενο αν το βλέπαμε σαν ένα αλφαριθμητικό
\\ αν δώσει μη μηδενική τιμή τότε δίνει και άλλες δυο
\\ αριθμό παραγράφου και
Αν Τι>0 τότε {
Διάβασε Παρ, Που
      \\ η τρίτη παράμετρος στην Παράγραφος$ δίνει
      \\ το αλφαριθμητικό από το σημείο που θέλουμε
      \\ προσοχή:
      \\ αν είναι αρνητικός τότε διαγράφει την παράγραφο!
      \\ αλλά μας δίνει ένα αντίγραφο! (εδώ θα πήγαινε χαμένο).
      Τύπωσε Παράγραφος$(α$, Παρ,Που)
}
\\ ψάχνουμε παρακάτω
Εύρεση α$,  "Γιορτή", τι+1
Διάβασε Τι
Αν Τι>0 τότε {
Διάβασε Παρ, Που
      Τύπωσε Παράγραφος$(α$, Παρ,Που)
}

10.6 Λίστα  Λέξεων και Μοναδικών Λέξεων σε Έγγραφο

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

Έγγραφο α$={Διαγράφω αυτό
            Γιορτή Χαράς, 12-3-2016
            Εκδήλωση 12-2332-23
            Πάρτι και Γιορτή Παιδιών
            Φεστιβάλ 12,34,56
            }
Σωρός Νέος {
      Τύπωσε Εγγράφου.Λέξεις(α$) \\ 10
      \\ βάζει στο σωρό ταξινομημένες τις λέξεις
      \\ μόνο λέξεις!
      Λέξεις α$
      Ενώ όχι κενό {
            Τύπωσε Γραμμα$
      }
}
Τύπωσε Υπό
Σωρός Νέος {
      Τύπωσε Εγγράφου.Μοναδικές.Λέξεις(α$) \\ 9
      \\ βάζει στο σωρό ταξινομημένες τις λέξεις..
      \\ με τον αριθμό της εμφάνισης σε παρένθεση
      Λέξεις α$
      Ενώ όχι κενό {
            Τύπωσε Γραμμα$
      }
}
10.7 Ταξινόμηση σε έγγραφο
 

Μπορούμε να ταξινομούμε σε μια περιοχή παραγράφων αλλά και από μια θέση χαρακτήρα στη παράγραφο και μετά. Έτσι το έγγραφο μπορεί να έχει μεταβλητό κλειδί με σταθερού μήκους δεδομένα. Το αντίθετο, σταθερό κλειδί με μεταβλητό μήκος δεδομένων είναι εύκολα κατανοητό ότι γίνεται αν δεν μας ενδιαφέρουν τα όμοια κλειδιά ώστε να έχουμε κάποια αλλαγή σειράς. Η ρουτίνα ταξινόμησης είναι μια παραλλαγή της QuickSort. Οι μεταθέσεις δεν χαλάνε τους δείκτες παραγράφου, αλλάζουν άλλους δείκτες εσωτερικά (η λίστα του εγγράφου είναι δυναμική με δείκτες επόμενο και προηγούμενο)
Αν υποθέσουμε ότι έχουμε κλειδιά π.χ. στο 8ο χαρακτήρα τότε μπορούμε να εφαρμόσουμε δική μας δυαδική αναζήτηση ελέγχοντας με την παράγραφος$(α$,που, 8) το κλειδί που αναζητούμε.
 
Έγγραφο α$={Φεστιβάλ
            Γιορτή Χαράς
            Εκδήλωση
            Πάρτι και Γιορτή
            }
Ταξινόμηση α$, 1, 4 \\ αρχή από 1η παράγραφο, τέλος από 2η
Αναφορά α$
Τύπωσε Υπό
\\ ταξινόμηση με σταθερό πλάτος στοιχείων και μεταβλητό κλειδί
\\ εδώ το κλειδί είναι από τον 8ο χαρακτήρα
Έγγραφο β$={*420034Φεστιβάλ
            *004034Γιορτή Χαράς
            *000033Εκδήλωση
            *002031Πάρτι και Γιορτή
            }
Ταξινόμηση β$, 1, 4,8 \\ αρχή από 1η παράγραφο, τέλος από 2η
Αναφορά β$
 

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου