Περιεχόµενα 1 Εισαγωγή 2 Κανονικές Εκφράσεις 3 Η ιδεατή µηχανή της Java

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

Download "Περιεχόµενα 1 Εισαγωγή 2 Κανονικές Εκφράσεις 3 Η ιδεατή µηχανή της Java"

Transcript

1 Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Μεταπτυχιακό Πρόγραµµα Σπουδών Μεταγλωττιστής κανονικών εκφράσεων σε Java Bytecodes Υπεύθυνος Καθηγητής : ιοµήδης Σπινέλλης Καρακόιδας Βασίλειος Μ

2 Περιεχόµενα 1 Εισαγωγή Οριοθέτηση της εργασίας Στόχοι Περίγραµµα εργασίας Μέθοδος γραφής της εργασίας Κανονικές Εκφράσεις Ορισµοί Ιστορική αναδροµή Ορισµός των κανονικών εκφράσεων Συντακτικό κανονικών εκφράσεων Επεξηγήσεις και παραδείγµατα χρήσης Τρόποι επεξεργασίας των κανονικών εκφράσεων Γενικά για την διαδικασία επεξεργασίας κανονικών εκ- ϕράσεων Αυτόµατα Κατηγοριοποίηση µηχανών κανονικών εκφράσεων ηµιουργία µη ντετερµινιστικού αυτόµατου από κανονική έκφραση ηµιουργία ντετερµινιστικού αυτόµατου από κανονική έκφραση Η ιδεατή µηχανή της Java Ιστορική αναδροµή Αρχιτεκτονική της Java Εργαλεία ανάπτυξης και διεπαφές προγραµµατισµού (Development Tools & APIs) Τεχνολογίες διανοµής (Deployment Technologies) Εργαλεία διεπαφών χρηστών (User Interface Toolkits) ιεπαφές προγραµµατισµού για ενσωµάτωση (Integration APIs)

3 3.2.5 Βασικές διεπαφές προγραµµατισµού (Core APIs) Η ιδεατή µηχανή της Java Εισαγωγή Τύποι δεδοµένων Καταχωρητές Τοπικές µεταβλητές Στοίβα εντολών Περιβάλλον εκτέλεσης ιαχείρισή µνήµης Η δοµή των αρχείων κλάσης (class files) Υπογραφές (Signatures) Σύνολο εντολών ιδεατής µηχανής (Byte code instruction set) Κώδικας µεθόδων Υλοποιήσεις µηχανών κανονικών εκφράσεων Κανονικές εκφράσεις και Java Μηχανές κανονικών εκφράσεων σε Java Sun Regular Expression Engine IBM GNU Jakarta Regexp & ORO Automaton Σύγκριση µηχανών κανονικών εκφράσεων Κριτήρια σύγκρισης οκιµή απόδοσης Αποτελέσµατα Υλοποιήσεις σε άλλες πλατφόρµες Visual Basic/C#.NET Perl GNU Kawa SQL: Σχεδιασµός του µεταγλωττιστή F.i.r.e Βασική αρχιτεκτονική του µεταγλωττιστή Πυρήνας του µεταγλωττιστή Τµήµατα δηµιουργίας αυτοµάτου Τµήµα µεταγλώττισης αυτοµάτου

4 6 Υλοποίηση του µεταγλωττιστή F.i.r.e Τµηµατικός προγραµµατισµός στον µεταγλωττιστή F.i.r.e Τµήµατα δηµιουργίας αυτοµάτων Μέθοδος προγραµµατισµού DFAAutomaton Τµήµατα µεταγλωττιστών σε κώδικα µηχανής Μέθοδος προγραµµατισµού Μέθοδοι χειρισµού των δεδοµένων JavaSourceWriter JavaAssemblyWriter JavaClassWriter οκιµές απόδοσης Πειραµατικά αποτελέσµατα Ελεγχος συµβατότητας µε αντίστοιχες µηχανές Σύγκριση της απόδοσης του µεταγλωττιστή F.i.r.e. µε τις µηχανές κανονικών εκφράσεων σε Java Αποτελέσµατα σύγκρισης Τύπος µηχανής Πρότυπο Unicode Σχεδιασµός και ευελιξία Απαιτήσεις σε πλατφόρµα Java Αξιοπιστία Συµπεράσµατα Μελετώντας το παρελθόν Αντιµετωπίζοντας το παρόν Προσδοκώντας το µέλλον Α Γραµµατική κανονικών εκφράσεων του προτύπου POSIX 89 Β Αποτελέσµατα δοκιµών απόδοσης Damien Mascord 93 Γ Παραγόµενο Java αρχείο από το τµήµα µεταγλώττισης JavaSourceWriter 101 Παραγόµενο Java αρχείο από το τµήµα µεταγλώττισης JavaAssemblyWriter 104 3

5 Κατάλογος Πινάκων 2.1 Η ιεραρχία Chomsky Συντακτικοί κανόνες κανονικών εκφράσεων Κλάσεις χαρακτήρων του POSIX ιαφοροποιητές του m// ιαφοροποιητές του tr/// Απαιτήσεις χώρου και χρόνου για την επεξεργασία µιας κανονική έκφρασης ιαφορές ντετερµινιστικών και µη-ντετερµινιστικών µηχανών Τύποι δεδοµένων της Java Ειδικά σήµατα πρόσβασης κλάσεων (Access Flags) Σηµειολογία ϐασικών τύπων υπογραφών της Java Αποτελέσµατα δοκιµής επιδόσεων υνατότητες µηχανών κανονικών εκφράσεων

6 Κατάλογος Σχηµάτων 2.1 Αυτόµατο Κανόνας 1 του αλγόριθµου Thompson Κανόνας 2 του αλγόριθµου Thompson Κανόνας 3-a του αλγόριθµου Thompson Κανόνας 3-b του αλγόριθµου Thompson Κανόνας 3-c του αλγόριθµου Thompson Μεταγλώττιση και εκτέλεση Java κλάσεων οµή ενός αρχείου κλάσης της Java Μέθοδος επεξεργασίας µιας κανονικής έκφρασης ιάγραµµα UML του F.i.r.e ιάγραµµα UML του τµήµατος δηµιουργίας κλάσεων ιάγραµµα UML τµήµατος µεταγλώττισης αυτοµάτου Πηγαίος κώδικας της διεπαφής Compiler Πηγαίος κώδικας της διεπαφής DFA Πηγαίος κώδικας της διεπαφής State Πηγαίος κώδικας της διεπαφής Transition ιάγραµµα κλάσεων του τµήµατος DFA Automaton Πηγαίος κώδικας της διεπαφής Writer Πηγαίος κώδικας της κλάσης Matcher ιάγραµµα κλάσεων UML για χειρισµό δεδοµένων µε παραδοσιακό I/O ιάγραµµα κλάσεων UML για χειρισµό δεδοµένων µε παραδοσιακό I/O ιαδικασία λειτουργίας του JavaSourceWriter ιάγραµµα κλάσεων UML για το τµήµα µεταγλωττιστή Java- SourceWriter ιαδικασία λειτουργίας του JavaAssemblyWriter ιάγραµµα κλάσεων UML του τµήµατος µεταγλώττισης JavaAssemblyWriter

7 6.14 ιαδικασία λειτουργίας του JavaClassWriter Αποτέλεσµα πρώτης δοκιµής Αποτέλεσµα δεύτερης δοκιµής Αποτέλεσµα τρίτης δοκιµής Αποτέλεσµα τέταρτης δοκιµής

