Περιεχόµενα 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) Συνεχίζοντας

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

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

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

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

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

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

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

Το πρόγραμμα 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 υποστηρίζει

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

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

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

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

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

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

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

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: 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,

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

FSM Toolkit Exercises

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 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 στην

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

FROM TESTOTA.REGISTRY

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραµµατισµός Η/Υ. Μέρος2

Προγραµµατισµός Η/Υ. Μέρος2 Προγραµµατισµός Η/Υ Μέρος2 Περιεχόμενα Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής Αλγόριθμος Ψευδοκώδικας Παραδείγματα Αλγορίθμων Γλώσσες προγραμματισμού 2 Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής

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

6. Εισαγωγή στον προγραµµατισµό

6. Εισαγωγή στον προγραµµατισµό 6. Εισαγωγή στον προγραµµατισµό 6.1 Η έννοια του προγράµµατος. 6.2 Ιστορική αναδροµή. 6.2.1 Γλώσσες µηχανής. ΗΜ04-Θ1Α 1. Ένα πρόγραµµα σε γλώσσα µηχανής είναι µια ακολουθία δυαδικών ψηφίων. 5. Ένα πρόγραµµα

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

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

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στην FORTRAN Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 Fortran FORmula TRANslation: (Μία από τις πρώτες γλώσσες τρίτης γενιάς) Εκδόσεις FORTRAN (1957) FORTRAN II (1958) FORTRAN III

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Βιβλιογραφία "C Προγραμματισμός", Deitel & Deitel, Πέμπτη Έκδοση, Εκδόσεις

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

Κεφάλαιο 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 (); Πρότυπο ( ήλωση) Συνάρτησης (

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

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

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

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

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

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Γλώσσες Προγραμματισμού Μεταγλωττιστές Γλώσσες Προγραμματισμού Μεταγλωττιστές Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Γλώσσες Προγραμματισμού Εισαγωγικά Γλώσσα Μηχανής Γλώσσες υψηλού επιπέδου Μεταγλωττιστές

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

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program)

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program) Μεταφραστές Εισαγωγή (source program) Τελικό πρόγραµµα (object program) Γιώργος Μανής Γλώσσες Είδη Μεταγλωττιστών Αρχική γλώσσα Γλώσσα υλοποίησης Τελική γλώσσα Απλοί µεταγλωττιστές Αντίστροφοι µεταγλωττιστές

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

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

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

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

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1)

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1) Αντικείμενα (Objects) στην Java Αντικείμενα στη Java Παύλος Εφραιμίδης Ένα πρόγραμμα Java κατά την εκτέλεσή του δημιουργεί αντικείμενα τα αντικείμενα αλληλεπιδρούν, στέλνοντας μηνύματα το ένα στο άλλο

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

ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων. Βιβλιογραφία Ενότητας

ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων. Βιβλιογραφία Ενότητας ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Βελτιστοποίηση κώδικα σε επεξεργαστές ΨΕΣ Τµήµα Επιστήµη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήµιο Πελοποννήσου Βιβλιογραφία Ενότητας Kehtarnavaz [2005]: Chapter

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2010 Ι ΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙ ΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Ανάθεση: Πέµπτη 15 Απριλίου 2010, 11:00 (πρωί)

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

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ Python & NLTK: Εισαγωγή Εισαγωγή Γιατί Python? Παρουσίαση NLTK Πηγές και χρήσιμα εργαλεία Φροντιστήριο σε Python Στο φροντιστήριο: Εισαγωγή στην Python Ζητήματα προγραμματισμού για

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

Test Data Management in Practice

Test Data Management in Practice Problems, Concepts, and the Swisscom Test Data Organizer Do you have issues with your legal and compliance department because test environments contain sensitive data outsourcing partners must not see?

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

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

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

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

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

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

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

Ελληνικό Ανοικτό Πανεπιστήµιο Εισαγωγή στη Ενοποιηµένη Προσέγγιση Unified Process (UP) ρ. Πάνος Φιτσιλής

Ελληνικό Ανοικτό Πανεπιστήµιο Εισαγωγή στη Ενοποιηµένη Προσέγγιση Unified Process (UP) ρ. Πάνος Φιτσιλής 1 Ελληνικό Ανοικτό Πανεπιστήµιο Εισαγωγή στη Ενοποιηµένη Προσέγγιση Unified Process (UP) ρ. Πάνος Φιτσιλής 2 Περιεχόµενα Τι είναι η UP Βασικές αρχές µηχανικής λογισµικού Οι βασικές έννοιες της UP Οι τέσσερις

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

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία 1 Ελληνικό Ανοικτό Πανεπιστήµιο Εισαγωγή στην αντικειµενοστρεφή τεχνολογία ρ. Πάνος Φιτσιλής Περιεχόµενα Γιατί µοντελοποιούµε Εισαγωγή στη UML Ένα απλό παράδειγµα 2 Γιατί µοντελοποιούµε; Ησηµασία της µοντελοποίησης

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εισαγωγή Κώστας Στεργίου Τι είναι ο Η/Υ; Ένας ηλεκτρονικός υπολογιστής (Η/Υ) είναι

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

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

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Υλοποίηση στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής 1 Ελληνικό Ανοικτό Πανεπιστήµιο Η Υλοποίηση στην Ενοποιηµένη ιαδικασία ρ. Πάνος Φιτσιλής Περιεχόµενα Πρωτοτυποποίηση Προγραµµατισµός υλοποίησης Ανάπτυξη συστήµατος Μοναδιαίος έλεγχος Ολοκλήρωση 2 3 Η υλοποίηση

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

