Φροντηστήριο Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Eργαλεία.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Το αλφαριθμητικό (string)
Advertisements

ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Στρατηγική ανάπτυξης προγράμματος την ώρα του διαγωνισμού
Αλγόριθμοι Αναζήτησης
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
ΜΑΘΗΜΑ 7ο Κυκλικές και Διπλά Συνδεδεμένες Λίστες,
Λίστες παράλειψης (skip lists) TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Αναδρομη και static Γραψετε την συναρτηση sequence_size που διαβαζει μια απροσδιοριστου μεγεθους σειρας και υπολογιζει και τυπωνει το μεγεθος της. int.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Γλωσσική Τεχνολογία Object-Orientation in Python.
Ψηφιακά Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να χρησιμοποιήσουμε την παραπάνω αναπαράσταση.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 9: Input / Output Εβδομάδα 8: Είσοδος / Έξοδος [Input / Output]
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 3: Δείκτες Εαρινό εξάμηνο 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ι. Σαρρής, τηλ.
Γλωσσική Τεχνολογία String Handling – Regular Expressions.
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
Δομές Δεδομένων στο Λ.Π.. Λίστες Λίστα είναι ένας όρος –Οι όροι αυτοί ορίζονται με τη βοήθεια μιας συνάρτησης: [ ] σταθερά για κενή λίστα – nil [t1| l]
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
ΠΕΡΙΓΡΑΦΗ ΓΛΩΣΣΑΣ PYTHON
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
ΣΥΝΑΡΤΗΣΕΙΣ.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
AWK Μία εξαιρετικά δυναμική συμβολική γλώσσα προγραμματισμού και ταυτόχρονα ένα εργαλείο διαχείρισης δεδομένων. Αναζητά, τροποποιεί αρχεία, δημιουργεί.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
Lists– Λίστες 1. Αυτό-αναφορικές δομές Τα μέλη μίας δομής μπορεί να είναι οποιουδήποτε τύπου, ακόμα και δείκτες σε δομές του ίδιου τύπου. Χρησιμοποιώντας.
Δυναμικη Δεσμευση Μνημης Συνδεδεμενες Λιστες (dynamic memory allocation, linked lists) Πως υλοποιουμαι προγραμματα που δεν γνωριζουμε πριν την εκτελεση.
Γλωσσική Τεχνολογία Εισαγωγικό Φροντιστήριο. Project του μαθήματος  Εργασία 2 ατόμων  Προφορική εξέταση για :  Project (80%)  Θεωρία (20%)  Στο φροντιστήριο.
1 Εισαγωγή στα Streams Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο java.io.*; java.io.*;
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
Δομές Δεδομένων. Επιλογή δομής δεδομένων Κριτήρια: – Μέγεθος του προβλήματος – Πως θα χρησιμοποιηθεί Ενέργειες που καθορίζουν το κόστος: – Lookup: αναζήτηση/έλεγχος.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Applets Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη δυνατότητα προβολής γραφικών και τη δυνατότητα υλοποίησης ενός γραφικού.
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι115/4/2015.
Έλεγχος Ονομάτων (Name Control) Για ένα πρόγραμμα που αποτελείται από πολλά τμήματα κάποια από τα οποία έχουν πιθανώς γραφτεί από άλλους προγραμματιστές.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ – FILE & PROCESS HANDLING Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία.
Γλωσσική Τεχνολογία HTML/XML Processing – HTTP Services.
Streams Streams: κανάλια ροής δεδομένων Κανάλια εισόδου: ανάγνωση δεδομένων Κανάλια εξόδου: αποστολή δεδομένων Συνήθεις πηγές και προορισμοί δεδομένων:
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.
Applets Εκτελούνται από τον appletviewer και από Java enabled web browsers Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
Βασικά στοιχεία της Java
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Κατανεμημένα Συστήματα
Εισαγωγή στον Προγ/μό Υπολογιστών
Εφαρμογές Υπολογιστών
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
Κεφάλαιο 10 Streams.
Εισαγωγή στον Προγραμματισμό με Python, ΑΠΘ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Εισαγωγή στον Προγραμματισμό με Python Εβδομάδα 1: Βασικά στοιχεία.
Μεταγράφημα παρουσίασης:

Φροντηστήριο Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Eργαλεία

Αρχείο Εισόδου