8 Πρόλογος The investment group eyed the entrepreneur with caution, their expressions flickering from scepticism to intrigue and back again. "Your bold plan holds promise," their spokesman conceded. "But it is costly and entirely speculative. Our mathematicians mistrust your figures. Why should we entrust our money into your hands? What do you know that we do not?" "For one thing," he replied, "I know how to balance an egg on its point without outside support. Do you?" And with that, the entrepreneur reached into his satchel and delicately withdrew a fresh hen s egg. He handed over the egg to the financial tycoons, who passed it amongst themselves trying to carry out the simple task. At last they gave up. In exasperation they declared, "What do you ask is impossible! No man can balance an egg on its point." So the entrepreneur took back the egg from the annoyed businessmen and placed it upon the fine oak table, holding it so that its point faced down. Lightly but firmly, he pushed down on the egg with just enough force to crush in its bottom about half an inch. When he took his hand away, the egg stood there on its own, somewhat messy, but definitely balanced. "Was that impossible?" he asked. "It s just a trick," cried the businessmen. can do it." "Once you know how, anyone "True enough," came the retort. "But the same can be said for anything. Before you know how, it seems an impossiblity. Once the way is revealed, it s so simple that you wonder why you never thought of it that way before. Let me show you that easy way, so others may easily follow. Will you trust me?" 7

9 Eventually convinced that this entrepreneur might possibly have something to show them, the skeptical venture capitalists funded his project. From the tiny Andalusian port of Palos de Morguer set forth the Niña, the Pinta and the Santa Maria, led by an entreprenuer with a sligthly broken egg and his own ideas: Christopher Columbus. Many have since followed. 8

10 Ευχαριστίες Θα ήθελα να ευχαριστήσω τα ακόλουθα άτοµα για την άµεση συνεισφορά τους κατα την διάρκεια εκπόνησης της πτυχιακής µου εργασίας : Την οικογένεια µου που µε στηρίζει όλα τα χρόνια των σπουδών µου και µου παρέχει ένα ήρεµο και Ϲεστό περιβάλλον. Τον ιοµήδη Σπινέλλη (επιβλέποντα καθηγητή) που µου εµπιστεύθηκε το συγκεκριµένο ϑέµα, που µε ϐοήθησε στα πρώτα ϐήµατα εκπόνησης της πτυχιακής και που µου έδωσε µια απειρία συµβουλών και εργαλείων (ϐοηθητικών προγραµµάτων, πολλά από αυτά δεν είναι δηµοσιευµένα στο ευρύ κοινό :) ) κατα την διάρκεια αυτής. Τον Κώστα Σαϊδη που σχολίασε προσεκτικά το κείµενο της πτυχιακής αλλά και τις πρώιµες εκδόσεις του F.i.r.e. Τον Γιώργο Οικονόµου (νονός) όπου ϐάφτισε τον µεταγλώττιστή F.i.r.e., όπως επίσης και για την τεράστια υποµονή του παρά τον σχεδόν καθηµερινό του ϐοµ- ϐαρδισµό από κανονικές εκφράσεις. :) Τον ηµήτριο Λίαππη ο οποίος έθεσε τα καλύτερα επιχειρήµατα που έχω ακούσει όταν του έθεσα το ϑέµα του F.i.r.e. µε αποτέλεσµα να οδηγηθώ σε πιο ώριµες αποφάσεις στο σχεδιασµό του, καθώς και στην ϕιλότιµη προσπάθεια του να µου διορθώσει το παρόν κείµενο (εξαιρούµενο το κείµενο των ευχαριστιών :) ). Τον Αντώνιο Πετρόπουλο ο οποίος µου ανέδειξε πολλά σφάλµατα στην υλοποίηση και µου έδωσε ιδέες (πολλές ϕορες µέσω της συζήτησης) για τον τρόπο αντιµετώπισης τους. Τον Γιαννή Οικονόµου για την "κατά λάθος" συνεισφορά του στα περιεχόµενα του πρώτου κεφαλαίου. 9

11 Τον Χρήστο ΚΚ Λοβέρδο για τις διορθώσεις στις πρώιµες εκδόσεις του κείµενου και για το antlr :). Τους συµφοιτητές µου στο µεταπτυχιακό ( Ετος ) για τον πολύ όµορφο χρόνο που διανύσαµε µαζί. 10

12 Περίληψη Η καταγωγή των κανονικών εκφράσεων ϐρίσκεται στην ϑεωρία αυτοµάτων και τυπικών γλωσσών. Αυτά τα δύο πεδία µελετούν υπολογιστικές µεθόδους και τρόπους για να περιγραφούν οι τυπικές γλώσσες. Το 1940 ο Warren McCulloch και ο Walter Pits περιέγραψαν το νευρικό σύστηµα µοντελοποιόντας το µε την χρήση αυτοµάτων. Ο µαθηµατικός Stephen Kleene περιέγραψε τα µοντέλα αυτά χρησιµοποιώντας µαθηµατικούς συµβολισµούς και τα ονόµασε κανονικά σύνολα (regular sets). Ο Ken Thompson τα υλοποίησε στον κει- µενογράφο του qed και αργότερα στο κειµενογράφο ed ο οποίος αποτελούσε µέρος του UNIX. Από τότε οι κανονικές εκφράσεις χρησιµοποιούνται ευρύτατα σε όλα τα UNIX και στις εφαρµογές τους όπως : expr, awk, Emacs, vim, lex και στην Perl [Enc03c]. Οι κανονικές εκφράσεις ανήκουν στον τύπο γραµµατικής 3 της ιεραρχίας Chomsky (Chomsky hierarchy). Οι ιεραρχίες Chomsky αποτελούν ένα σύνολο από τάξεις τυπικών γραµµατικών (formal grammars). Με ϐάση αυτές δηµιουργούνται οι τυπικές γλώσσες (formal languages). Η ιεραρχία αυτή περιγράφηκε από τον Chomsky το 1956 [Enc03a]. Η Java ξεκίνησε να αναπτύσσεται από τις αρχές του 1991 από τους Bill Joy, Andy Bechtolsheim, Wayne Rosing, Mike Sheridan, James Gosling και Patrick Naughton. Παρουσιάστηκε επίσηµα από την Sun Microsystems το Από την εµφάνιση της κέρδισε αρκετούς οπαδούς και πλέον είναι µια από τις τρεις επικρατέστερες γλώσσες στην προτίµηση των µηχανικών λογισµικού και των προγραµµατιστών. Με την εµφάνιση της Java άρχισαν να εµφανίζονται οι πρώτες υλοποιήσεις µηχανών κανονικών εκφράσεων. Οι προσπάθειες που έγιναν υλοποιούσαν κυρίως µηχανές που ακολουθούσαν το πρότυπο του POSIX, εκτός από την ORO η οποία υλοποιήθηκε µε ϐάση τις επεκτάσεις τις PERL (παράγραφος 2.1.3). Με την έκδοση 1.4.x η SUN αποφάσισε να συµπεριλάβει µια µηχανή κανονικών εκφράσεων στη κύρια διανοµή της πλατφόρµας Java. Η 11