Σχεδιασµός βασισµένος σε συνιστώσες

Σχεδιασµός βασισµένος σε συνιστώσες Σχεδιασµός βασισµένος σε συνιστώσες 1 Ενδεικτικά περιεχόµενα του κεφαλαίου Ποια είναι τα "άτοµα", από τα οποία κατασκευάζονται οι υπηρεσίες; Πώς οργανώνουµε τις συνιστώσες σε ένα αρµονικό σύνολο; Τι είναι

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

Οι αδελφοί Montgolfier: Ψηφιακή αφήγηση The Montgolfier Βrothers Digital Story (προτείνεται να διδαχθεί στο Unit 4, Lesson 3, Αγγλικά Στ Δημοτικού)

Οι αδελφοί Montgolfier: Ψηφιακή αφήγηση The Montgolfier Βrothers Digital Story (προτείνεται να διδαχθεί στο Unit 4, Lesson 3, Αγγλικά Στ Δημοτικού) Οι αδελφοί Montgolfier: Ψηφιακή αφήγηση The Montgolfier Βrothers Digital Story (προτείνεται να διδαχθεί στο Unit 4, Lesson 3, Αγγλικά Στ Δημοτικού) Προσδοκώμενα αποτελέσματα Περιεχόμενο Ενδεικτικές δραστηριότητες

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

ιαχείριση Πληροφοριών στο ιαδίκτυο

ιαχείριση Πληροφοριών στο ιαδίκτυο ιαχείριση Πληροφοριών στο ιαδίκτυο Εργαστήριο (Φυλλάδιο 8) ΤΕΙ Καβάλας - Σχολή ιοίκησης & Οικονοµίας Τµήµα ιαχείρισης Πληροφοριών ιδάσκων: Μαρδύρης Βασίλειος, ιπλ. Ηλ. Μηχανικός & Μηχ. Υπολογιστών, MSc

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

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

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

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μεταγλωττιστές Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Βιβλιογραφία Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman. Compilers:

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

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

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

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

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07 Ενότητα 4 Εισαγωγή στην Πληροφορική Κεφάλαιο 4Α: Αναπαράσταση πληροφορίας Κεφάλαιο 4Β: Επεξεργαστές που χρησιµοποιούνται σε PCs Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή

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

υαδικό έντρο Αναζήτησης (BSTree)

υαδικό έντρο Αναζήτησης (BSTree) Εργαστήριο 6 υαδικό έντρο Αναζήτησης (BSTree) Εισαγωγή Οι περισσότερες δοµές δεδοµένων, που εξετάσαµε µέχρι τώρα (λίστες, στοίβες, ουρές) ήταν γραµ- µικές (ή δοµές δεδοµένων µιας διάστασης). Στην παράγραφο

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

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου J-GANNO ΓΕΝΙΚΕΥΜΕΝΟ ΠΑΚΕΤΟ ΥΛΟΠΟΙΗΣΗΣ ΤΕΧΝΗΤΩΝ ΝΕΥΡΩΝΙΚΩΝ ΙΚΤΥΩΝ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ JAVA Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β,

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

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

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Λειτουργικό Σύστημα:

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

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

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

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

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

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

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

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Καθηγητής. Γουνόπουλος Άσκηση 1 Σκοπός της εργασίας αυτής είναι η κατανόηση της εσωτερικής λειτουργίας

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

A ΜΕΡΟΣ. 1 program Puppy_Dog; 2 3 begin 4 end. 5 6 { Result of execution 7 8 (There is no output from this program ) 9 10 }

A ΜΕΡΟΣ. 1 program Puppy_Dog; 2 3 begin 4 end. 5 6 { Result of execution 7 8 (There is no output from this program ) 9 10 } A ΜΕΡΟΣ 1 program Puppy_Dog; begin 4 end. 5 6 { Result of execution 7 (There is no output from this program ) 10 } (* Κεφάλαιο - Πρόγραµµα EX0_.pas *) 1 program Kitty_Cat; begin 4 Writeln('This program');

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

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video ιάγραµµα κλάσεων [Class diagram] Εβδοµάδα 2: Υπο-τύποι και πολυµορφισµός [sub-typing and polymorphism] Database Music Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Δημιουργία Νέου αρχείου Από το μενού προγραμμάτων ανοίγετε το DEV C++ Επιλέγετε File-> New-> Source File (συντόμευση πληκτρολογίου Ctrl+N)

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

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

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

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