Άνοιγμα αρχείων open(filename, mode) – Το πρώτο όρισμα είναι τύπου string και περιέχει το όνομα του αρχείου (ή και το path κάτω από το οποίο αυτό υπάρχει). – Το δεύτερο όρισμα είναι επίσης τύπου string και υποδηλώνει τον τρόπο με τον οποίο θα χρησιμοποιηθεί το αρχείο. – 'r' (read - default) – 'w' (write) ‏ – 'a' (append) ‏ – 'r+' (both read/write) ‏ Παράδειγμα: – >>> f = open('/tmp/workfile', 'r')

Ανάγνωση περιεχομένου (1) f.read(size) – Η παράμετρος size είναι προεραιτική και υποδηλώνει πόσα bytes θα διαβαστούν από το αρχείο f (file object). – Είναι ευθύνη του προγραμματιστή να καθορίσει την τιμή της size. Αν δεν δοθεί τιμή, η read διαβάζει ολόκληρο το περιεχόμενο!! – Μεγάλη προσοχή στην χρήση της!! Η μνήμη δεν είναι άπειρη... Παράδειγμα: – >>> f.read() – 'This is the entire file.\n' – >>> f.read() – ' '

Ανάγνωση περιεχομένου (2) f.readline() – Ανάγνωση μίας γραμμής από το αρχείο. Ως delimeter χρησιμοποιείται ο χαρακτήρας νέας γραμμής ('\n'). – Το επιστρεφόμενο string περιέχει τον χαρακτήρα νέας γραμμής εκτός και αν πρόκειται για το τέλος του αρχείου, το οποίο δεν τελειώνει με νέα γραμμή!! – Προσοχή στην επιστρεφόμενη τιμή!! Ένα κενό string είναι το τέλος του αρχείου ενώ ένα string της μορφής '\n' είναι μία κενή γραμμή!! Παράδειγμα: – >>> f.readline() – 'This is the first line of the file.\n' – >>> f.readline() – 'Second line of the file\n' – >>> f.readline() – ' '

Ανάγνωση περιεχομένου (3) f.readlines(sizehint) – Επιστρέφει μία λίστα, όπου κάθε στοιχείο της είναι μία γραμμή του αρχείου. – Η παράμετρος sizehint είναι προεραιτική και συνίσταται για πραγματικά μεγάλα αρχεία, με σκοπό την καλύτερη διαχείρηση μνήμης. Αναφέρεται σε bytes, αλλά η συνάρτηση θα επιστρέψει μόνο ολόκληρες γραμμές. Παράδειγμα: – >>> f.readlines() – ['This is the first line of the file.\n', 'Second line of the file\n']

Ανάγνωση περιεχομένου (4) >>> for line in f: print line This is the first line of the file. Second line of the file Διαφορετικό buffering στην μνήμη!! Δεν πρέπει να χρησιμοποιείται σε συνδυασμό με τις προηγούμενες μεθόδους. Προσπέλαση ανά γραμμή χωρίς την χρήση συνάρτησης. Η καλύτερη προσέγγιση. Καλύτερη διαχείρηση μνήμης, γρήγορη, απλή, κατανοητός κώδικας.

Ανάγνωση περιεχομένου (5) >>> with open('/tmp/workfile', 'r') as f:... read_data = f.read() >>> f.closed True Η προσέγγιση αυτή έχει το πλεονέκτημα ότι το αρχείο κλείνει κανονικά ακόμα και αν προκύψει exception. Επίσης, οδηγεί σε μικρότερο κώδικα από την χρήση try-finally blocks.

Εγγραφή f.write(string) – Τόσο απλά!! – Για εγγραφή άλλου τύπου δεδομένων, π.χ. int, πρέπει να γίνει πρώτα μετατροπή σε string, π.χ.: a = 5 s = str(a) ‏ f.write(s) ‏ – Hint: Προσοχή κατά την αντίστοιχη ανάκτηση και χρήση αριθμών από αρχεία. Πρέπει να γίνει μετατροπή σε int πριν την χρήση τους σε μαθηματικές πράξεις..

Κλείσιμο αρχείων f.close() – Τόσο απλά!! – Όταν τελειώσουμε με το αρχείο εκτελούμε την παραπάνω εντολή για την αποδέσμευση μνήμης και την αποφυγή περίεργων καταστάσεων...