13 µηχανή αυτή περιλαµβάνεται στις "ϐασικές διεπαφές προγραµµατισµού" (java.util.regex). Ο µεταγλωττιστής F.i.r.e. (Fast Implementation of Regular Expressions) είναι κατά ϐάση µια µηχανή κανονικών εκφράσεων. Σχεδιάστηκε µε γνώµονα να πληρεί τις παρακάτω προϋποθέσεις : 1. Μεγαλύτερη αποδοτικότητα εκτέλεσης % Συµβατότητα µε την αντίστοιχη ϐιβλιοθήκη της Sun (java.util.regex) 3. Μηχανή ϐασισµένη σε ντετερµινιστικό αυτόµατο (DFA) 4. Υβριδική υλοποίηση % υλοποίηση σε Java Ο µεταγλωττιστής F.i.r.e. υποστηρίζει την ανάπτυξη τµηµάτων (modules). Στο κεφάλαιο 5 αναφέρεται ότι µπορούν να προγραµµατιστούν δύο κατηγορίες τµηµάτων : (1) τα τµήµατα δηµιουργίας αυτοµάτων από κανονική έκφραση και (2) τα τµήµατα µεταγλωττιστών σε κώδικα µηχανής. Τα τµήµατα δηµιουργίας αυτοµάτων είναι υπεύθυνα για την κατασκευή του ντετερµινιστικού αυτόµατου από τη κανονική έκφραση. Τα τµήµατα µεταγλωττιστών σε κώδικα µηχανής έχουν ως στόχο την µετατροπή του αυτοµάτου στο τελικό περιβάλλον εκτέλεσης πχ. Java Source, JVM bytecode κτλ. Ο µεταγλωττιστής F.i.r.e. δηµιουργήθηκε µε κύριο στόχο την συµβατότητα και την ταχύτητα. Για να ελέγξουµε την συµβατότητα του µε τα πρότυπα εκτελέσαµε µια σειρά από κανονικές εκφράσεις οι οποίες είχαν ως στόχο να δοκιµάσουν τον µεταγλωττιστή σε ακραίες περιπτώσεις. Για να συγκρίνουµε την απόδοση της F.i.r.e. επιλέξαµε τις δύο πιο αποδοτικές µηχανές κανονικών εκφράσεων, µέσα από εκείνες που αναλύουµε στο κεφάλαιο 4. Αυτές είναι η µηχανή Automaton και η αντίστοιχη της SUN (java.util.regex). 12

14 Executive Summary Regular expressions are a powerful tool for text parsing and manipulation. Their theoretical background lie with Automata theory and formal languages. These two fields study methods to describe formal languages. In 1940 Warren McCulloch and Walter Pits described the human neural system using automata. The mathematician Stephen Kleene described the proposed models with mathematical notation named "regular sets". Later on Ken Thompson implemented the "regular sets" in his text editor named "qed" and later on "ed" which was part of the UNIX distribution. Since then, regular expressions are widely used in almost all UNIX variants in their standards applications such as expr, awk, Emacs etc. Regular expressions belong to grammar type 3 of the Chomsky hierarchy. This hierarchy described by Chomsky in 1956 and provided a categorization for grammars that described formal languages. The development of Java platform began in 1991 from Bill Jony, Andy Bechtolsheim, Wayne Rosing, Mike Sheridan, James Gosling and Patrick Naughton. It was formally introduced to the development community in Java is now one of the three most popular programming languages (The other two are C and C++). Since JDK 1.x a lot of implementations of regular expressions variants began to show up. All implementations followed the POSIX standard, except Jakarta ORO which followed the Perl extensions (PCRE). In 2002 SUn microsystems began to distribute a regular expressions engine as part of the standard development kit (J2SDK, J2EE). Our compiler named F.i.r.e. (Fast Implementation of regular expressions) is a regular expression engine. It conceptual design was made in mind with the following principles: 1. Execution Speed and Faster Search 13

15 2. 100% compatibility with SUN regular expression engine 3. DFA engine type 4. Hybrid implementation (DFA capabilities with NFA-like features like grouping parentheses etc.) % Java implementation The F.i.r.e. compiler has modular design. It has two basic module types: 1. Regular expression to DFA modules (F.i.r.e.-DFA) 2. DFA to bytecode (F.i.r.e.-WRITER) F.i.r.e.-DFA modules are being used to parse a regular expression and create a automato. F.i.r.e.-WRITER uses the produced automato as input and compiles it to bytecode. As aforementioned, F.i.r.e. designed mainly with compatibility and execution speed in mind. In order to check the compatiblity we run a compatibility test with a standard set of regular expressions designed specifically to test such engines. To test execution speed we tested F.i.r.e. with two other (the fastest engines in Java) regular expression engine. These are the SUN regular expression engine and Automaton. 14