ΠΑΝΔΠΙΣΗΜΙΟ ΜΑΚΔΓΟΝΙΑ ΠΡΟΓΡΑΜΜΑ ΜΔΣΑΠΣΤΥΙΑΚΧΝ ΠΟΤΓΧΝ ΣΜΗΜΑΣΟ ΔΦΑΡΜΟΜΔΝΗ ΠΛΗΡΟΦΟΡΙΚΗ

ΠΑΝΔΠΙΣΗΜΙΟ ΜΑΚΔΓΟΝΙΑ ΠΡΟΓΡΑΜΜΑ ΜΔΣΑΠΣΤΥΙΑΚΧΝ ΠΟΤΓΧΝ ΣΜΗΜΑΣΟ ΔΦΑΡΜΟΜΔΝΗ ΠΛΗΡΟΦΟΡΙΚΗ ΠΑΝΔΠΙΣΗΜΙΟ ΜΑΚΔΓΟΝΙΑ ΠΡΟΓΡΑΜΜΑ ΜΔΣΑΠΣΤΥΙΑΚΧΝ ΠΟΤΓΧΝ ΣΜΗΜΑΣΟ ΔΦΑΡΜΟΜΔΝΗ ΠΛΗΡΟΦΟΡΙΚΗ ΑΝΑΠΣΤΞΗ ΓΤΝΑΜΙΚΗ ΙΣΟΔΛΙΓΑ ΓΙΑ ΣΟ ΓΔΝΙΚΟ ΚΑΣΑΣΗΜΑ ΚΡΑΣΗΗ ΓΡΔΒΔΝΧΝ ΜΔ ΣΗ ΒΟΗΘΔΙΑ PHP MYSQL Γηπισκαηηθή Δξγαζία ηνπ Υξήζηνπ

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

ιαφάνειες παρουσίασης #1

ιαφάνειες παρουσίασης #1 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

Τo πρόγραμμα «Διάγραμμα Ροής» και η διδακτική του αξιοποίηση στην Διδασκαλία του προγραμματισμού

Τo πρόγραμμα «Διάγραμμα Ροής» και η διδακτική του αξιοποίηση στην Διδασκαλία του προγραμματισμού Τo πρόγραμμα «Διάγραμμα Ροής» και η διδακτική του αξιοποίηση στην Διδασκαλία του προγραμματισμού Α. Βρακόπουλος 1, Θ.Καρτσιώτης 2 1 Καθηγητής Πληροφορικής Δευτεροβάθμιας Εκπαίδευσης Vraa8@sch.gr 2 Σχολικός

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

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

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

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

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

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 6ο Εισαγωγή στον Προγραµµατισµό Μέρος Πρώτο (6.1, 6.2 και 6.3) Α. Ερωτήσεις Σωστού Λάθους 1. Η γλώσσα µηχανής είναι µία γλώσσα υψηλού επιπέδου.

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

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

Μεταφραστής (Compiler)

Μεταφραστής (Compiler) Windows Καθαρισµος οθονης cls Unix clear Τελεστες ανακατευθυνσης > > >> >> < < Εντολες σε αρχεια * * (wild card) del Α rm Α ιαγραφη type Α cat Α Εµφανιση copy Α Β cp Α Β Αντιγραφη ren Α Β mv Α Β Αλλαγη

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

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1 Είσοδος/ Έξοδος Σε σχεδόν όλα τα προγράµµατα πρέπει να πάρουµε κάποια δεδοµένα και να δώσουµε

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

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

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

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

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

Αρχές Τεχνολογίας Λογισμικού Αρχές Τεχνολογίας Λογισμικού Επισκόπηση του μαθήματος 2 Διδάσκοντες ΘΕΩΡΙΑ Νίκος Παπαδάκης ΕΡΓΑΣΤΗΡΙΟ Αϊβαλής Κώστας costis@teicrete.gr Κονδυλάκης Χάρης kondylak@gmail.com 3 Το μάθημα στο πρόγραμμα σπουδών

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003.1 - Επιστήµη της Πληροφορικής και Πληροφοριακά Συστήµατα Ακαδηµαϊκό έτος 2010 2011, Χειµερινό εξάµηνο Τελική Εξέταση: Σάββατο - 04/12/10, Ώρα: 08:30-11:30,

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

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προεπεξεργαστής Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαδικασία Μεταγλώττισης πρόγραµµα επεξεργασίας κειµένου if a

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

3 Αλληλεπίδραση Αντικειμένων

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

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

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

VBA ΣΤΟ WORD. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Version 25-7-2015 ΗΜΙΤΕΛΗΣ!!!!

VBA ΣΤΟ WORD. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Version 25-7-2015 ΗΜΙΤΕΛΗΣ!!!! VBA ΣΤΟ WORD Version 25-7-2015 ΗΜΙΤΕΛΗΣ!!!! Μου παρουσιάστηκαν δύο θέματα. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Εγραφα σε ένα αρχείο του Word τις

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

Right Rear Door. Let's now finish the door hinge saga with the right rear door

Right Rear Door. Let's now finish the door hinge saga with the right rear door Right Rear Door Let's now finish the door hinge saga with the right rear door You may have been already guessed my steps, so there is not much to describe in detail. Old upper one file:///c /Documents

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