Exceptions (1) Κατά το άνοιγμα/κλείσιμο ή κατά την ανάγνωση/ εγγραφή ενός αρχείου οτιδήποτε μπορεί να πάει στραβά.. (“Νόμος του Murphy για το I/O.”) ‏ Χρησιμοποιούμε χειρισμό εξαιρέσεων για την αποφυγή “βίαιου” τερματισμού της εκτέλεσης του προγράμματός μας. Ο τύπος exception που γίνεται “throw” σε αυτές τις περιπτώσεις είναι ο IOError.

Exceptions (2) Γενική μορφή try block: – try:... except IOError: pass finally...

Exceptions (3) Παράδειγμα: – try: f = open(path.mode) f.readlines()... except IOError: pass finally … f.close()

Trie

Υλοποίηση Trie (1) class Trie: def __init__(self): self.root = [None, {}] def add(self, key, value): curr_node = self.root for ch in key: curr_node = curr_node[1].setdefault(ch, [None, {}]) curr_node[0] = value >>> t = Trie() >>> t.add("chat", "cat") [None, {'c': [None, {'h': [None, {'a': [None, {'i': [None, {'r': ['flesh', {}]}], 't': ['cat', {}]}], 'i': [None, {'c': ['stylish', {}], 'e': [None, {'n': ['dog', {}]}]}]}]}]}]

Υλοποίηση Trie (2) def insert (trie, key, value): if key: first, rest = key[0], key[1:] if first not in trie: trie[first] = {} insert(trie[first], rest, value) else: trie['value'] = value >>> trie = defaultdict(dict) >>> insert(trie,'chat','cat') {'c': {'h': {'a': {'i': {'r': {'value': 'flesh'}}, 't': {'value': 'cat'}}, 'i': {'c': {'value': 'stylish'}, 'e': {'n': {'value': 'dog'}}}}}}

Dictionaries Δομή αναζήτησης (ΜΗ ταξινομημένη), κρατάει στοιχεία τύπου key:value Παράδειγμα: – >>> tel = {'jack': 4098, 'sape': 4139} Ανάκτηση κλειδιών: – >>> tel.keys() – ['guido', 'sape'] Αναζήτηση κλειδιού: – >>> 'guido' in tel – True Iteration: – >>> for k, v in knights.iteritems(): –... print k, v – jack 4098 – sape 4139

Lists (1) Ταξινομημένη δομή Μπορεί να χρησιμοποιηθεί ως σωρός, ουρά. Παράδειγμα: – a = [66.25, 333, 333, 1, ] Πλήθος συναρτήσεων: list.append(x) Προσθέτει το στοιχείο x στο τέλος της λίστας. list.extend(L) Επεκτείνει το τέλος της λίστας κατά L στοιχεία. list.insert(i, x) Τοποθετεί το στοιχείο x στην θέση i της λίστας.

Lists (2) list.remove(x) Αφαιρεί την πρώτη εμφάνιση του x. list.pop([i]) Επιστρέφει και αφαιρεί το στοιχείο της θέσης i από την λίστα. Η παράμετρος i είναι προεραιτική και αν δεν δοθεί, το στοιχείο αφαιρείται από το τέλος της λίστας. list.index(x) Εποστρέφει τον δείκτη της πρώτης εμφάνισης του x. list.count(x) Μετράει τις εμφανίσεις του x στην λίστα. list.sort() Ταξινομεί τα στοιχεία της λίστας. list.reverse() Αντιστρέφει τα στοιχεία της λίστας.

Strings (1) str.strip([chars]) – Αφαιρεί τα κενά από την αρχή και το τέλος του str. str.upper() – Επιστρέφει ένα αντίγραφο του string με όλους τους χαρακτήρες του κεφαλαία. str.lower() – Επιστρέφει ένα αντίγραφο του string με όλους τους χαρακτήρες του μικρά. str.endswith(suffix[, start[, end]]) – Επιστρέφει true αν το str τελειώνει με το επίθεμα suffix. Το suffix μπορεί να είναι tuple από πιθανά επιθέματα ενώ μπορεί προαιρετικά να δοθούν όρια αναζήτησης start και stop.

Strings (2) str.find(sub[, start[, end]]) – Επιστρέφει τον δείκτη πρώτης εμφάνισης του sub, αλλιώς -1. str.index(sub[, start[, end]]) – Ίδια με την find αλλά επιστρέφει ValueError. str.join(iterable) – Συνενώνει το str με το iterable. str.replace(old, new[, count]) – Επιστρέφει ένα αντίγραφο του string όπου το old αντικαθίσταται από το new (προεραιτικά count φορές).