16 Κεφάλαιο 1 Εισαγωγή "And so it begins." Kosh (to Sinclair), "Chrysalis" 1.1 Οριοθέτηση της εργασίας Οι κανονικές εκφράσεις είναι ένα πάρα πολύ δυνατό εργαλείο για τον χει- ϱισµό δεδοµένων. Τα τελευταία χρόνια γνωρίζουν µεγάλη αναγνώριση και πλέον αποτελούν αναπόσπαστο µέρος πολλών γλωσσών προγραµµατισµού (Perl, Java, VB.NET, C#, PHP, Python κ.ο.κ) και εφαρµογών (Emacs, vi). Οι κανονικές εκφράσεις αναπτύσσονται αρκετές δεκαετίες. Εµφανίστηκαν στο λειτουργικό σύστηµα UNIX ως λειτουργικό κοµµάτι αρκετών εφαρµογών. Σύντοµα έτυχαν µεγάλης αποδοχής, µε αποτέλεσµα να γραφούν µηχανές κανονικών εκφράσεων σε σχεδόν όλα τα λειτουργικά συστήµατα που υπάρχουν. Ανήκουν σε µια πλειάδα επιστηµονικών περιοχών. Η επιστηµονική περιοχή στην οποία ανήκουν είναι τα ιακριτά Μαθηµατικά. Κανείς όµως δεν µπορεί να αµφισβητήσει την σηµασία και την ανάπτυξη που έτυχαν λόγω των µεταγλωττιστών (Compilers). Παρόλο που το υπόβαθρο τους είναι καθαρά ϑεωρητικό, κανείς δεν µπο- ϱεί να αγνοήσει την πρακτική τους σηµασία. Ο Thompson το 1968 ανέφερε πρώτος την µεταγλώττιση των κανονικών εκφράσεων σε κώδικα µηχανής για την αναγνώριση κειµένου [Tho68]. Η ανάπτυξη τους συνεχίζεται ακόµα και τώρα, καθώς συνεχώς προτείνονται τρόποι επέκτασης της γραµµατικής τους ώστε να γίνουν πιο ευέλικτες και αποδοτικές [CC97]. 15

17 1.2 Στόχοι Η παρούσα εργασία αποτελεί την συνέχεια εργασίας εξαµήνου στο µάθηµα Ηλεκτρονικό εµπόριο, στα πλαίσια του MSc στα πληροφοριακά συστήµατα του τµήµατος πληροφορικής το ακαδηµαϊκό έτος [ge03]. Η εργασία είχε τίτλο Μεταγλωττιστής κανονικών εκφράσεων σε Java", και είχε ως στόχο να αποδείξει αν µπορούσε να υλοποιηθεί µηχανή κανονικών εκ- ϕράσεων σε Java που ϑα είχε καλύτερες επιδόσεις από τις ήδη υπάρχουσες, χρησιµοποιώντας ειδικές τεχνικές της πλατφόρµας Java. Στα πλαίσια της εργασίας υλοποιήθηκε µια πρότυπη µηχανή κανονικών εκ- ϕράσεων (fregex - Fast REGular EXpressions). Οι επιδόσεις της µηχανής κρίθηκαν ικανοποιητικές και δικαιολογούσαν την περαιτέρω έρευνα σε επίπεδο πτυχιακής εργασίας. Ο στόχος της εργασίας αυτής είναι η υλοποίηση µιας µηχανής κανονικών εκφράσεων που ουσιαστικά ϑα µεταγλωττίζει την δοσµένη έκφραση σε γλώσσα µηχανής της πλατφόρµας της Java. Επίσης στους στόχους της εργασίας είναι και η σύγκριση µε τις υπάρχουσες υλοποιήσεις ώστε να εξαχθούν συµπεράσµατα για το εγχείρηµα. 1.3 Περίγραµµα εργασίας Στο δεύτερο κεφάλαιο αναλύεται η ϑεωρητική πλευρά των κανονικών εκ- ϕράσεων. Χωρίζεται σε δύο µέρη, στο πρώτο γίνεται µια προσπάθεια ορισµού των κανονικών εκφράσεων και κατάταξη τους στις τυπικές γλώσσες. Στο δεύτε- ϱο µέρος του κεφαλαίου αναπτύσσονται µέθοδοι επεξεργασίας των κανονικών εκφράσεων. Το κεφάλαιο τρία αναφέρεται στην γλώσσα προγραµµατισµού Java. Πιο συγκεκριµένα προσπαθεί να αναλύσει σε ϐάθος την αρχιτεκτονική της πλατ- ϕόρµας που προτείνει η Java και να εξηγήσει τον τρόπο λειτουργίας της. Οπως είναι ϕυσικό η εργασία αυτή δεν είναι η πρώτη που ασχολείται µε τις µηχανές κανονικών εκφράσεων σε Java. Στο κεφάλαιο τέσσερα γίνεται µια ανασκόπηση των µηχανών κανονικών εκφράσεων που έχουν αναπτυχθεί έως τώρα για την πλατφόρµα της Java. Στο κεφάλαιο πέντε παρατίθεται η αρχιτεκτονική της µηχανής κανονικών εκφράσεων F.i.r.e. (Fast Implementation of Regular Expressions). Στο κε- 16

18 ϕάλαιο αυτό γίνεται µια προσπάθεια να γίνει κατανοητή η ϕιλοσοφία µε ϐάση την οποία υλοποιήθηκε η µηχανή F.i.r.e. Το κεφάλαιο έξι αναφέρονται ϑέµατα που προέκυψαν κατά την υλοποίηση της µηχανής κανονικών εκφράσεων F.i.r.e. Στο κεφάλαιο επτά αναφέρεται σε ϑέµατα επιδόσεων των µηχανών κανονικών εκφράσεων. Επίσης παρουσιάζεται η πλατφόρµα δοκιµής επιδόσεων που αναπτύχθηκε για να δοκιµαστεί σε πληρότητα η µηχανή F.i.r.e. Στο κεφάλαιο οκτώ συνοψίζονται τα ϑέµατα που αναπτύχθηκαν στα προηγούµενα κεφάλαια και αναφέρονται κάποια συµπεράσµατα. Επίσης αναφέ- ϱονται τοµείς πιθανής ϐελτίωσης της µηχανής F.i.r.e. καθώς και ϑέµατα για µελλοντική ενασχόληση. 1.4 Μέθοδος γραφής της εργασίας Για την γραφή του παρόντος παραδοτέου χρησιµοποιήθηκε LaTEX. Πιο συγκεκριµένα χρησιµοποιήθηκαν οι διανοµές για Microsoft Windows (MiKTeXe-TeX (2.1) (MiKTeX 2.4)) και Linux (TEX, Version (Web2C 7.4.5). Η γραµµατοσειρά που χρησιµοποιήθηκε είναι η kerkis [ST03]. Για την αυτοµατοποίηση των διαδικασιών µεταγλώττισης χρησιµοποιήθηκε το make και η Perl. Η οργάνωση της ϐιβλιογραφίας έγινε µε την ϐοήθεια του bibtex. Για τα σχήµατα χρησιµοποιήθηκε το xfig, ενώ για την δηµιουργία των αυτοµάτων και γράφων το Graphviz. Τα διαγράµµατα κλάσης UML έγιναν µε την χρήση του UMLGraph [Spi03]. 17

19 Κεφάλαιο 2 Κανονικές Εκφράσεις "I am a scientist. Nothing shocks me." Indiana Jones, Indiana Jones and the temple of doom 2.1 Ορισµοί Ιστορική αναδροµή Η καταγωγή των κανονικών εκφράσεων ϐρίσκεται στην ϑεωρία αυτοµάτων και τυπικών γλωσσών. Αυτά τα δύο πεδία µελετούν υπολογιστικές µεθόδους και τρόπους για να περιγραφούν οι τυπικές γλώσσες. Το 1940 ο Warren McCulloch και ο Walter Pits περιέγραψαν το νευρικό σύστηµα µοντελοποιόντας το µε την χρήση αυτοµάτων. Ο µαθηµατικός Stephen Kleene περιέγραψε τα µοντέλα αυτά χρησιµοποιώντας µαθηµατικούς συµβολισµούς και τα ονόµασε κανονικά σύνολα (regular sets). Ο Ken Thompson τα υλοποίησε στον κει- µενογράφο του qed και αργότερα στο κειµενογράφο ed ο οποίος αποτελούσε µέρος του UNIX. Από τότε οι κανονικές εκφράσεις χρησιµοποιούνται ευρύτατα σε όλα τα UNIX και στις εφαρµογές τους όπως : expr, awk, Emacs, vim, lex και στην Perl [Enc03c] Ορισµός των κανονικών εκφράσεων Οι κανονικές εκφράσεις ανήκουν στον τύπο γραµµατικής 3 της ιεραρχίας Chomsky (Chomsky hierarchy). Οι ιεραρχίες Chomsky αποτελούν ένα σύνολο από τάξεις τυπικών γραµµατικών (formal grammars). Με ϐάση αυτές δηµιουργούνται οι τυπικές γλώσσες (formal languages). Η ιεραρχία αυτή περιγράφηκε από τον Chomsky το 1956 [Enc03a]. 18

20 Ορισµός τυπικών γραµµατικών Μια τυπική γραµµατική G αποτελείται από τα ακόλουθα συστατικά στοιχεία [Enc03b]: 1. Ενα πεπερασµένο σύνολο Ν από µη- τερµατικά σύµβολα (nonterminal symbols). 2. Ενα πεπερασµένο σύνολο Σ από τερµατικά σύµβολα (terminal symbols) τα οποία δεν ανήκουν στο Ν. 3. Ενα πεπερασµένο σύνολο από κανόνες παραγωγής (production rules) P. Παράδειγµα Ας ϑεωρήσουµε µια γραµµατική G µε N = {S,B}, Σ = {a,b,c} και µε κανόνες παραγωγής 1. S absc 2. S abc 3. Ba ab 4. Bb bb και ϑεωρούµε το σύµβολο S ως σύµβολο εκκίνησης (start symbol). Μερικές από τις συµβολοσείρες που παράγονται είναι : S abc (µε την χρήση του 2 oυ κανόνα) S absc ababcc aabbcc aabbcc (µε την χρήση 2 oυ, 3 oυ και 4 oυ κανόνα). S absc ababscc abababccc aabbabccc aababbccc aaabbbccc aaabbbccc aaabbbccc (µε την χρήση του 2 oυ, 3 oυ και 4 oυ κανόνα). Είναι προφανές ότι οι παραπάνω γραµµατική ορίζει την γλώσσα { a n b n c n n > 0} όπου a n δηλώνει µια συµβολοσειρά από n a s. 19

21 Η ιεραρχία Chomsky Η ιεραρχία Chomsky αποτελεί µια τυποποίηση των τυπικών γραµµατικών οι οποίες δηµιουργούν τυπικές γλώσσες [Cho56]. Η ιεραρχία αποτελείται από τα παρακάτω επίπεδα : Γραµµατικές τύπου-0 (unrestricted grammars): περιλαµβάνουν όλων των τύπων τις τυπικές γραµµατικές. Μπορούν να γεννήσουν ακριβώς όλες τις γλώσσες που αναγνωρίζονται από τις µηχανές Turing. Οι πα- ϱαγόµενες γλώσσες ανήκουν στην κατηγορία των επαναληπτικά αριθ- µήσιµων (recursively enumerable). Γραµµατικές τύπου-1 (context-sensitive grammars): Αυτές οι γραµµατικές κατασκευάζουν γλώσσες ευπαθούς περικειµένου (context-sensitive environments). Οι γλώσσες που προκύπτουν από αυτές τις γραµµατικές µπορούν να αναγνωριστούν από γραµµικά περιορισµένες µη ντετερµινιστικές µηχανές Turing. Γραµµατικές τύπου-2 (context-free grammars): κατασκευάζουν γλώσσες ελεύθερου περιεχοµένου (context-free languages). Αυτές είναι οι γλώσσες που αναγνωρίζονται από µη ντετερµινιστικό pushdown αυτοµάτου (non-deterministic pushdown automaton). Οι παραγόµενες γλώσσες αποτελούν την ϑεωρητική ϐάση του συντακτικού των περισσοτέρων γλωσσών προγραµµατισµού. Γραµµατικές τύπου-3 (regular grammars): κατασκευάζουν τις κανονικές γλώσσες (regular languages). Αυτές οι γλώσσες µπορούν να αναγνωριστούν από ένα ντετερµινιστικό αυτόµατο (finite state automaton). Χρησιµοποιούνται συχνά για να κατασκευάσουν πρότυπα αναζήτησης (search patterns) και την λεκτική δοµή των γλωσσών προγραµµατισµού. Οι παραπάνω κανόνες συνοψίζονται στον πίνακα

22 Γραµµατική Γλώσσα Αυτόµατο Τύπος-0 Επαναληπτικά Μηχανή Turing αριθµίσηµες Τύπος-1 Ευπαθούς περιεχο- Γραµµικά περιορισµένες µη µένου ντετερµινιστικές µηχανές Turing Τύπος-2 Ελεύθερου περιεχοµένου Μη ντετερµινιστικό pushdown αυτόµατο Τύπος-3 Κανονικές γλώσσες Ντετερµινιστικό αυτόµατο Πίνακας 2.1: Η ιεραρχία Chomsky Κανονικές εκφράσεις Οι κανονικές εκφράσεις αποτελούνται από σταθερές (constants) και τελεστές (operators) που δηλώνουν µια σειρά παραγόµενων συµβολοσειρών (Strings) και πράξεις πάνω σε αυτές [CC97]. οσµένου ενός πεπερασµένου αλφάβητου (finite alhpabet) µπορούν να οριστούν οι παρακάτω σταθερές : 1. Κενό σύνολο (empty set), δηλώνοντας το σύνολο 2. Κενή συµβολοσειρά (empty Strings), ε δηλώνοντας το σύνολο {ε} 3. Χαρακτήρας α, α οριζόµενος στο Σ δηλώνοντας το σύνολο { α } και οι ακόλουθες πράξεις : 1. Σύνθεση (concatenation), RS δηλώνοντας το σύνολο {α β µε το α R και το β S}. 2. Ενωση (set union), R S δηλώνοντας την ένωση των R και S. 3. Αστέρι Kleene (Kleene Star), R* δηλώνει το σύνολο όλων των συµβολοσειρών που προκύπτουν µε σύνθεση µηδέν ή παραπάνω συµβολοσειρών που ανήκουν στο R Συντακτικό κανονικών εκφράσεων Με την πάροδο του χρόνου αναπτύχθηκαν διάφορα σύνολα συντακτικών κανόνων που επέκτειναν τους ϑεωρητικούς ορισµούς Τα επικρατέστερα από αυτά είναι τα οι παραδοσιακές κανονικές εκφράσεις του UNIX (Traditional UNIX regular expressions), οι µοντέρνες κανονικές εκφράσεις του προτύπου POSIX 21

23 Εκφραση Ταιριάζει Παράδειγµα c Οποιοσδήποτε χαρακτήρας c a "s" Αλφαριθµητικό s "**". Οποιοσδήποτε χαρακτήρας εκτός του newline a.*b ˆ Αρχή γραµµής ˆabc $ Τέλος γραµµής abc$ [s] Οποιοσδήποτε χαρακτήρας στο s [abc] [ˆs] Οποιοσδήποτε χαρακτήρας εκτός s [ˆabc] r* Μηδέν ή παραπάνω από r a* r+ Ενα ή παραπάνω από r a+ r? Μηδέν ή ένα από r a? r{m,n} Από m έως n εµφανίσεις του r a{1,5} r 1 r 2 r 1 ακολουθώντας το r 2 ab r 1 r 2 r 1 ή r 2 a b (r) r (a b) r 1 /r 2 r 1 ακολουθούµενο από το r 2 abc/123 Πίνακας 2.2: Συντακτικοί κανόνες κανονικών εκφράσεων (POSIX modern regular expressions) και οι επεκτάσεις της Perl (Perl Compatible Regular Expressions (PCRE). Μια σύνοψη των συντακτικών κανόνων ϐρίσκεται στον πίνακα 2.2. Στην συνέχεια ϑα αναλύσουµε τα προαναφερό- µενα είδη συντακτικών κανόνων. Παραδοσιακές κανονικές εκφράσεις του UNIX (Traditional UNIX regular expressions) Το ϐασικό συντακτικό των κανονικών εκφράσεων που χρησιµοποιείται στο UNIX έχει αντικατασταθεί πλέον από το αντίστοιχο του POSIX (το οποίο αποτελεί επέκταση του). Παρόλα αυτά µερικές εφαρµογές χρησιµοποιούν ακόµα αυτό το συντακτικό (sed, grep κτλ). Σε αυτό το συντακτικό οι πιο πολλοί χαρακτήρες ταιριάζουν µόνο µε τον ευατό τους (π.χ. α ταιριάζει µόνο µε το "α" κ.ο.κ.). Υπάρχουν και µερικοί χαρακτήρες για τις εξαιρέσεις. Αυτοί είναι οι παρακάτω (ϐλ. πίνακα 2.2):. [] [ˆ] ˆ \(\) * {x,y} Στο παραδοσιακό σύνολο συντακτικών κανόνων δεν υπάρχει τελεστής για ένωση. 22

24 Μοντέρνες κανονικές εκφράσεις του προτύπου POSIX (POSIX modern regular expressions) Οι κανονικές εκφράσεις του προτύπου POSIX έχουν παρόµοιο συντακτικό µε τις αντίστοιχες που ορίστηκαν αρχικά µε την εµφάνιση του UNIX. Στην πράξη ισχύουν όλοι οι παραπάνω τελεστές µε την προσθήκη κάποιων επιπλέον. Αυτοί είναι (ϐλ. πίνακα 2.2): +? Είναι σηµαντικό να αναφέρουµε ότι ορίζεται πλέον η ένωση µε τον τελεστή ι. Εκτός όµως από καινούργιους τελεστές ορίζονται και κατηγορίες χαρακτήρων ώστε να απλοποιηθεί το συντακτικό των κανονικών εκφράσεων. Αυτές οι κατηγορίες στην πράξη χρησιµεύουν στο να είναι δυνατή η γραφή γενικού τύπου κανονικών εκφράσεων που να έχουν υπόσταση σε άλλες γλώσσες π.χ. στα αγγλικά όλοι οι κεφαλαίοι χαρακτήρες ορίζονται ως [A-Z] ενώ στα ελληνικά ως [Α-Ω], αυτό και στις δύο περιπτώσεις στο POSIX απεικονίζεται ως [:upper:]. Στον πίνακα 2.3 απεικονίζονται όλες οι διαθέσιµες κλάσεις (µε τις αντίστοιχες κανονικές εκφράσεις για την αγγλική γλώσσα). Κλάση Κανονική έκφραση [:alnum:] [a-za-z0-9] [:cntrl:] [\x00-\x1f\x7f] [:lower:] [a-z] [:space:] [ \t\n\x0b\f\r] [:alpha:] [a-za-z] [:digit:] [0-9] [:print:] [a-za-z0-9!"#$%& { } ] [:upper:] [A-Z] [:blank:] [ \t] [:graph:] [a-za-z0-9!"#$%& { } ] [:punct:] [!"#$%& { } ] [:xdigit:] [0-9a-fA-F] Πίνακας 2.3: Κλάσεις χαρακτήρων του POSIX Το πρότυπο του POSIX για τις κανονικές εκφράσεις ϐρίσκεται πλήρες στο κεφάλαιο 9 του The Single UNIX Specification, Version 3 [IG03]. Για λόγους πληρότητας η γραµµατική που ορίζεται στο POSIX παρατίθεται στο παράρτηµα Α. 23

25 Επεκτάσεις της Perl για τις κανονικές εκφράσεις (Perl Compatible Regular Expressions - PCRE) Η Perl είναι µια πολύ διαδεδοµένη γλώσσα στα UNIX λειτουργικά συστήµατα, καθώς και στο προγραµµατισµό δυναµικών ιστοσελίδων στο διαδίκτυο [WCO00]. Προτείνει µια επέκταση για το συντακτικό των κανονικών εκ- ϕράσεων, ώστε να γίνει δυνατή και η ενεργοποίηση εντολών ταιριάσµατος (matching), αντικατάστασης (substitution) και αντικατάστασης µε ξένο αλ- ϕάβητο (transliteration). Ο καινούριος τρόπος σύνταξης που προτείνει είναι της µορφής {τρόπος χρήσης}/{έκφραση}/{έκφραση}/{διαφοροποιητές}. Η προσπάθεια αυτή επέκτασης του συντακτικού των κανονικών εκφράσεων δεν είναι ευρέως διαδεδοµένη, οπότε ως αποδεκτό πρότυπο ϑεωρείται το αντίστοιχο του POSIX. Ταίριασµα (Matching m//) Ερευνά για την ύπαρξή δοσµένης έκφρασής σε δεδοµένα και συντάσσεται µε τους ακόλουθους (ισοδύναµους) τρόπους. m/έκφραση/cgimosx /έκφραση/cgismosx?έκφραση?cgismosx Οι διαφοροποιητές (modifiers) αναλύονται στον πίνακα 2.4. Ακολουθεί πα- ϱάδειγµα χρήσης (απόσπασµα Perl κώδικα): # search for baggins in $shire if($shire = m/baggins/) {... } Αντικατάσταση (Substitution s///) Ο τελεστής s/// αντικαθιστά τους χαρακτήρες που ταιριάζουν µε την δοθείσα έκφραση µε την συµβολοσειρά. Συντάσσεται µε τους ακόλουθο τρόπο : s/έκφραση/συµβολοσειρά αντικατάστασης/egimosx Ολοι οι διαφοροποιητές (εκτός του /e) έχουν ακριβώς την ίδια χρήση µε τους αντίστοιχους του τελεστή m// (ϐλ. πίνακα 2.4). Ο διαφοροποιητής /e επιτρέπει στην συµβολοσειρά αντικατάστασης να µεταγλωττιστεί πριν αντικαταστα- ϑεί (οπότε είναι δυνατή η γραφή κώδικα Perl για δυναµική αντικατάσταση). Ακολουθεί παράδειγµα χρήσης (σε γλώσσα προγραµµατισµού Perl): 24

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Η εξέλιξη των γλωσσών προγραμματισμού Η εξέλιξη των γλωσσών προγραμματισμού είναι μια διαδικασία αφαίρεσης Στην αρχή ένα πρόγραμμα ήταν μια

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

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi ee.duth.

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth. Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος

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

Γλώσσες που περιγράφονται από Κανονικές Εκφράσεις

Γλώσσες που περιγράφονται από Κανονικές Εκφράσεις Κανονικές Εκφράσεις Στοιχειώδεις Κανονικές Εκφράσεις Κανονικές Εκφράσεις Γλώσσες που περιγράφονται από Κανονικές Εκφράσεις ηµιουργία Κανονικών Εκφράσεων Παραδείγµατα Κανονικών Εκφράσεων Τις Κανονικές εκφράσεις

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

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2): Αυτόµατα Στοίβας. Παραδείγµατα Σχεδιασµού CFG. Παράδειγµα 1.

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2): Αυτόµατα Στοίβας. Παραδείγµατα Σχεδιασµού CFG. Παράδειγµα 1. Σύνοψη Προηγούµενου Γλώσσες χωρίς Συµφραζόµενα 2): Αυτόµατα Στοίβας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Μη Κανονικές Γλώσσες Το Λήµµα της Αντλησης για τις

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?

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

ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming)

ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming) ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming) Πληροφορίες Μαθήματος Διαλέξεις Δευτέρα, Πέμπτη 10:30-12:00 Κτήριο ΘΕΕ01, Αίθουσα 202 Εργαστήριο Τετάρτη 10:30-12:00, Κτήριο ΘΕΕ01,

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

1. Ξεκινώντας. 1.1 Τι είναι η Java. PDF created with FinePrint pdffactory Pro trial version

1. Ξεκινώντας. 1.1 Τι είναι η Java. PDF created with FinePrint pdffactory Pro trial version 1. Ξεκινώντας Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να περιγράψετε τα κύρια χαρακτηριστικά της γλώσσας Java Να περιγράψετε τη Java Virtual Machine Να περιγράψετε πώς λειτουργεί ο μηχανισμός «συλλογής

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

Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

FSM Toolkit Exercises

FSM Toolkit Exercises ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ Τμήμα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Τομέας Τηλεπικοινωνιών Αναπληρωτής Καθηγητής: Αλέξανδρος Ποταμιάνος Ονοματεπώνυμο: Α Μ : ΗΜΕΡΟΜΗΝΙΑ: ΤΗΛ 413 : Συστήματα Επικοινωνίας

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

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Θεωρία Υπολογισµού 1 /

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

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί);

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί); Μοντελοποίηση του Υπολογισµού Στοιχεία Θεωρίας Υπολογισµού (): Τυπικές Γλώσσες, Γραµµατικές Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ποιές οι θεµελιώδεις δυνατότητες

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

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις Προγραµµατισµός Η/Υ Ανασκόπηση - Ορισµοί Περιεχόµενα Ο κύκλος ανάπτυξης προγράµµατος Περιγραφή προβλήµατος Ανάλυση προβλήµατος Λογικό ιάγραµµα Ψευδοκώδικας Κωδικοποίηση Συντήρηση Γλώσσες Προγραµµατισµού

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 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. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

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

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 7.1. Ανάπτυξη Προγράµµατος Τι είναι το Πρόγραµµα; Το Πρόγραµµα: Είναι ένα σύνολο εντολών για την εκτέλεση ορισµένων λειτουργιών από τον υπολογιστή.

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 1ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Ορισμός Wikipedia.org 2 Δομημένος προγραμματισμός (structured programming) ή διαδικαστικός προγραμματισμός (procedural

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

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μεταγλωττιστές Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανοδική Κατασκευή Συντακτικού Δέντρου κατασκευή δέντρου

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C Τµήµα Πληροφορικής και Τηλεπικοινωνιών Περιεχόµενα Εισαγωγή Πρόγραµµα Φάσεις Υλοποίησης µε χρήση του εργαλείου DEV C + + οµή Προγράµµατος Η συνάρτηση main Μεταβλητές Τι είναι

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Αν κάπου κάνετε κάποιες υποθέσεις να αναφερθούν στη σχετική ερώτηση. Όλα τα αρχεία που αναφέρονται στα προβλήματα βρίσκονται στον ίδιο φάκελο με το εκτελέσιμο

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

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6 Εισαγωγή στην Επιστήμη των Υπολογιστών 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές http://www.corelab.ece.ntua.gr/courses/ Αυτόματα Τρόπος κωδικοποίησης αλγορίθμων. Τρόπος περιγραφής συστημάτων πεπερασμένων

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

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Διαφορές Java και C++ ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΙΑΦΟΡΕΣ JAVA C++ Η

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

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν

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

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1 HelloWorld Παύλος Εφραιμίδης Java Το πρόγραμμα HelloWorld 1 Το πρόγραμμα HelloWorld.java Σχόλια στη Java /** * The HelloWorld class */ class HelloWorld { public static void main(string[] args) { System.out.println("Hello

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

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (3) Παραδείγµατα µε Κανονικές Εκφράσεις. Σε αυτό το µάθηµα.

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (3) Παραδείγµατα µε Κανονικές Εκφράσεις. Σε αυτό το µάθηµα. Σύνοψη Προηγούµενου Κανονικές Γλώσσες (3) Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς (Ντετερµινιστική) Κλειστότητα Κανονικών Γλωσσών ως προς Ενωση. Κατασκευή: DFA

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 2 ο Αλφάβητα και Γλώσσες Αλφάβητο: Ένα μη κενό και πεπερασμένο σύνολο συμβόλων Γλώσσα: Ένα οποιοδήποτε υποσύνολο των συμβολοσειρών ενός αλφαβήτου (οι προτάσεις της γλώσσας, πχ.

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

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 1.3-1.4: Εισαγωγή Στον Προγραµµατισµό ( ιάλεξη 2) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγικές Έννοιες - Ορισµοί Ο κύκλος ανάπτυξης προγράµµατος Παραδείγµατα Πότε χρησιµοποιούµε υπολογιστή?

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

Ε-85: Ειδικά Θέµατα Λογισµικού

Ε-85: Ειδικά Θέµατα Λογισµικού Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «ιεργασίες και Νήµατα» Παναγιώτης Χατζηδούκας (Π.Δ. 407/80) E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων

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

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

Επιµέλεια Θοδωρής Πιερράτος Εισαγωγή στον προγραµµατισµό Η έννοια του προγράµµατος Ο προγραµµατισµός ασχολείται µε τη δηµιουργία του προγράµµατος, δηλαδή του συνόλου εντολών που πρέπει να δοθούν στον υπολογιστή ώστε να υλοποιηθεί

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

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

8. Μέθοδοι (Methods)

8. Μέθοδοι (Methods) 8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και

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

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1 ΚΕΦΑΛΑΙΟ 7 ο ΠΡΟΓΡΑΜΜΑ : Το πρόγραμμα αποτελείται από μια σειρά οδηγιών, που ονομάζονται εντολές, για την εκτέλεση τέτοιου είδους πράξεων, καθώς επίσης και από ένα σύνολο πρόσθετων οδηγιών ελέγχου, που

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

Ενότητα 3 1 Compiler Lecture Notes 1.0 documentation

Ενότητα 3 1 Compiler Lecture Notes 1.0 documentation Ενότητα 3 1 Compiler Lecture s 1.0 documentation Ενότητα 3-1 Regular expressions Regular expressions ( κανονικές εκφράσεις ) είναι ένα ισχυρό εργαλείο που προέρχεται από τη θεωρία των τυπικών γλωσσών (formal

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

(Διαφάνειες Νίκου Βιδάκη)

(Διαφάνειες Νίκου Βιδάκη) (Διαφάνειες Νίκου Βιδάκη) JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο? Ανάλυση αντικειμένων Πραγματικά αντικείμενα Καταστάσεις Συμπεριφορές Αντικείμενα στον προγραμματισμό

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

Αρχικοποίηση Αντικειµένων & Κλάσεων στη Java Object Instantiation & Class Initialisation Κώστας Σαΐδης saiko@di.uoa.gr http://daemon.di.uoa.gr/daemon/issue4 Μάρτιος 2004 Η Αρχή είναι το ήµισυ του Παντός

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

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Ποιες γλώσσες αναφέρονται ως φυσικές και ποιες ως τεχνητές; Ως φυσικές γλώσσες αναφέρονται εκείνες οι οποίες χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων,

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Ολοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα είναι μικρότεροι το 1000 εκτός αν ορίζεται διαφορετικά στη διατύπωση του προβλήματος. Διάρκεια: 3,5 ώρες Καλή

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE) Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE) NetBeans, Πρώτα παραδείγματα ανάπτυξης Java εφαρμογών Γαβαλάς Δαμιανός dgavalas@aegean.gr Στόχοι

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

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

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών 4ο εξάμηνοσhmμy 6η ενότητα: Αυτόματα, τυπικές γλώσσες, γραμματικές Επιμέλεια διαφανειών: Στάθης Ζάχος, Άρης Παγουρτζής http://www.corelab.ece.ntua.gr/courses/introcs

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE) Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE) NetBeans, Πρώτα παραδείγματα ανάπτυξης Java εφαρμογών Στόχοι εργαστηρίου Εξοικείωση με τις βασικές

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 3 Java Classes Java Objects

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αυτόματα Στοίβας (2.2) Τυπικός Ορισμός Παραδείγματα Ισοδυναμία με Ασυμφραστικές

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

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

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

HY340, 2009 Α. Σαββίδης Slide 2 / 26. HY340, 2009 Α. Σαββίδης Slide 3 / 26. HY340, 2009 Α. Σαββίδης Slide 4 / 26

HY340, 2009 Α. Σαββίδης Slide 2 / 26. HY340, 2009 Α. Σαββίδης Slide 3 / 26. HY340, 2009 Α. Σαββίδης Slide 4 / 26 HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 1ο Εισαγωγή στο FLEX ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης Slide

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

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4)

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4) HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 1ο Εισαγωγή στο FLEX Ι ΑΣΚΩΝ Αντώνιος Σαββίδης Slide

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

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΣΥΝΤΑΞΗ: ΟΡΘΟΛΟΓΙΚΗ ΠΡΟΣΕΓΓΙΣΗ (FORMAL SYNTAX)

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΣΥΝΤΑΞΗ: ΟΡΘΟΛΟΓΙΚΗ ΠΡΟΣΕΓΓΙΣΗ (FORMAL SYNTAX) ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΣΥΝΤΑΞΗ: ΟΡΘΟΛΟΓΙΚΗ ΠΡΟΣΕΓΓΙΣΗ (FORMAL SYNTAX) Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά

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

JAVA TUTORIAL ΠΕΡΙΕΧΟΜΕΝΑ. ΚΕΦΑΛΑΙΟ 1. Τί κάνει τη Java να ξεχωρίζει; Εγκαθιστώντας τη Java

JAVA TUTORIAL ΠΕΡΙΕΧΟΜΕΝΑ. ΚΕΦΑΛΑΙΟ 1. Τί κάνει τη Java να ξεχωρίζει; Εγκαθιστώντας τη Java JAVA TUTORIAL Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Εργαστήριο Παράλληλης Κατανεμημένης Επεξεργασίας ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1. Τί κάνει τη Java να ξεχωρίζει; Εγκαθιστώντας τη Java ΚΕΦΑΛΑΙΟ

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

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ 1 Αριθµητικό Σύστηµα! Ορίζει τον τρόπο αναπαράστασης ενός αριθµού µε διακεκριµένα σύµβολα! Ένας αριθµός αναπαρίσταται διαφορετικά σε κάθε σύστηµα,

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

FROM TESTOTA.REGISTRY

FROM TESTOTA.REGISTRY ΟΤΑ Επιχειρησιακή Νοηµοσύνη Ενότητα: Βc1.1.3 Επιχειρησιακή Νοηµοσύνη και Τεχνολογίες της Πληροφορικής και των Επικοινωνιών (BI & IT) Πρακτική Άσκηση (επίπεδο 1): Στόχος της άσκησης είναι η εµβάθυνση στην

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

Κανονικές Γλώσσες. ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011 Διάρκεια Διαγωνισμού: 3 ώρες Απαντήστε όλες τις ερωτήσεις Μέγιστο Βάρος (20 Μονάδες) Δίνεται ένα σύνολο από N σφαιρίδια τα οποία δεν έχουν όλα το ίδιο βάρος μεταξύ τους και ένα κουτί που αντέχει μέχρι

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

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

(C) 2010 Pearson Education, Inc. All rights reserved.

(C) 2010 Pearson Education, Inc. All rights reserved. Connectionless transmission with datagrams. Connection-oriented transmission is like the telephone system You dial and are given a connection to the telephone of fthe person with whom you wish to communicate.

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

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Αναδροµή Σύντοµη Αναδροµή Η γλώσσα προγραµµατισµού C είναι µία γλώσσα

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006 ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/26 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Ολοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα μικρότεροι το 1 εκτός αν ορίζεται διαφορετικά στη διατύπωση

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

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων 2.1 Αρχιτεκτονική Υπολογιστών 2.1 Αρχιτεκτονική Υπολογιστών 2.2 Γλώσσα Μηχανής 2.3 Εκτέλεση προγράµµατος 2.4 Αριθµητικές και λογικές εντολές 2.5 Επικοινωνία µε άλλες συσκευές

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΑ 3 και 9 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΕΣ Δεδομένα αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της δηλαδή.

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

Προγραμματισμός Υπολογιστών

Προγραμματισμός Υπολογιστών Προγραμματισμός Υπολογιστών Βασικές γνώσεις Κ. Βασιλάκης, ΣΤΕΦ, ΤΕΙ Κρήτης Η Πληροφορική και τα εργαλεία της Παροχή έγκαιρης και έγκυρης πληροφόρησης. Καταχώριση στοιχείων Αποθήκευση Επεξεργασία ψηφιακών

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

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Τ.Ε.Ι ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ & ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Πτυχιακή εργασία του φοιτητή Γιαννακίδη Αποστόλη Επιβλέπων καθηγητής Τσούλος

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (2)

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (2) Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (2) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Κανονικές Εκφράσεις (1.3) Τυπικός Ορισμός Ισοδυναμία με κανονικές γλώσσες Μη Κανονικές

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Δοκιμή Έλεγχος Αλγορίθμου Για να

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

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών. Προδιαγραφές

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών. Προδιαγραφές Εισαγωγή στην Επιστήμη των Υπολογιστών 4ο εξάμηνοσ.h.m.μ.y. & Σ.Ε.Μ.Φ.Ε. http://www.corelab.ece.ntua.gr/courses/ 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές Στάθης Ζάχος Συνεργασία: Κωστής Σαγώνας Επιμέλεια:

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

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία ΑΝΑΠΤΥΞΗ ΕΙΚΟΝΙΚΗΣ ΠΛΑΤΦΟΡΜΑΣ ΠΡΟΣΟΜΟΙΩΣΗΣ ΤΗΣ ΠΑΡΑΜΟΡΦΩΣΗΣ ΑΝΘΡΩΠΙΝΟΥ ΗΠΑΤΟΣ ΜΕ ΤΗ ΧΡΗΣΗ ΑΠΤΙΚΟΥ ΜΕΣΟΥ Δηµήτρης Δούνας

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

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

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 3: Βασικά στοιχεία της γλώσσας προγραμματισμού Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Ενότητα 1: Εισαγωγή Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται

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

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή ΚΕΦΑΛΑΙΟ 2 Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές Σύνοψη Το κεφάλαιο αυτό εισάγει τον αναγνώστη σε βασικές έννοιες που είναι χρήσιμες για την απόκτηση μιας πρώτης εμπειρίας με την Python. Προαπαιτούμενη

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

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση: Χειρισµός Σφαλµάτων Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Έκδοση: 2010.12.06 Σφάλµατα, Σφάλµατα, Σφάλµατα 2 εν υπάρχουν προγράµµατα χωρίς λογικά λάθη Υλοποίηση που

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

ΑΕΠΠ Ερωτήσεις θεωρίας

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

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

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων

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

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού»

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού» ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραµµατισµού 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας 1 6.1 Γενιές γλωσσών προγραµµατισµού 2 Δεύτερη γενιά: γλώσσα assembly Ένα µνηµονικό σύστηµα για την αναπαράσταση προγραµµάτων

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

Διάλεξη 1: Αντικειμενοστρεφής Προγραμματισμός -Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 1: Αντικειμενοστρεφής Προγραμματισμός -Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 1: Αντικειμενοστρεφής Προγραμματισμός -Εισαγωγή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Γλώσσες Προγραμματισμού - Μεταγλώττιση και Διερμηνεία -Η πλατφόρμα

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

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata Σύνοψη Προηγούµενου Γλώσσες χωρίς Συµφραζόµενα (2) Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Αυτόµατα Στοίβας Pushdown utomata Ισοδυναµία µε τις Γλώσσες χωρίς Συµφραζόµενα:

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

Πτυχιακή Εργασία ηµιουργία Εκπαιδευτικού Παιχνιδιού σε Tablets Καλλιγάς ηµήτρης Παναγιώτης Α.Μ.: 1195 Επιβλέπων καθηγητής: ρ. Συρµακέσης Σπύρος ΑΝΤΙΡΡΙΟ 2015 Ευχαριστίες Σ αυτό το σηµείο θα ήθελα να

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Ακαδηµαϊκό Έτος 2003-2004, Εαρινό Εξάµηνο ιδάσκων

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

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

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση Αρης Ευθυμίου Ανακοινώσεις! Βαθμοί: 1ης εργαστηριακής άσκησης Βαθμός 0 χωρίς σχόλια δεν έχω πάρει την άσκηση! ελέγξτε μήπως δεν το στέλνετε στο σωστό

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

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία Mεταγλωττιστές 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex Σκοπός: Το μάθημα αυτό αναφέρεται: στις κανονικές εκφράσεις στην δομή και το περιεχόμενο του αρχείου-εισόδου του flex Γενικά Θεωρία Κατά την

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

Python και Android. Νίκος Νοδαράκης. 17 Μαΐου 2010

Python και Android. Νίκος Νοδαράκης. 17 Μαΐου 2010 Python και Python και Νίκος Νοδαράκης 17 Μαΐου 2010 Python και Τι είναι το ; Περιγραφή του Ορισµός Το είναι µια στοίβα λογισµικού για ϕορητές συσκευές που περιλαµβάνει ένα λειτουργικό σύστηµα, middleware

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

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Βασισμένο σε μια εργασία των Καζαρλή, Καλόμοιρου, Μαστοροκώστα, Μπαλουκτσή, Καλαϊτζή, Βαλαή, Πετρίδη Εισαγωγή Η Εξελικτική Υπολογιστική

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

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2011-2012 ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ Ποιος πρέπει να ολοκληρώσει αυτή την εργασία? Φοιτητές έτους >=2 που

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

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ii ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1. Εισαγωγή - Βασικές έννοιες....1 1.1 Εσωτερική παράσταση δεδομένων....2 1.1.1 Παράσταση θέσης....3 1.1.2 Μετατροπές μεταξύ συστημάτων διαφορετικών βάσεων....5 1.1.3 Οι αριθμητικές

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

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview Εργαστήριο Λειτουργικών Συστημάτων Minix Overview Σύνοψη 5ης ιάλεξης Λειτουργικό Σύστημα Minix Οργάνωση του Λειτουργικού Συστήματος Οργάνωση πηγαίου κώδικα Minix recompilation Σύνοψη Μαθήματος Σύνοψη Μαθήματος

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

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

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

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής 1 Ελληνικό Ανοικτό Πανεπιστήµιο Η και ο στην Ενοποιηµένη ιαδικασία ρ. Πάνος Φιτσιλής Περιεχόµενα Γενικές αρχές ανάλυσης και σχεδιασµού Τα βήµατα της ανάλυσης και του σχεδιασµού Συµπεράσµατα 2 3 Η ανάλυση

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

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( ) ΕΙΣΑΓΩΓΗ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Εισαγωγή στη C++ Ιστορικά στοιχεία για τη C/C++ Ένα βασικό πρόγραμμα Μεταγλώττιση ενός προγράμματος Τελευταία ενημέρωση: Σεπτέμβριος 2016

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

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει

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

Ανάπτυξη Plugins για το AgentSheets

Ανάπτυξη Plugins για το AgentSheets Ανάπτυξη Plugins για το AgentSheets Thought Amplifier AgentSheets Ανάπτυξη Plugins AgentSheets 2.5 Συγγραφείς Τεκµηρίωσης: Alexander Repenning και Ronald Sudomo Εξελληνισµός Τεκµηρίωσης: Λίνος Βίγκλας,

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