Υπεύθυνη ήλωση : Βεβαιώνω ότι είμαι συγγραφέας αυτής της πτυχιακής εργασίας

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

Download "Υπεύθυνη ήλωση : Βεβαιώνω ότι είμαι συγγραφέας αυτής της πτυχιακής εργασίας"

Transcript

1

2 Υπεύθυνη ήλωση : Βεβαιώνω ότι είμαι συγγραφέας αυτής της πτυχιακής εργασίας και ότι κάθε βοήθεια την οποία είχα για την προετοιμασία της, είναι πλήρως αναγνωρισμένη και αναφέρεται στην πτυχιακή εργασία. Επίσης έχω αναφέρει τις όποιες πηγές από τις οποίες έκανα χρήση δεδομένων, ιδεών ή λέξεων, είτε αυτές αναφέρονται ακριβώς είτε παραφρασμένες. Επίσης βεβαιώνω ότι αυτή η πτυχιακή εργασία προετοιμάστηκε από εμένα προσωπικά ειδικά για τις απαιτήσεις του προγράμματος σπουδών του Τμήματος Πληροφορικής & Επικοινωνιών του Τ.Ε.Ι. Σερρών.

3 Περίληψη Στο μάθημα της Γ Λυκείου (Τεχνολογικής κατεύθυνσης) «Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον» διδάσκεται η ψευδογλώσσα «ΓΛΩΣΣΑ», μια ελληνική γλώσσα προγραμματισμού η οποία αποτελεί μια Ελληνική έκδοση της γλώσσας Pascal. Για την υλοποίηση της εφαρμογής χρειάστηκε να ενοποιηθούν 4 πράγματα. Ο συντάκτης (editor), ο αναλυτής του κώδικα (precompiler), ο Compiler που μετατρέπει τις εντολές που είναι σε «ΓΛΩΣΣΑ» σε εντολές Pascal και τέλος ο Compiler της Pascal όπου θα δημιουργήσει το τελικό εκτελέσιμο αρχείο ώστε να εμφανιστούν τα αποτελέσματα στην οθόνη. Πιο συγκεκριμένα με την έναρξη της εκτέλεσης του προγράμματος, λαμβάνεται ο κώδικας που περιέχεται μέσα στον συντάκτη και αποστέλλεται σε μορφή συμβολοσειράς (string) στον CodeParser ο οποίος αναλαμβάνει να το κάνει λίστα για εύκολη διαχείριση. Έπειτα από εκεί ο κώδικας περνάει για λογική, συντακτική και σημασιολογική ανάλυση όπου θα διαπιστωθεί η ορθότητα με βάση τους κανόνες της «ΓΛΩΣΣΑΣ». Αν δεν βρεθεί κανένα σφάλμα, ο κώδικας περνάει στον Compiler για την διαδικασία της αντικατάστασης των εντολών «ΓΛΩΣΣΑΣ» με αντίστοιχες εντολές Pascal. Αφού ολοκληρωθεί και αυτό το βήμα αποθηκεύεται ο κώδικας με τις εντολές Pascal σε ένα προσωρινό αρχείο (files/pascal.pas) όπου καλείται ο Compiler της Pascal και μεταγλωττίζει το αρχείο ώστε να παραχθεί το εκτελέσιμο (files/pascal.exe) όπου στην συνέχεια θα καλεστεί, ώστε να εμφανιστεί η εφαρμογή που δημιουργήθηκε, στον τελικό χρήστη. Summary At lesson Developing Applications in a programming environment of Third Class at High School (Technological Direction) is teaching a pseudo language named GLWSSA, a Greek programming Language which is a Greek version of Pascal.

4 In order to implemented this application it has to merge 4 different sections. One is the editor, which the code is writed into, next is the code analyzer which is like a precompiler, third is the Compiler for all required transactions between GLL and Pascal commands, and last is the Pascal Compiler which will create the final executable file for the results that should be displayed. In a closer look, when program runs, code from editor will be exported as a string and sent it to CodeParser which is responsible to made this code easy accessible (vector of command line objects). After that, CodeParser sending each line for logic, syntax and semantic analyzing processes, to found out, if the code is logically and syntactically correct associated with correct meaning which is semantically acceptable. If no error found, GLL Compiler begins transactions of GLWSSA commands with Pascal commands. After this step completed, Pascal code will be saved in a temporary file (files/pascal.pas) which is called by the Pascal Compiler to build and make the executable file (files/pascal.exe), and finally call it to show the application at user.

5 Περιεχόμενα Εισαγωγή...7 Πτυχές της «ΓΛΩΣΣΑΣ»...8 Το αλφάβητο...8 Το λεξιλόγιο...8 Το συντακτικό ( syntax )...8 Η σημασιολογία ( Semantics )...9 Εισαγωγή στην «ΓΛΩΣΣΑ» Το Αλφάβητο Το συντακτικό Σταθερές Μεταβλητές Εντολή εκχώρησης Εντολές εισόδου εξόδου Εντολές Προγράμματος Εντολές / ομές Επιλογής Εντολές / ομές Επανάληψης Πίνακες Εισαγωγή στην GLL Εισαγωγή H Ροή του Compiler Ανάλυση CodeParser RuleController Command... 21

6 ProgramCommand DataTypeCommand SelectionCommand RepetitiveCommand SyntaxRule Εκτέλεση Επίλογος... 40

7 Εισαγωγή To «GLL» είναι μία εφαρμογή η οποία δέχεται κώδικα γραμμένο σε ΓΛΩΣΣΑ, τον οποίο τον ελέγχει για λογικά λάθη, έπειτα κάνει συντακτική και σημασιολογική ανάλυση γραμμή γραμμή και αφού περάσει χωρίς κανένα σφάλμα τον μετατρέπει σε κώδικα Pascal και με την χρήση του Compiler της δημιουργεί το εκτελέσιμο και έπειτα το εμφανίζει στον χρήστη. Η ανάπτυξη του προγράμματος έχει γίνει σε περιβάλλον C++Builder 6 και όλες οι αναλύσεις, το parsing το ταίριασμα των εντολών της «ΓΛΩΣΣΑΣ» έχει γίνει με την χρήση Regular Expressions και συγκεκριμένα με την χρήση της βιβλιοθήκης Deelx.

8 Πτυχές της «ΓΛΩΣΣΑΣ» Το αλφάβητο Αλφάβητο μίας γλώσσας καλείται το σύνολο των στοιχείων που χρησιμοποιείται από τη γλώσσα. Είναι το λεγόμενο primitive constructs που σημαίνει όλα τα στοιχεία που απαρτίζουν μία γλώσσα προγραμματισμού ( νούμερα, χαρακτήρες, λέξεις και τελεστές/σύμβολα ). Το λεξιλόγιο Το λεξιλόγιο αποτελείται από ένα υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου, τις λέξεις που είναι δεκτές από την γλώσσα. Για παράδειγμα η ακολουθία των γραμμάτων ΠΡΟΓΡΑΜΜΑ είναι δεκτή αφού αποτελεί εντολή, αλλά η ακολουθία ΠΡΟΓΡΑΜΑ δεν αποτελεί εντολή της γλώσσας, άρα δεν είναι δεκτή. Το συντακτικό ( syntax ) Η γραμματική αποτελείται από το τυπικό ή τυπολογικό (accidence) και το συντακτικό (syntax). Τυπικό είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μία εντολή είναι αποδεκτή. Για παράδειγμα οι εντολές ΑΡΧΗ, Αρχή, αρχη είναι δεκτές, ενώ η λέξη αρχι δεν είναι αποδεκτή. Συντακτικό είναι το σύνολο των κανόνων που καθορίζει ποιες ακολουθίες χαρακτήρων και τελεστών είναι σωστά κατανεμημένες. Για παράδειγμα η έκφραση: είναι συντακτικά αποδεκτή σύμφωνα με τους κανόνες της γλώσσας ενώ η έκφραση: Πρόγραμμα αρχή τέλος δεν είναι συντακτικά αποδεκτή, για τον λόγω ότι οι εντολές δεν είναι σωστά κατανεμημένες σύμφωνα με τους κανόνες της γλώσσας. Η γνώση του συντακτικού επιτρέπει την δημιουργία σωστών προτάσεων στις φυσικές γλώσσες ενώ στις γλώσσες προγραμματισμού τη δημιουργία σωστών εντολών.

9 Η σημασιολογία ( Semantics ) Η σημασιολογία (Semantics) είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων και κατά επέκταση των εκφράσεων και προτάσεων που χρησιμοποιούνται σε μία γλώσσα. Για παράδειγμα η πρόταση «Εγώ είμαστε ψηλός» έχει την σύνταξη: <ουσιαστικό> <ρήμα> <ουσιαστικό>, η οποία είναι συντακτικά αποδεκτή, όμως σημασιολογικά δεν είναι αποδεκτή αφού η λέξη «Εγώ» αναφέρεται σε ενικό αριθμό ενώ η λέξη «είμαστε» αναφέρεται σε πληθυντικό. Οπότε σημασιολογικό σφάλμα μπορεί να εμφανιστεί σε μία ακολουθία εντολών που είναι συντακτικά αποδεκτή αλλά έχει λάθος νόημα. Στην γλώσσα για παράδειγμα η εντολή : Μεταβλητή <- 2.3 / ημήτρης είναι συντακτικά αποδεκτή αφού ακολουθεί την φόρμα <variable> <- <literal><operator><literal>, όμως σημασιολογικά δεν είναι σωστή γιατί δεν μπορείς να διαιρέσεις έναν αριθμό με χαρακτήρα. Στις γλώσσες προγραμματισμού οι οποίες είναι τεχνητές γλώσσες, ο δημιουργός της γλώσσας αποφασίζει τη σημασιολογία των λέξεων της γλώσσας.

10 Εισαγωγή στην «ΓΛΩΣΣΑ» Το Αλφάβητο Γράμματα Κεφαλαία ελληνικού αλφαβήτου (Α-Ω) Πεζά ελληνικού αλφαβήτου (α-ω) Κεφαλαία λατινικού αλφαβήτου (A-Z) Πεζά λατινικού αλφαβήτου (a-z) Ψηφία 0 9 Ειδικοί χαρακτήρες %+ - * / = ( ).,! : & κενός χαρακτήρας ^ Το συντακτικό Σταθερές Σύνταξη ΣΤΑΘΕΡΕΣ Όνομα_1 = σταθερά_τιμή_1 Όνομα_2 = σταθερά_τιμή_2..

11 . Όνομα_ν = σταθερά_τιμή_ν Παράδειγμα ΣΤΑΘΕΡΕΣ ΠΙ = 3.14 ΦΠΑ = 0.23 ΟΝΟΜΑ = Δημήτρης Τα ονόματα των σταθερών μπορούν να αποτελούνται από γράμματα πεζά ή κεφαλαία του ελληνικού (α-ωα-ω) ή του λατινικού (a-za-z) αλφαβήτου, ψηφία (0 9) καθώς και τον χαρακτήρα κάτω παύλα (underscore _ ), ενώ πρέπει να ξεκινούν υποχρεωτικά με γράμμα. Επίσης δεν επιτρέπεται η χρησιμοποίηση δεσμευμένων λέξεων για την δήλωση σταθερών, όπως Πρόγραμμα, αρχή κτλ. Αποδεκτές σταθερές: Όνομα, Α100, ΦΠΑ Μη αποδεκτές: 100Α, 1ΦΠΑ Μεταβλητές Σύνταξη ΜΕΤΑΒΛΗΤΕΣ τύπος_1 : λίστα_μεταβλητών_1 τύπος_2 : λίστα_μεταβλητών_2... τύπος_ν : λίστα_μεταβλητών_ν Παράδειγμα ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ : Σύνολο, Α ΑΚΕΡΑΙΕΣ : Τιμή, Ν ΧΑΡΑΚΤΗΡΕΣ : Όνομα ΛΟΓΙΚΕΣ : Έλεγχος

12 Όπως αναφερθήκαμε πριν για τα ονόματα των σταθερών και ποια ακολουθία χαρακτήρων είναι αποδεκτή, το ίδιο ισχύει και για τις μεταβλητές. Εντολή εκχώρησης Σύνταξη Όνομα_μεταβλητής <- έκφραση Παράδειγμα Α <- 132 ΜΗΝΑΣ <- Ιανουάριος ΕΜΒΑΔΟΝ <- Α * Β Στις εντολές εκχώρησης μεγάλη προσοχή πρέπει να δίνεται στον τύπο που προσπαθούμε να εκχωρήσουμε. Για παράδειγμα στην μεταβλητή ΜΗΝΑΣ δεν μπορούμε να βάλουμε νούμερο η μια μαθηματική έκφραση. Εντολές εισόδου εξόδου Σύνταξη ΔΙΑΒΑΣΕ λίστα_μεταβλητών Παράδειγμα ΔΙΑΒΑΣΕ Ποσότητα, Τιμή Η εκτέλεση της εντολής οδηγεί στην είσοδο τιμών από το πληκτρολόγιο και την εκχώρηση τους στις μεταβλητές που αναφέρονται. Σύνταξη ΓΡΑΨΕ λίστα_στοιχείων Παράδειγμα ΓΡΑΨΕ Η τετραγωνική ρίζα του,α, είναι:,ριζα Χρησιμοποιείται για την εμφάνιση σταθερών τιμών καθώς και των τιμών των μεταβλητών που αναφέρονται στη λίστα.

13 Εντολές Προγράμματος Σύνταξη ΠΡΟΓΡΑΜΜΑ τίτλος_προγραμματος Παράδειγμα ΠΡΟΓΡΑΜΜΑ Κόστος_Υπολογιστών Η εντολή ΠΡΟΓΡΑΜΜΑ είναι η πρώτη εντολή κάθε προγράμματος ακολουθούμενη από τον τίτλο του προγράμματος. Σύνταξη ΑΡΧΗ Παράδειγμα ΑΡΧΗ Η εντολή ΑΡΧΗ είναι η εντολή έναρξης των προγραμμάτων, και σε καμία περίπτωση δεν ακολουθεί δίπλα της άλλη εντολή ή οποιοσδήποτε χαρακτήρας εκτός του τέλους γραμμής. Σύνταξη ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Παράδειγμα ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Η εντολή ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ είναι η εντολή τερματισμού του προγράμματος, και σε καμία περίπτωση δεν ακολουθεί δίπλα της άλλη εντολή ή οποιοσδήποτε χαρακτήρας εκτός του τέλους γραμμής. Εντολές / ομές Επιλογής

14 Σύνταξη ΑΝ συνθήκη_1 ΚΑΙ συνθήκη_2 ΤΟΤΕ Εντολή_1 Εντολή_2 Εντολή_ν ΑΛΛΙΩΣ_ΑΝ συνθήκη_3 ΤΟΤΕ Εντολή_1 Εντολή_2 Εντολή_ν ΑΛΛΙΩΣ Εντολή_1 Εντολή_2 Εντολή_ν ΤΕΛΟΣ_ΑΝ Παράδειγμα ΑΝ αριθμός > 0 ΤΟΤΕ ΓΡΑΨΕ Ο αριθμός είναι θετικός ΑΛΛΙΩΣ_ΑΝ αριθμός < 0 ΤΟΤΕ ΓΡΑΨΕ Ο αριθμός είναι αρνητικός ΑΛΛΙΩΣ ΓΡΑΨΕ Ο αριθμός είναι 0 ΤΕΛΟΣ_ΑΝ Αν η συνθήκη ισχύει, τότε εκτελούνται οι εντολές που βρίσκονται μεταξύ των λέξεων ΤΟΤΕ και ΑΛΛΙΩΣ, διαφορετικά εκτελούνται οι εντολές μεταξύ ΑΛΛΙΩΣ και ΤΕΛΟΣ_ΑΝ. Η εκτέλεση του προγράμματος συνεχίζεται με την εντολή που ακολουθεί τη δήλωση ΤΕΛΟΣ_ΑΝ. Σύνταξη ΕΠΙΛΕΞΕ ΠΕΡΙΠΤΩΣΗ έκφραση_1 Εντολές_1 ΠΕΡΙΠΤΩΣΗ έκφραση_2 Εντολές_2

15 .. ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ Εντολές_αλλιώς ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ Παράδειγμα ΔΙΑΒΑΣΕ αριθμός ΕΠΙΛΕΞΕ αριθμός ΠΕΡΙΠΤΩΣΗ 0 ΓΡΑΨΕ Μηδέν ΠΕΡΙΠΤΩΣΗ 1,3,5,7,9 ΓΡΑΨΕ Ο αριθμός είναι μονός ΠΕΡΙΠΤΩΣΗ 2,4,6,8 ΓΡΑΨΕ Ο αριθμός είναι ζυγός ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ ΓΡΑΨΕ Άλλος αριθμός ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ Υπολογίζεται η τιμή της έκφρασης και εκτελούνται οι εντολές που ανήκουν στην αντίστοιχη περίπτωση τιμών. Αν η τιμή της έκφρασης δεν αντιστοιχεί σε καμία περίπτωση, τότε εκτελούνται οι εντολές αλλιώς. Εντολές / ομές Επανάληψης Σύνταξη ΟΣΟ συνθήκη ΕΠΑΝΕΛΑΒΕ Εντολή_1 Εντολή_2 Εντολή_ν ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Παράδειγμα Άθροισμα <- 0 ΟΣΟ Άθροισμα < 1000 ΕΠΑΝΕΛΑΒΕ ΔΙΑΒΑΣΕ Α

16 Άθροισμα <- Άθροισμα + Α ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Ελέγχεται η συνθήκη και αν είναι Αληθής, εκτελούνται οι εντολές που βρίσκονται ανάμεσα στις ΟΣΟ_ΕΠΑΝΕΛΑΒΕ και ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ. Στη συνέχεια ελέγχεται πάλι η συνθήκη και αν ισχύει, εκτελούνται πάλι οι ίδιες εντολές. Όταν η λογική έκφραση γίνει Ψευδής, τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ. Σύνταξη ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ Εντολή_1 Εντολή_2 Εντολή_ν ΜΕΧΡΙΣ_ΟΤΟΥ λογική_έκφραση Παράδειγμα ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΔΙΑΒΑΣΕ Α Άθροισμα <- Άθροισμα + Α ΜΕΧΡΙΣ_ΟΤΟΥ Άθροισμα >= 1000 Εκτελούνται οι εντολές μεταξύ των ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ και ΜΕΧΡΙΣ_ΟΤΟΥ. Στη συνέχεια ελέγχεται η λογική έκφραση και αν δεν ισχύει(είναι ψευδής), τότε οι εντολές που βρίσκονται ανάμεσα στις ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ και ΜΕΧΡΙΣ_ΟΤΟΥ, εκτελούνται πάλι. Ελέγχεται ξανά η λογική έκφραση και αν δεν ισχύει, επαναλαμβάνεται η εκτέλεση των ίδιων εντολών. Σύνταξη ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ ΒΗΜΑ βήμα Εντολή_1 Εντολή_2 Εντολή_ν ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Παράδειγμα

17 ΓΙΑ Αριθμό ΑΠΟ 1 ΜΕΧΡΙ 100 ΜΕ ΒΗΜΑ 2 Άθροισμα <- Άθροισμα + Αριθμό ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Οι εντολές του βρόχου εκτελούνται για όλες τις τιμές της μεταβλητής από την αρχική τιμή μέχρι την τελική τιμή, αυξανόμενες με την τιμή του βήματος. Αν το βήμα είναι ίσο με 1, τότε παραλείπεται. Πίνακες ήλωση Μονοδιάστατου ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ : θερμοκρασία[30] ήλωση Πολυδιάστατου ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ : θερμοκρασία[30,10] Ανάγνωση/Εγγραφή σε Μονοδιάστατο πίνακα ΔΙΑΒΑΣΕ θερμοκρασία[i] ΓΡΑΨΕ Η θερμοκρασία είναι:,θερμοκρασία[i] Ανάγνωση/Εγγραφή σε Πολυδιάστατο πίνακα ΔΙΑΒΑΣΕ θερμοκρασία[i,j] ΓΡΑΨΕ Η θερμοκρασία είναι:,θερμοκρασία[i,j] Η χρήση πινάκων είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ιδίου τύπου.

18 Εισαγωγή στην GLL Εισαγωγή Ο Compiler της GLL είναι χτισμένος ολοκληρωτικά με Κλάσεις και έχει γίνει και χρήση του γνωστού σχεδιαστικού μοτίβου MVC. Με αυτόν τον τρόπο μπορούμε πολύ εύκολα να διαχωρίσουμε το interface (views) από τους Controllers και τα Μodels. H Ροή του Compiler Η γενική ροή του προγράμματος είναι: Φορτώνεται σε ένα string όλος ο κώδικας του Memo που γίνεται η συγγραφή του κώδικα Έπειτα ο CodeParser ένας Controller κάνει όλη την δουλειά ώστε να φέρει τον κώδικα σε μορφή εύκολα και γρήγορα επεξεργάσιμη, Συνδέεται με όλους τους άλλους Controllers που είναι υπεύθυνοι για την λογική και την συντακτική ανάλυση στέλνοντας τους κάθε φορά μία γραμμή κώδικα, Αν επιστραφεί λάθος από κάποιον Controller τότε σταματάει την εκτέλεση και επιστρέφει στο Front End (interface) όπου γίνεται η εμφάνιση των σφαλμάτων. Αν δεν βρεθεί σφάλμα τότε συνδέεται με τον Compiler ο οποίος με την σειρά του αναλαμβάνει τα transactions μεταξύ των εντολών ΓΛΩΣΣΑΣ σε εντολές Pascal. Με την ολοκλήρωση και του παραπάνω βήματος αποθηκεύεται το αρχείο με τις εντολές Pascal σε ένα προσωρινό αρχείο και εκτελείται το βήμα του Linker όπου καλείται ο Compiler της Pascal ώστε να δημιουργηθεί το εκτελέσιμο.

19 Αφού δημιουργηθεί το εκτελέσιμο καλείται και εμφανίζεται στον χρήστη.

20 Ανάλυση CodeParser Είναι αυτός που κάνει το parsing του κώδικα και «συνδέεται» άμεσα με όλους τους Controllers και τα Views. Κατά βάση θεωρείται Controller γιατί συνδέεται άμεσα με Models και Views. Αποτελείται από δύο κύριες μεθόδους: Source *CodeParser::parseSourceCode(int totallines, string unparsedcode) Αυτή η function παίρνει την συμβολοσειρά unparsedcode η οποία περιέχει όλο τον κώδικα σε μορφή string, και γνωρίζοντας τις συνολικές γραμμές (totallines) «παρσάρεται» το string. Στην φάση αυτή γίνεται εξαγωγή της κάθε γραμμής κώδικα ξεχωριστά όπου σε συνεργασία με την Κλάση Tool καθαρίζεται η γραμμή κώδικα από περιττά κενά, tabs, comments κλπ και έπειτα γίνεται εκχώρηση ως αντικείμενο τύπου Command στο splittedcommands, ένα vector από Commands το οποίο εισάγεται ως παράμετρος στον Constructor στης Κλάσης SourceCode. Το αντικείμενο αυτό είναι η επιστρεφόμενη τιμή της συνάρτησης αυτής. Με λίγα λόγια η παραπάνω συνάρτηση παίρνει ως όρισμα κώδικα ως string και τον εξάγει σε μορφή αντικειμένου όπου μέσα του περιέχεται μια λίστα (vector) από αντικείμενα τύπου Command. bool CodeParser::raiseFalses(SourceCode *sourcecode) Η συνάρτηση που είναι υπεύθυνη να κάνει ανάγνωση όλο το vector<command> και για κάθε commandline να καλέσει τους Controllers που είναι υπεύθυνοι για την Λογική, Συντακτική και σημασιολογική ανάλυση. Επιστρέφει bool τιμές, true σε περίπτωση που βρεθούν σφάλματα όπου και σταματάει την εκτέλεση του προγράμματος. Σε αντίθετη περίπτωση επιστρέφει false οπότε έχει διαβάσει όλο το vector. void CodeParser::runCompiler(SourceCode *sourcecode)

21 Αφού δεν έχει επιστραφεί κάποιο σφάλμα καλείται η παραπάνω συνάρτηση για να γίνει η εναλλαγή κώδικα ΓΛΩΣΣΑΣ σε κώδικα Pascal. Στην πραγματικότητα αυτή η συνάρτηση λειτουργεί ως Controller της Κλάσης Compiler. RuleController Μία κλάση ορίου η οποία συνδέεται με κλάσης οντότητας LogicRule, SyntaxRule & SemanticRule. Στην ουσία είναι η κύρια κλάση που «καλεί» τις κατάλληλες συναρτήσεις για την λογική, συντακτική και σημασιολογική ανάλυση του κώδικα. bool RuleController::logicRules(int line, string codeline) Συνάρτηση υπεύθυνη να καλεί τις διαδικασίες για την λογική ανάλυση του κώδικα. Καλείται για κάθε νέα γραμμή κώδικα (codeline). bool RuleController::syntaxRules(int line, string codeline) Ίσως η πιο βασική συνάρτηση του προγράμματος διότι είναι αυτή που δρομολογεί το είδος της εντολής που «παρσάρετε» και σύμφωνα με αυτό καλεί τις κατάλληλες διαδικασίες για συντακτική ανάλυση και ορθότητα του κώδικα. Και αυτή καλείται επίσης για κάθε νέα γραμμή κώδικα (codeline). Στην ουσία είναι συνάρτηση route γιατί δρομολογεί την εκτέλεση με βάση το ποια είναι η εντολή που περιέχεται μέσα στο codeline εκείνη την στιγμή. Command Η κλάση Command όπου περιέχει την βασική δομή και τα attributes που χρειάζεται μία γραμμή κώδικα ώστε να δηλωθεί. Από την συγκεκριμένη κλάση κληρονομούν όλοι οι τύποι εντολών που θα αναλύσουμε παρακάτω.

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

23 01: bool ProgramCommand::isProgramCommand(string codeline){ 02: char charcodeline[255]; 03: strcpy(charcodeline,codeline.c_str()); 04: 05: CRegexpT <char> regexp(programcmd); 06: MatchResult result = regexp.match(charcodeline); 07: if(result.ismatched()) 08: return true; 09: 10: return false; 11: } Ανάλυση Στην γραμμή 03 αντιγράφουμε την γραμμή κώδικα μία μεταβλητή τύπου char που έχουμε δηλώσει στην γραμμή 02. Αυτό γίνεται γιατί η βιβλιοθήκη deelx ζητάει μεταβλητή τύπου const char. Έπειτα στην γραμμή 05 γίνεται η αρχικοποίηση του regular expression που βρίσκεται στην μεταβλητή programcmd. Στην γραμμή 06 με βάση το regular expression που δημιουργήθηκε γίνεται το match και τα αποτελέσματα πάνε στο αντικείμενο result. Το οποίο χρησιμοποιείται στην γραμμή 07 για να επαληθευτεί αν βρέθηκε το pattern μέσα στο charcodeline. Με την χρήση regural expression οπότε επιστρέφει true σε περίπτωση που η εντολή που είναι στην αρχή μέσα στο codeline είναι η εντολή πρόγραμμα. Αναφορά στο regex που χρησιμοποιήθηκε: char programcmd[] = "^(π Π)(ρ Ρ)(ο ό Ο Ό)(γ Γ)(ρ Ρ)(α Α)(μ Μ){2}(α Α)(\n $)"; ^ : αρχή γραμμής (π Π)(ρ Ρ) κ.ο.κ : π ή Π, ρ ή Ρ κ.ο.κ το ότι είναι δίπλα δίπλα σημαίνει ότι μεταξύ τους δεν μπορεί να βρεθεί άλλος χαρακτήρας. {2} : επανάληψη 2 φορές την προηγούμενη καν. έκφραση δηλ. ισοδύναμο με (μ Μ)(μ Μ) (\n $) : \n αλλαγή γραμμής, κενός χαρακτήρας (στην c είναι το κενό), $ τέλος γραμμής

24 Στην ουσία η παραπάνω κανονική έκφραση θα ταιριάσει με όλους τους συνδυασμούς που δίνουν την λέξη πρόγραμμα (πχ προγραμμα, ΠΡΟΓΡΑΜΜΑ, Πρόγραμμα κ.ο.κ.) και μετά να ακολουθεί κενό και οποιοσδήποτε χαρακτήρας ή αλλαγή γραμμής ή τέλος γραμμής. Ομοίως έχουμε τις συναρτήσεις για τις εντολές ΑΡΧΗ & ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ αντίστοιχα : bool ProgramCommand::isStartCommand(string codeline) * bool ProgramCommand::isEndCommand(string codeline) * string ProgramCommand::convertProgramCommand(string codeline) Η παραπάνω εντολή χρησιμοποιείται για τα transactions μεταξύ των δύο γλωσσών. Αφού κάνει match την εντολή μέσα στο codeline την αντικαθιστά με την εντολή PROGRAM. Ομοίως έχουμε τις συναρτήσεις για τις εντολές ΑΡΧΗ & ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ αντίστοιχα : string ProgramCommand::convertStartCommand(string codeline) * string ProgramCommand::convertEndCommand(string codeline) * * Για λόγους συντομίας και επειδή έχουν παρόμοιες λειτουργίες η ανάλυση παραλείπεται. DataTypeCommand Ανάλυση Περιλαμβάνει όλες τις εντολές που είναι για την δήλωση τύπων δεδομένων. Επίσης σ αυτήν ανήκει και δήλωση σταθερών με την τιμή τους. Έχει τις συναρτήσεις που ανιχνεύουν το αν η εντολή είναι μία από τις: ΣΤΑΘΕΡΕΣ, ΜΕΤΑΒΛΗΤΕΣ, ΑΚΕΡΕΑΙΕΣ, ΠΡΑΓΜΑΤΙΚΕΣ οι οποίες δουλεύουν όμοια με τις εντολές is της ProgramCommand. Υπάρχει ακόμα μία συνάρτηση που ανιχνεύει την ύπαρξη ανάθεσης τιμής σε όνομα σταθεράς, και θα αναλύσω το regular expression που είναι: char setconstvar[] = "^[a za Zα ωα ΩΆΈΉΊΌΎΏάέήίόύώς_0 9]+( )?=( )?[a za ZαωΑ ΩΆΈΉΊΌΎΏάέήίόύώς_0 9\'\"\.]*(\n $)";

25 ^ : αρχή γραμμής [a za Z.]+ : ότι περιέχεται μέσα στα brackets θα το κάνει match, οτιδήποτε άλλο όχι. Το + δηλώνει ότι η προηγούμενη κανονική έκφραση θα βρεθεί μία φορά τουλάχιστον. ( )?=( )? : μία ή καμία φορά το κενό, μετά ακολουθεί =, και μετά πάλι το ίδιο [a za Zα ωα ΩΆΈΉΊΌΎΏάέήίόύώς_0 9\'\"\.]*: αυτό θα κάνει match με αριθμούς γράμματα και τα μονά και διπλά αυτάκια και την τελεία, καμία ή περισσότερες φορές. Στην ουσία η παραπάνω κανονική έκφραση θα ταιριάσει με όλους τους συνδυασμούς : Φπα = 0.18, Τεστ = δοκιμή, Name = Dimitris Αλλά και με εσφαλμένες δηλώσεις όπως: Test = 45 wrong, Όνομα = ημήτρης Οι οποίες θα αναλυθούν συντακτικά παρακάτω και θα τυπωθεί το σφάλμα. Στην συνέχεια της συγκεκριμένης κλάσης έχουμε τα transaction: "^(σ Σ)(τ Τ)(α Α)(θ Θ)(ε Ε)(ρ Ρ)(ε έ Έ Ε)(σ ς Σ)" αντικαθίσταται με το CONST "^(μ Μ)(ε Ε)(τ Τ)(α Α)(β Β)(λ Λ)(η Η)(τ Τ)(ε έ Έ Ε)(σ ς Σ)" με το VAR "^(α Α)(κ Κ)(ε έ Έ Ε)(ρ Ρ)(α Α)(ι Ι)(ε Ε)(σ ς Σ)" αντικαθιστάται με το LONGINT "^(π Π)(ρ Ρ)(α Α)(γ Γ)(μ Μ)(α Α)(τ Τ)(ι Ι)(κ Κ)(ε έ Έ Ε)(σ ς Σ)" με το REAL και "^(χ Χ)(α Α)(ρ Ρ)(α Α)(κ Κ)(τ Τ)(η ή Ή Η)(ρ Ρ)(ε Ε)(σ ς Σ)" με το CHAR IOCommand Ανάλυση Περιλαμβάνει όλες τις εντολές που είναι εντολές εισόδου εξόδου : isreadcommand αν είναι η εντολή ΙΑΒΑΣΕ iswritecommand αν είναι η εντολή ΓΡΑΨΕ isnotwritelncommand αυτή επιστρέφει πότε η εντολή ΓΡΑΨΕ δεν είναι με ορίσματα, δηλ αν κάνει match σημαίνει ότι είναι καθαρή ΓΡΑΨΕ που τυπώνει ένα μήνυμα μόνο.

26 isassignmentcommand η εντολή εκχώρησης ( Μεταβλητή <- τιμή ) Και οι συναρτήσεις μετατροπής: convertreadcommand, convertwritecommand, convertwritelncommand, convertwritelnvariables, convertvariables, addrestrequired και addassignrestrequired είναι οι απαραίτητες συναρτήσεις για την μετατροπή όλων των εντολών εισόδου εξόδου σε γλώσσα Pascal. ΓΡΑΨΕ 'Μήνυμα χωρίς ορίσματα' ΓΡΑΨΕ 'Μήνυμα με όρισμα',όρισμα ΔΙΑΒΑΣΕ Τιμή_μονάδος Κόστος <- Ποσότητα*Τιμή_μονάδος WRITE(' Μήνυμα χωρίς ορίσματα'); WRITELN(' Μήνυμα με όρισμα,orisma); READLN(Timh_monados); Kostos := Posothta*Timh_monados; SelectionCommand Ανάλυση Περιλαμβάνει όλες τις εντολές που είναι εντολές / δομές επιλογής : isifcommand αν είναι η εντολή αν iselsecommand αν είναι η εντολή αλλιώς iselseifcommand αν είναι η εντολής αλλιώς_αν isendifcommand αν είναι η εντολή τέλος_αν isswitchcommand η εντολή επίλεξε iscasecommand η εντολή περίπτωση και η περίπτωση αλλιώς isendcasecommand η εντολή τελος_επιλογών Και οι συναρτήσεις μετατροπής: convertifcommand, convertelsecommand, convertelseifcommand και convertendifcommand σε συνδυασμό μετατρέπουν με 2 4 βήματα έναν ολόκληρο βρόχο της εντολής ΑΝ, ανεξαρτήτως τις εντολές που υπάρχουν ενδιάμεσα. ΑΝ Ποσότητα < 5 ΤΟΤΕ Γραψε 'Μήνυμα1' ΑΛΛΙΩΣ IF Posothta < 5 THEN BEGIΝ WRITE('Μήνυμα1 ); END ELSE BEGIN

27 ΤΕΛΟΣ_ΑΝ Γραψε 'Μήνυμα2' WRITE('Μήνυμα2'); END; Ομοίως οι συναρτήσεις: convertswitchcommand, convertcasecommand και convertendcasecommand μετατρέπουν βρόχους της δομής επιλογής ΕΠΙΛΕΞΕ. ΕΠΙΛΕΞΕ Ποσότητα ΠΕΡΙΠΤΩΣΗ 1,2,3 Γραψε 'Μήνυμα1' ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ Γραψε 'Μήνυμα2' ΤΕΛΟΣ_ΠΕΡΙΠΤΩΣΕΩΝ CASE Posothta OF 1,2,3: BEGIN WRITE('Μήνυμα1 ); END; ELSE BEGIN WRITE('Μήνυμα2'); END; END; RepetitiveCommand Ανάλυση Περιλαμβάνει όλες τις εντολές που είναι εντολές / δομές επιλογής : iswhilecommand αν είναι η εντολή όσο isendrepeatcommand αν είναι η εντολή τελος_επανάλληψης isstartrepeatcommand αν είναι η εντολής αρχή_επανάληψης isuntilcommand αν είναι η εντολή μέχρις_ότου isforcommand η εντολή για Και οι συναρτήσεις μετατροπής: convertwhilecommand, convertendrepeatcommand, convertstartrepeatcommand, convertuntilcommand και convertforcommand που σε συνδυασμό μετατρέπουν όλους τους τύπους επαναληπτικών διαδικασιών σε κώδικα Pascal. Η εντολή για από..μεχρι τελος_επανάληψης: ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 FOR i:=1 TO 10 DO

28 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 30 FOR j:=1 TO 10 ΓΡΑΨΕ 'Θερμοκρασία: ',i WRITELN(' Θερμοκρασία:', i,'',j); ΔΙΑΒΑΣΕ Θερμοκρασία[i,j] READLN(Uermokrasia[i,j]); ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ END. ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ END; Η εντολή όσο επανέλαβε τελος_επανάληψης: i <- 1 i := 1; ΟΣΟ i < 10 ΕΠΑΝΕΛΑΒΕ WHILE i < 10 DO BEGIN ΓΡΑΨΕ 'Η τιμή του i: ', i WRITELN('Η τιμή του i: ', i); i <- i + 1 i := i + 1; ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ END; Η εντολή αρχή_επανάληψης μέχρις_ότου: i <- 1 i := 1; ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ REPEAT ΓΡΑΨΕ 'Η τιμή του i: ', i WRITELN('Η τιμή του i: ', i); i <- i + 1 i := i + 1; ΜΕΧΡΙΣ_ΟΤΟΥ i > 10 UNTIL i > 10; SyntaxRule Ίσως η ποιο βασική Κλάση του προγράμματος. Και αυτό γιατί στην συγκεκριμένη κλάση γίνεται όλη η συντακτική ανάλυση του κώδικα. Χωρίς της οποίας δεν μπορεί να παραχθεί το εκτελέσιμο, αφού πρέπει πρώτα να διαπιστωθεί η ορθότητα του κώδικα ώστε αφού γίνει το transaction μεταξύ ΓΛΩΣΣΑΣ και Pascal να καλεστεί ο Compiler της και να παραχθεί το εκτελέσιμο. Για λόγους συντομίας και αποφυγής άσκοπης επαναλαμβανόμενης ανάλυσης, και λόγω του μεγάλου όγκου συναρτήσεων που διαθέτει η εν λόγω Κλάση, θα

29 παραλειφθούν οι περισσότερες συναρτήσεις ώστε να επικεντρωθούμε στις πιο σημαντικές. bool progcmdfirstrule(string codeline, int line) Ελέγχει πριν τσεκάρει με regular exp την γραμμή κώδικα αν έχουν βρεθεί εντολές πριν από αυτήν, αν ναι εμφανίζει το κατάλληλο σφάλμα. bool progcmdsecondrule(string codeline, int line) Αρχικά βλέπει αν έχει «παρσαριστεί» ήδη η εντολή πρόγραμμα οπότε υπάρχει σφάλμα. Στην συνέχεια αν ταιριάξει ακριβώς με την εντολή πρόγραμμα και το τίτλο προγράμματος προχωράει σε νέο έλεγχο του τίτλου προγράμματος ώστε να εξασφαλιστεί ότι δεν είναι δεσμευμένη λέξη ή κάποια μη επιτρεπόμενη. Αν δεν ταιριάξει ακριβώς τότε προσπαθεί να βρει τι λείπει ή τι είναι επιπλέον δηλωμένο και τυπώνει το ανάλογο τύπο λάθους. Με παρόμοια λογική λειτουργούν οι συναρτήσεις: startcmdfirstrule, startcmdsecondrule, endcmdfirstrule, endcmdsecondrule, constcmdfirstrule, constcmdsecondrule, setconstvarfirstrule, varcmdfirstrule, varcmdsecondrule. bool setconstvarsecondrule(string codeline, int line) /** * Αν κάνει match τότε έχει 3 cases να τσεκάρει * 1. Να τσεκάρει αν το όνομα της σταθεράς είναι αποδεκτό * 2. Να τσεκάρει αν η σύνταξη είναι σωστή * 3. Έπειτα να δει αν το όνομα της σταθεράς έχει ήδη χρησιμοποιηθεί * 4. Τέλος αν περάσει όλους τους ελέγχους τοποθετείτε το όνομα της σταθεράς * στο vector με τις σταθερές σύμφωνα με τον τύπο που έχει η τιμή που τις * ανατίθενται. */ Σε περίπτωση που δεν ταιριάξει με την σωστή συντακτική δομή για κάθε επιπλέον λέξη ή εντολή που βρίσκεται μετά την δήλωση της σταθεράς θα τυπωθεί ένα σφάλμα. bool intcmdsecondrule(string codeline, int line); bool floatcmdsecondrule(string codeline, int line); bool charcmdsecondrule(string codeline, int line);

30 Οι τρεις παραπάνω συναρτήσεις δουλεύουν με τον ίδιο τρόπο. Αναλύουν συντακτικά την δήλωση των μεταβλητών ανά τύπο. Θα αναλύσουμε το regular expression που χρησιμοποιήθηκε: char validsyntax[] ="^(α Α)(κ Κ)(ε έ Έ Ε)(ρ Ρ)(α Α)(ι Ι)(ε Ε)(σ ς Σ)( )?:( )?[a za Zα ωα ΩΆΈΉΊΌΎΏάέήίόύώς_0 9]+(\\[[0 9,]+\\])*((( )?,( )?[a za Zα ωα ΩΆΈΉΊΌΎΏάέήίόύώς_0 9]+(\\[[0 9,]+\\])*)+$ $)"; Ανάλυση ^(α Α)(κ Κ)(ε έ Έ Ε)(ρ Ρ)(α Α)(ι Ι)(ε Ε)(σ ς Σ) : Ταιριάζει με την εντολή ακέραιες ( )?:( )? : Ταιριάζει με 0 ή 1 κενό : 0 ή 1 κενό [a za Zα ωα ΩΆΈΉΊΌΎΏάέήίόύώς_0 9]+ : όνομα μεταβλητής με 1 ή περισσότερα από αυτά (\\[[0 9,]+\\])* : Αυτό είναι για τους πίνακες, το \\[ σημαίνει ότι θα κάνει ακριβώς match τον χαρακτήρα [. Μετά είναι το [0-9,]+ που σημαίνει αριθμός και κόμμα μπορεί να υπάρχει μία ή περισσότερες φορές και \\] κλείνει η αγκύλη. Το * σημαίνει να ταιριάξει είτε υπάρχει τέτοια ακολουθία είτε όχι. ((( )?,( )?[a za Zα ωα ΩΆΈΉΊΌΎΏάέήίόύώς_0 9]+(\\[[0 9,]+\\])*)+$ $) Αυτό δηλώνει ότι μετά από την πρώτη μεταβλητή μπορεί να κάνει match αυτό ( )?,( )?[a za Zα ωα ΩΆΈΉΊΌΎΏάέήίόύώς_0 9]+(\\[[0 9,]+\\])*)+$ ή να μην υπάρχει τίποτε άλλο, αλλά να είναι τέλος γραμμής $. Αν δεν είναι τέλος γραμμής θα πρέπει να ταιριάζει το ίδιο με το προηγούμενο που αναλύσαμε με την διαφορά ότι πριν από κάθε μεταβλητή πρέπει απαραίτητα να προηγείται κόμμα -> ( )?,( )? συνοδευόμενη ή και μη από κενά. Το παραπάνω μπορεί να ταιριάξει όσες φορές χρειάζεται. Ομοίως υπάρχουν οι αντίστοιχες κανονικές εκφράσεις για τους χαρακτήρες και για τους πραγματικούς αριθμούς. bool readcmdsecondrule(string codeline, int line) Εδώ γίνεται ο έλεγχος της εντολής «ΙΑΒΑΣΕ». Η εντολή αυτή ακολουθείτε πάντα από μία ή περισσότερες μεταβλητές ή πίνακες. Επομένως η κανονική έκφραση έχει μία

31 βασική μορφή και μετά τέλος γραμμής ή συνεχίζει με κόμμα και έπειτα μεταβλητή όσες φορές χρειάζεται. Αρχικά ελέγχεται αν είναι συντακτικά αποδεκτή η γραμμή κώδικα. Έπειτα και εφόσον δεν υπάρχει συντακτικό σφάλμα, ελέγχονται όλες οι μεταβλητές μία προς μία αν έχουν δηλωθεί. Σε περίπτωση που βρεθεί στην λίστα μεταβλητών της εντολής ΙΑΒΑΣΕ μεταβλητή η οποία είναι δηλωμένη ως σταθερά τότε εμφανίζεται συντακτικό σφάλμα ότι δεν επιτρέπεται η χρήση της σταθεράς ως μεταβλητή. Αν δεν δηλωθεί η μεταβλητή τότε εμφανίζεται μήνυμα μην αναγνωρίσιμης μεταβλητής. Σε περίπτωση που η μεταβλητή είναι πίνακας ελέγχεται κάθε μετρητής που περιέχεται μέσα στις αγκύλες, για το αν έχει δηλωθεί ως μεταβλητή και αν είναι αποδεκτού τύπου. Αν δεν είναι αποδεκτού τύπου (ακέραιος) τότε εμφανίζεται σφάλμα «μην αποδεκτός τύπος μεταβλητής ως μετρητής στον πίνακα». Η κανονική έκφραση που χρησιμοποιήθηκε σ αυτήν την συνάρτηση για την εγκυρότητα της σύνταξης είναι παρόμοια με την παραπάνω με την διαφορά ότι για το ταίριασμα των πινάκων χρησιμοποιεί αντί για: (\\[[0 9,]+\\])* την έκφραση: (\\[[a za Z,]+\\])* και αυτό γιατί η εντολή ΙΑΒΑΣΕ δέχεται τιμές τις οποίες τις καταχωρεί μέσα στους πίνακες. Οπότε ο πίνακας πρέπει να έχει μέσα στις αγκύλες τον μετρητή του και όχι κάποιο νούμερο. Για παράδειγμα το σωστό είναι «ΙΑΒΑΣΕ Τιμές[i]» και όχι το «ΙΑΒΑΣΕ Τιμές[20]». bool writecmdsecondrule(string codeline, int line) Είναι η συνάρτηση για την συντακτική ανάλυση της εντολής ΓΡΑΨΕ χωρίς να ακολουθούν μεταβλητές/πίνακες. Η συγκεκριμένη εκτελείται μόνο για τις εντολές όπως «ΓΡΑΨΕ Μήνυμα». Γι αυτό τον λόγω εξηγείται ότι η κανονική έκφραση του validsyntax τελειώνει με το $, που σημαίνει ότι μετά το «μήνυμα» είναι το τέλος γραμμής. bool writelncmdsecondrule(string codeline, int line) Βασική συνάρτηση για την ανάλυση των εντολών ΓΡΑΨΕ με μηνύματα και λίστες μεταβλητών ή πινάκων. Επειδή η σύνταξη αυτής της εντολής είναι σε μορφή: <ΓΡΑΨΕ> 'message1',var1,'message2',var2,'message3',var3...,'messagen',varn$

32 Γνωρίζοντας την κανονική έκφραση που ταιριάζει με κάθε διαφορετική οντότητα (εντολή, μήνυμα, μεταβλητή κ.λπ) δηλαδή (γ Γ)(ρ Ρ)(α ά Ά Α)(ψ Ψ)(ε Ε) : για την εντολή ΓΡΑΨΕ, γράψε κλπ. \=]+\'): για κάθε μήνυμα μέσα σε μονά αυτάκια Μήνυμα και (\'[a za Zα ωα ΩΆΈΉΊΌΎΏάέήίόύώς0 9 ([a za Zα ωα ΩΆΈΉΊΌΎΏάέήίόύώς_0 9]+(\\[[a za Zα ωα ΩΆΈΉΊΌΎΏάέήίόύώς_0 9,]+\\])*) : για κάθε μεταβλητή ή πίνακα Τιμή[i], Κόστος_1. πρέπει να δημιουργηθεί μία κανονική έκφραση η οποία οσαδήποτε και αν είναι τα μηνύματα και οι μεταβλητές να μπορεί να ταιριάζει όταν είναι σωστή η σύνταξη της εντολής. Οπότε βήμα-βήμα δημιουργήθηκε ένα regex που να ταιριάζει με μήνυμα μεταβλητή : CASE 1: <γράψε> 'A message followed by variable',variable$ έπειτα επίσης να μπορεί να ταιριάξει και με μήνυμα μεταβλητή μήνυμα : CASE 2: <γράψε> 'Msg1 before variable',variable,'msg2 after variable'$ αλλά και με μήνυμα μεταβλητή μήνυμα μεταβλητή : CASE 3: <γράψε> 'Msg1 before var1',var1,'msg2 after var1 & before var2',var2$ και τέλος με την πολλαπλή εμφάνιση μηνυμάτων και μεταβλητών. Σύμφωνα με όλα τα παραπάνω η κανονική έκφραση ταιριάζει με όλες τις πιθανές περιπτώσεις. Προστέθηκε επίσης στην έκφραση το {0, } που σημαίνει η κανονική έκφραση να ταιριάξει όσες φορές είναι εφικτό, αλλά και 0 αν δεν μπορεί καθόλου ( το πρώτο case ). Όπως και στην «ΙΑΒΑΣΕ» έτσι και σ αυτήν, κάθε μεταβλητή/πίνακας ελέγχεται για το αν έχει δηλωθεί και αν πληροί όλους τους κανόνες της ΓΛΩΣΣΑΣ. bool assigncommandrule(string codeline, int line); Αυτή η συνάρτηση αναλύει συντακτικά τις εντολές εκχώρησης. Ο πρώτος έλεγχος που γίνεται στην συνάρτηση αυτή είναι ο τύπος της μεταβλητής στην οποία γίνεται η εκχώρηση τιμής. Εμφάνιση σφάλματος γίνεται αν δεν είναι μεταβλητή αλλά σταθερά, όπου δεν επιτρέπεται εκχώρηση τιμής σε σταθερά. Επίσης ελέγχεται αν υπάρχει η μεταβλητή. Έπειτα ελέγχεται αν πρόκειται για εκχώρηση μίας τιμής σε μεταβλητή ( Κόστος <- 0, Τιμή[i] <- 10 ) ή εκχώρηση αποτελέσματος μαθηματικής πράξης μεταξύ

33 μεταβλητών/αριθμών/πινάκων ( Κόστος <- Τιμή + 10 ). Και στις δύο περιπτώσεις γίνεται πρώτα έλεγχος για μην αναγνωρίσιμες μεταβλητές και για σημασιολογικά σφάλματα όπως ασυμφωνία τύπων. Αν για παράδειγμα προσπαθεί να γίνει εκχώρηση ενός χαρακτήρα σε μεταβλητή τύπου ακεραίου. Εκφράσεις: "^[a za Zα ωα ΩΆΈΉΊΌΎΏάέήίόύώς_0 9]+(\\[[a za Z,]+\\])*" : ταιριάζει με μεταβλητές και πίνακες. "( )?< ( )?": ταιριάζει με τον τελεστή ανάθεσης ( <- ) Αφού χρησιμοποιηθούν οι παραπάνω εκφράσεις για την μεταβλητή που γίνεται η ανάθεση έπειτα ακολουθούν οι εκφράσεις για τις τιμές/μεταβλητές. (^([0 9])+$) ή : ταιριάζει μόνο τους αριθμούς ακεραίους (^[0 9])+(\\.)?([0 9])+$) ή : ταιριάζει δεκαδικούς αριθμούς (^\'([a za Zα ωα ΩΆΈΉΊΌΎΏάέήίόύώς0 9])*\'$) ή : ταιριάζει χαρακτήρες (^[a za Zα ωα ΩΆΈΉΊΌΎΏάέήίόύώς_0 9]+(\\[[a za Z,]+\\])*$): μεταβλητές/πίνακες bool ifcmdfirstrule(string codeline, int line) Συνάρτηση για την ανάλυση της εντολής ΑΝ συνθήκη ΤΟΤΕ αλλά όπως επίσης και για την ΑΝ συνθήκη1 ΚΑΙ συνθήκη2 ΤΟΤΕ. Η διαδικασία σε αυτήν την συνάρτηση πάει ως εξής: Σε πρώτη φάση και εφόσον είναι συντακτικά σωστή όλη η γραμμή κώδικα, ελέγχονται όλοι οι τελεστές σύγκρισης των συνθηκών. Σε περίπτωση που δεν είναι σωστός ο τελεστής σύγκρισης δημιουργείτε σφάλμα μη αναγνωρίσουμε τελεστή σύγκρισης. Έπειτα με την χρήση της κ.ε : ((α ά Ά Α)(ν Ν)) ((κ Κ)(α Α)(ι Ι)) ((τ Τ)(ο ό Ό Ο)(τ Τ)(ε Ε)) αφαιρούνται οι εντολές που υπάρχουν στην γραμμή και μένουν μόνο οι συνθήκες όπου με χρήση νέας κ.ε εξάγονται σε μια λίστας όπου κάθε λίστα έχει 2 string μέσα. Στο ένα έχει το αριστερό μέρος της συνθήκης και στο άλλο το δεξιό. Οπότε μετά για κάθε συνθήκη και αφού υπάρχουν σε μορφή λίστας γίνεται ο περεταίρω έλεγχος για τον αν είναι δηλωμένες μεταβλητές, τον τύπο που γίνεται η σύγκριση κλπ.

34 bool elsecmdfirstrule(string codeline, int line) Εκτελείται όταν στο codeline υπάρχει η εντολή ΑΛΛΙΩΣ. Κάνει 2 ελέγχους. Αν καλεστεί και δεν έχει περαστεί (παρσαριστεί) η εντολή ΑΝ τότε υπάρχει σφάλμα ή αν οι συνολικές ΑΝ που είναι ανοιχτές είναι ίσες με τις ΑΝ που έχουν κλείσει τότε σημαίνει πως η εντολή ΑΛΛΙΩΣ δεν είναι μέσα σε εντολή ΑΝ, οπότε δημιουργείτε νέο σφάλμα. Σε αντίθετη περίπτωση και αφού δεν ισχύει τίποτα από τα παραπάνω κάνε ένα τελευταίο έλεγχο για το αν έχει ήδη περάσει από εντολή αλλιώς στην ίδια ΑΝ, που επίσης είναι λάθος.

35 bool elsecmdsecondrule(string codeline, int line); Σαν συνέχεια της προηγούμενης αν ταιριάζει ακριβώς με την εντολή ΑΛΛΙΩΣ και δεν υπάρχει κάτι άλλο δίπλα της συνεχίζεται η εκτέλεση κανονικά. Αν υπάρχει οτιδήποτε δημιουργείται συντακτικό σφάλμα. Ο έλεγχος για τη εξακρίβωση αν υπάρχει κάτι δίπλα από την εντολή γίνεται με την κ.ε :.* που σημαίνει οποιοσδήποτε χαρακτήρας εκτός του χαρακτήρα αλλαγής γραμμής. bool elseifcmdfirstrule(string codeline, int line); Γίνονται οι ίδιοι έλεγχοι όπως και στην περίπτωση της εντολής ΑΛΛΙΩΣ. bool elseifcmdsecondrule(string codeline, int line); Αυτή η συνάρτηση έχει ακριβώς την ίδια λογική και υλοποίηση με την συνάρτηση ifcmdfirstrule για τον λόγω ότι ισχύουν ακριβώς τα ίδια όσο αναφορά τους κανόνες σύνταξης και σημασιολογίας. Η μόνη διαφορά που υπάρχει είναι στην αρχική εντολή που είναι αντί της ΑΝ η ΑΛΛΙΩΣ_ΑΝ. bool endifcmdfirstrule(string codeline, int line) Εκτελείται όταν στο codeline υπάρχει η εντολή ΤΕΛΟΣ_ΑΝ Ελέγχει αν δεν έχει δηλωθεί εντολή ΑΝ οπότε και εμφανίζει σχετικό σφάλμα ή αν οι εντολές ΑΝ που ανοίχτηκαν είναι ίσες με τις εντολές ΤΕΛΟΣ_ΑΝ (οι αν που έκλεισαν δηλ.) που σημαίνει ότι δεν υπάρχει εντολή ΑΝ ανοιχτή, πράγμα το οποίο δημιουργεί σφάλμα. bool endifcmdsecondrule(string codeline, int line) Σαν συνέχεια της προηγούμενης αν ταιριάζει ακριβώς με την εντολή ΤΕΛΟΣ_ΑΝ και δεν υπάρχει κάτι άλλο δίπλα της συνεχίζεται η εκτέλεση κανονικά. Αν υπάρχει οτιδήποτε δημιουργείται συντακτικό σφάλμα. Παρόμοια υλοποίηση με την εντολή ΑΛΛΙΩΣ. bool switchcmdfirstrule(string codeline, int line) Εκτελείται όταν στο codeline περιέχεται η εντολή ΕΠΙΛΕΞΕ. Αρχικά ελέγχεται για την ορθότητα της σύνταξης και στην συνέχεια για τον αν έχει δηλωθεί η μεταβλητή/σταθερά που έρχεται μετά την εντολή ως παράμετρος επιλογής.

36 bool casecmdfirstrule(string codeline, int line) Εκτελείται όταν βρεθεί η εντολή ΠΕΡΙΠΤΩΣΗ ή ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ ως συνέχεια της εντολής ομής επιλογής ΕΠΙΛΕΞΕ. Αρχικά ελέγχεται αν έχει περαστεί εντολή ΕΠΙΛΕΞΕ. Αν δεν ισχύει το παραπάνω ελέγχει αν είναι η εντολή ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ και επιπλέον αν έχει ήδη περαστεί αυτή η εντολή. Που σημαίνει ότι στην ίδια δομή επιλογής υπάρχουν περισσότερες από μία ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ εντολές. Σε περίπτωση που δεν ισχύει τίποτα από τα παραπάνω, που σημαίνει ότι η εντολή είναι η ΠΕΡΙΠΤΩΣΗ, ελέγχει αν έχει περάσει ήδη η εντολή ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ. Αν ισχύει δημιουργείται σφάλμα ότι έχει γίνεται χρήση της εντολής ΠΕΡΙΠΤΩΣΗ ενώ έχει ήδη δηλωθεί η εντολή ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ. bool casecmdsecondrule(string codeline, int line) Εκτελείται μετά από τον έλεγχο της προτεραιότητας των εντολών και κάνει συντακτική και σημασιολογική ανάλυση για τις εντολές «ΠΕΡΙΠΤΩΣΗ λίστα-τιμών» αλλά και για την εντολή «ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ». Σε περίπτωση που είναι η πρώτη «σπάει» την λίστα τιμών με βάση το κόμμα (,) και για κάθε μία τιμή ελέγχει αν είναι εντολές, αν είναι ίδιου τύπου με την μεταβλητή που έχει δοθεί ως παράμετρος επιλογής στην εντολή ΕΠΙΛΕΞΕ και αναλόγως δημιουργεί τα ανάλογα σφάλματα. bool endcasecmdfirstrule(string codeline, int line) Η εντολή ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ. Ελέγχει αν δεν έχει δηλωθεί καθόλου εντολή ΕΠΙΛΕΞΕ εμφανίζοντας το σχετικό σφάλμα. Γεγονός το οποίο σημαίνει ότι προσπαθεί να κλείσει μία δομή επιλογής (ΕΠΙΛΕΞΕ) που δεν έχει καν ανοιχτεί. bool endcasecmdsecondrule(string codeline, int line) Ως συνέχεια της firstrule ελέγχει αν υπάρχει άγνωστη εντολή δίπλα από την εντολή ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ. Αλλιώς ταιριάζει ακριβώς που σημαίνει ότι είναι συντακτικά σωστή. bool whilecmdfirstrule(string codeline, int line) Εκτελείται για την εντολή ΟΣΟ συνθήκη ΕΠΑΝΕΛΑΒΕ. Αρχικά ελέγχεται αν είναι συντακτικά αποδεκτή η γραμμή κώδικα, αν είναι τότε για κάθε συνθήκη εξάγονται σε μία λίστα οι τελεστές και ελέγχονται αν είναι αποδεκτή. Αν δεν είναι δημιουργείται

37 λογικό σφάλμα. Έπειτα αφαιρούνται με την χρήση κ.ε οι εντολές ΟΣΟ και ΕΠΑΝΕΛΑΒΕ από το codeline ούτως ώστε να μείνουν μόνο οι συνθήκες για συντακτική και σημασιολογική ανάλυση. Γίνεται ένα «σπάσιμο» των συνθηκών με βάση τον τελεστή σύγκρισης ώστε να εξαχθούν οι μεταβλητές του που χρησιμοποιούνται στην κάθε συνθήκη. Εκεί γίνεται για κάθε μεταβλητή έλεγχος για την ύπαρξη των μεταβλητών και την σωστή σύγκριση μεταξύ τους ως προς τον τύπο τους. bool endwhilecmdfirstrule(string codeline, int line) Εκτελείται για την εντολή ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ. Εδώ γίνεται αρχικά έλεγχος αν έχει περαστεί η εντολή ΟΣΟ ή η ΓΙΑ. Αυτό γίνεται επειδή η εντολή αυτή είναι καθορίζει το τέλος επανάληψης και της εντολής ΟΣΟ αλλά και της εντολής ΓΙΑ. Οπότε αν καμία από τις δύο δεν έχει περαστεί πριν την εκτέλεση της δημιουργείται συντακτικό σφάλμα για εσφαλμένη χρήση της εντολής. bool endwhilecmdsecondrule(string codeline, int line) Ελέγχει συντακτικά την εντολή ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ για μη αναγνωρίσιμες εντολές ή λέξεις δηλωμένες δίπλα σ αυτήν την εντολή. Ίδια υλοποίηση με τις εντολές ΤΕΛΟΣ_ΑΝ, ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ κλπ. bool dostartcmdfirstrule(string codeline, int line) Η εντολή ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ, όπως είναι στην c η εντολή do.while. Η συνάρτηση αναλαμβάνει την συντακτική ανάλυση της εντολής όπου η υλοποίηση είναι παρόμοια με αυτήν των εντολών ΤΕΛΟΣ_ΑΝ, ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ, ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ. bool untilcmdfirstrule(string codeline, int line) Εκτελείται όταν στο codeline υπάρχει η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ. Η συνάρτηση χρειάζεται να κάνει μόνο έναν έλεγχο ώστε να διαπιστωθεί αν δεν έχει περαστεί καθόλου εντολή ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ. Αυτό σημαίνει σφάλμα για εσφαλμένη χρήστης της εντολής. bool untilcmdsecondrule(string codeline, int line)

38 Η ΜΕΧΡΙΣ_ΟΤΟΥ έχει παρόμοια υλοποίηση με την εντολή ΟΣΟ γιατί και οι 2 περιέχουν συνθήκες. Οπότε γίνεται έλεγχος των συγκριτών, και έπειτα των συνθηκών και των μεταβλητών κ.ο.κ. bool forcmdfirstrule(string codeline, int line) Η συνάρτηση που εκτελείται για την εντολή ΓΙΑ τιμή ΑΠΟ αρχή ΜΕΧΡΙ τέλος. Αρχικά γίνεται έλεγχος για την συντακτική ορθότητα της εντολής. Αφού περάσει, γίνεται διαχωρισμός της εντολής με βάση το κενό όπου το codeline μετατρέπεται πλέον σε λίστα από strings. Πρακτικά το πρώτο στοιχείο του vector (list.at(0) θα είναι η εντολή ΓΙΑ. Στο δεύτερο περιέχεται η μεταβλητή που χρησιμοποιείται στην εντολή ως μετρητής. Το τρίτο στοιχείο είναι η εντολή ΑΠΟ και στο 4 είναι η τιμή εκκίνησης της δομής. Στο 5 και στο 6 βρίσκονται η εντολή ΜΕΧΡΙ και τιμή τερματισμού αντίστοιχα. Σύμφωνα με την παραπάνω λίστα ξεκινάει μία διαδικασία ελέγχου για την μεταβλητή, την τιμή εκκίνησης και τερματισμού. Η μεταβλητή ελέγχεται για το αν έχει δηλωθεί και μάλιστα πρέπει να είναι απαραίτητα ακεραίου τύπου ειδάλλως δημιουργείται σημασιολογικό σφάλμα «μη επιτρεπόμενος τύπος μεταβλητής ή σταθεράς ως μετρητή στην εντολή ΓΙΑ». Έπειτα γίνεται έλεγχος της εντολής ΜΕ ΒΗΜΑ αν υπάρχει στο codeline ως προς την ορθότητα της. Τέλος ελέγχονται οι τύποι των τιμών εκκίνησης και τερματισμού της εντολής ΓΙΑ ότι είναι ακέραιοι. Εκτέλεση Με την ολοκλήρωση της συντακτικής ανάλυσης του κώδικα και αφού δεν υπάρχει κανένα λογικό, συντακτικό ή σημασιολογικό σφάλμα, η εκτέλεση περνάει στην φάση της μετάβασης από κώδικα «ΓΛΩΣΣΑ» σε κώδικα Pascal. Αυτή η διαδικασία εκτελείται είτε ο χρήστης πατήσει το κουμπί Μεταγλώττιση είτε το κουμπί Εκτέλεση. Η διαφορά είναι ότι στην μεταγλώττιση η εκτέλεση σταματάει αφού ολοκληρωθεί η μετατροπή, χωρίς να συνεχίζει στην κλήση του Compiler της Pascal για την δημιουργία του εκτελέσιμου. Αφού δεν βρεθεί κάποιο σφάλμα ο CodeParser καλεί μία δικιά του εσωτερική διαδικασία, την runcompiler. void CodeParser::runCompiler(SourceCode *sourcecode)

39 Ξανά διαβάζει όλα τα vector που περιέχουν μέσα τις εντολές «ΓΛΩΣΣΑΣ» και για κάθε μία εντολή καλεί τον Compiler (GLL έναν Controller στην ουσία) δίνοντας του την κάθε γραμμή κώδικα ως παράμετρο στην συνάρτηση preparepascalcommand. Με την σειρά του μετά ο Compiler και αναγνωρίζοντας ποια εντολή περιέχεται κάθε φορά στο codeline, εκτελεί τις αντίστοιχες συναρτήσεις convert για κάθε τύπο εντολής. Ως επιστρεφόμενη τιμή ο Compiler περιμένει την converted ποια εντολή σε μορφή string, την οποία με την σειρά του οφείλει να αποθηκεύσει στο pascalcmds ένα vector από strings που «κρατάει» όλες τις εντολές Pascal κάθε φορά που εκτελείται το πρόγραμμα. Με το που ολοκληρωθεί η διαδικασία της μετατροπής και αφού έχει γεμίσει η λίστα με τις εντολές Pascal, όλη η εκτέλεση επιστρέφεται στην main. Eκεί διαβάζεται το vector με τις εντολές και δημιουργείται ένα προσωρινό string με όνομα finalpas όπου γεμίζει με τις γραμμές κώδικα Pascal. Γίνεται καθαρισμός των προσωρινών αρχείων (files/pascal.exe & files/pascal.o) από προηγούμενη εκτέλεση και αποθηκεύεται το string finalpos σε ένα προσωρινό αρχείο pascal.pas στον φάκελο files. Έπειτα με την βοήθεια του system καλούμε τον Compiler της Pascal δίνοντας του ως παράμετρο το αρχείο που θέλουμε να μεταγλωττίσει και ανακατεύθυνση τα errors σ ένα αρχείο files/error.log. Αφού εκτελεστεί η παραπάνω εντολή με αυτές τις παραμέτρους έχει δημιουργηθεί μέσα στον φάκελο files ένα αρχείο pascal.o & το εκτελέσιμο pascal.exe. Οπότε με την χρήση και πάλι της system κάνουμε «κλήση» του εκτελέσιμου και εμφανίζονται τα αποτελέσματα σε DOS παράθυρο, όπως αν τρέχαμε το αρχείο με ένα Virtual Pascal Compiler.

40 Επίλογος Για να κλείσω θέλω να πω λίγα πράγματα σχετικά με αυτή την εργασία. Για να είμαι ειλικρινής όταν ανέλαβα την Πτυχιακή και γνωρίζοντας μερικά πράγματα για την «ΓΛΩΣΣΑ» θεώρησα ότι θα είναι εύκολη υπόθεση. Σε αντίθεση όμως με αυτά που νόμιζα ήταν μια πολύ δύσκολη εργασία με αρκετές δεκάδες ατελείωτες ώρες αδιεξόδων. Στην πραγματικότητα όμως αυτή η εργασία με βοήθησε στο να ξαναθυμηθώ την C++, αλλά και μου αύξησε την όρεξη να ασχοληθώ πιο εκτενέστερα με τους Compilers και το Parsing. Με αφορμή λοιπόν αυτήν την Πτυχιακή ευελπιστώ να ασχοληθώ περισσότερο με την βελτίωση αυτής της εφαρμογής σε πολύ μεγαλύτερο επίπεδο, ώστε να κατασκευαστεί ένας κανονικός Compiler για την «ΓΛΩΣΣΑ», ή και ότι άλλο προκύψει! Για όποιον θέλει και νομίζει ότι είναι ενδιαφέρον θέμα να ασχοληθεί, το project είναι under version στο : svn://bouzikas.com/home/bouzikas/myrepo/ptyxiaki

41 Βιβλιογραφία Μεταγλωττιστές Γλωσσών προγραμματισμού: Θεωρία & Πράξη ( Κωνσταντίνος Ε. Λάζος, Παναγιώτης Θ. Κατσαρός, Ζαφείρης Καραίσκος ) DEELX Regular Expression Laboratory ( Official Regular expression Engine at ) Cplusplus Official Website with C++ Documentation ( ) Free Pascal Online Documentation ( - Also Downloaded Free Compiler Release: Intel/i386 ) Οπτικός Προγραμματισμός ( Σημειώσεις Θεωρίας ρ. Σπύρος Καζαρλής ) Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ( Αθηνά Βακάλη, Ηλίας Γιαννόπουλος, Νέστωρ Ιωαννίδης, Χρήστος Κοιλιάς )

42

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

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

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

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

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ 1) Πότε χρησιμοποιείται η δομή επανάληψης

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

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ ) Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ. 147 159) Για τις γλώσσες προγραμματισμού πρέπει να έχουμε υπόψη ότι: Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό, δίνοντας ιδιαίτερη

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

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2016-2017 Πάτρα 3/5/2017 Ονοματεπώνυμο:.. Α1. Να γράψετε στην κόλλα σας τον αριθμό

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

Αλγόριθμοι Αναπαράσταση αλγορίθμων Η αναπαράσταση των αλγορίθμων μπορεί να πραγματοποιηθεί με:

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Καθηγητής Πληροφορικής ΠΕ19 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 6 ο : ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ Η έννοια του προγράμματος

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

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

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

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής)

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

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

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ 1 ο Α. Δίνεται η εντολή εκχώρησης: τ κ < λ Ποιες από τις παρακάτω προτάσεις είναι σωστές και ποιες λάθος. Να δικαιολογήσετε

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

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός... 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Διάρκεια 3 ώρες Στοιχεία Μαθητή: Όνομα... Επώνυμο... Βαθμός... 2 Θεμα Α (30%) Α1 ΣΩΣΤΟ - ΛΑΘΟΣ 1. Ένα υποπρόγραμμα δεν μπορεί να κληθεί περισσότερες

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012 ΘΕΜΑ Α Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις: 1. Κάθε βρόγχος που υλοποιείται με την εντολή Για μπορεί να

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

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

ΜΑΗΣ 2007 - ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

ΜΑΗΣ 2007 - ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ ΜΑΗΣ 2007 - ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ ΟΔΗΓΙΕΣ: ΝΑ ΑΠΑΝΤΗΣΕΤΕ ΣΕ ΟΛΕΣ ΤΙΣ ΕΡΩΤΗΣΕΙΣ. Το εξεταστικό δοκίμιο αποτελείται από δύο Ενότητες Α και Β. ΕΝΟΤΗΤΑ Α - Αποτελείται από δέκα (10) ερωτήσεις. Κάθε ορθή απάντηση

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

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

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

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

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

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

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

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Εργαστήριο 2: Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραμματισμού

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

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

Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος

Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος Ενότητες βιβλίου: 6.3, 7.1-7.6, 7.10, 8.1 Ώρες διδασκαλίας: 2 Φυσικές

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

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου Ορισµοί κεφαλαίου Αλγόριθµος είναι µια πεπερασµένη σειρά ενεργειών, αυστηρά καθορισµένων και εκτελέσιµων σε πεπερασµένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήµατος. Σηµαντικά σηµεία κεφαλαίου Κριτήρια

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ. Πως γίνεται ο ορισμός μιας διαδικασίας; Να δοθούν σχετικά παραδείγματα. ΑΡΧΗ Εντολές ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

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

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

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL ΓΕΝΙΚΗ ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ Program Ονομα_προγραμματος; «πρόγραμμα» Πρόγραμμα 1 Program Lesson1_Program1; Write('Hello World!!!'); {σχόλια} Επεξήγηση Προγράμματος Program Lesson1_Program1;

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

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή. ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΚΑΙ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΚΥΡΙΑΚΗ 23/04/2017 - ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΕΠΠ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΠΤΑ ( 7) ΘΕΜΑ Α Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν γράφοντας στο

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

ΦΡΟΝΤΙΣΤΗΡΙΟ ΦΑΣΜΑ 21/4/2013

ΦΡΟΝΤΙΣΤΗΡΙΟ ΦΑΣΜΑ 21/4/2013 Γ ΤΑΞΗ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΘΕΜΑ Α [40 μόρια] α) Να επιλέξτε το γράμμα Σ, αν μια πρόταση είναι σωστή και

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

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

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ 1 (Α) Σημειώστε δίπλα σε κάθε πρόταση «Σ» ή «Λ» εφόσον είναι σωστή ή λανθασμένη αντίστοιχα. 1. Τα συντακτικά λάθη ενός προγράμματος

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

Εγχειρίδιο Αναφοράς της Γλώσσας. Μανώλης Κιαγιάς, MSc

Εγχειρίδιο Αναφοράς της Γλώσσας. Μανώλης Κιαγιάς, MSc Εγχειρίδιο Αναφοράς της Γλώσσας Μανώλης Κιαγιάς, MSc 21/11/2009 ii Κάθε γνήσιο αντίτυπο φέρει την υπογραφή του συγγραφέα: 1η Έκδοση Χανιά, 21/11/2009 Copyright 2009 Μανώλης Κιαγιάς Το Έργο αυτό διατίθεται

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

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

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΕΠΑΛ ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΕΠΑΛ ΘΕΜΑ Α Α.1 Να χαρακτηρίσετε σωστή (Σ) ή λανθασμένη (Λ) καθεμία από τις παρακάτω προτάσεις (Μονάδες 10) 1. Ένας αλγόριθμος μπορεί να έχει άπειρα βήματα

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

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

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

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

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 6 η Βρόχοι Επανάληψης Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

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

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

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

Α1. Να χαρακτηρίσετε καθεμία από τις παρακάτω προτάσεις με τη λέξη Σωστή ή με τη λέξη Λάθος.

Α1. Να χαρακτηρίσετε καθεμία από τις παρακάτω προτάσεις με τη λέξη Σωστή ή με τη λέξη Λάθος. ΜΑΘΗΜΑ / ΤΑΞΗ : ΑΕΠΠ / Γ- ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ (ΘΕΡΙΝΑ) ΗΜΕΡΟΜΗΝΙΑ: 08-11-2015 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι.ΜΙΧΑΛΕΑΚΟΣ- Α.ΚΑΤΡΑΚΗ - Π.ΣΙΟΤΡΟΠΟΣ ΘΕΜΑ Α Α1. Να χαρακτηρίσετε καθεμία από τις παρακάτω προτάσεις

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

Μάριος Αγγελίδης

Μάριος Αγγελίδης Δομή Επανάληψης Ενότητες βιβλίου: 2.4.5, 8.2, 8.2.1, 8.2.2, 8.2.3 Ώρες διδασκαλίας: 5 Η δομή επανάληψης χρησιμοποιείται όταν έχουμε μία ομάδα εντολών που θέλουμε να εκτελεστούν πολλές φορές. Υπάρχουν τρείς

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΓΛΩΣΣΟΜΑΘΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΓΛΩΣΣΟΜΑΘΕΙΑ Καλλιόπη Μαγδαληνού ΕΠΙΚΕΦΑΛΙΔΑ ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΗΛΩΣΕΙΣ ΣΤΑΘΕΡΩΝ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ πρόγραμμα τεστ σταθερές π = 3.14 μεταβλητές πραγματικές : εμβαδό, ακτίνα αρχή

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

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

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

Γενικές εξετάσεις 2014 Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον Τεχνολογική Κατεύθυνση

Γενικές εξετάσεις 2014 Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον Τεχνολογική Κατεύθυνση Φροντιστήρια δυαδικό 1 ΦΡΟΝΤΙΣΤΗΡΙΑ δυαδικό Γενικές εξετάσεις 2014 Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον Τεχνολογική Κατεύθυνση Τα θέματα επεξεργάστηκαν οι καθηγητές των Φροντιστηρίων «δυαδικό»

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014 ΘΕΜΑ 1 Ο Α. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις και δίπλα τη λέξη Σωστό, αν είναι

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

7. Βασικά στοιχεία προγραμματισμού

7. Βασικά στοιχεία προγραμματισμού 7. Βασικά στοιχεία προγραμματισμού 146 Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον Εισαγωγή Κάθε γλώσσα προγραμματισμού, όπως αναφέρθηκε, έχει το δικό της λεξιλόγιο και τα προγράμματα της ακολουθούν

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

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888 ΕΡΩΤΗΣΕΙΣ 1. Να αναφέρετε μερικά από τα ιδιαίτερα χαρακτηριστικά της Pascal. 2. Ποιο είναι το αλφάβητο της Pascal; 3. Ποια είναι τα ονόματα-ταυτότητες και σε τι χρησιμεύουν; 4. Σε τι χρησιμεύει το συντακτικό

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

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης ΠΕΡΙΕΧΟΜΕΝΑ Εντολές επιλογής Εντολές επανάληψης Εισαγωγή Στο προηγούμενο κεφάλαιο αναπτύξαμε προγράμματα, τα οποία ήταν πολύ απλά και οι εντολές των οποίων εκτελούνται η μία μετά την άλλη. Αυτή η σειριακή

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

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

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C) Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C) ΚΑΤΑΛΟΓΟΣ ΕΡΩΤΗΣΕΩΝ ΕΡΩΤΗΣΕΙΣ ΕΙ ΙΚΩΝ ΓΝΩΣΕΩΝ (γλώσσα προγραµµατισµού

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ 2 ο ΣΕΤ ΑΣΚΗΣΕΩΝ Οι ασκήσεις αυτού του φυλλαδίου καλύπτουν τα παρακάτω θέματα: Συναρτήσεις (κεφάλαιο Functions)

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

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

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2012 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ: ΚΑΤΕΥΘΥΝΣΗ: ΜΑΘΗΜΑ: ΘΕΜΑ Α Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ (2ος Κύκλος) ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ηµεροµηνία: Κυριακή 22 Απριλίου 2012 ΕΚΦΩΝΗΣΕΙΣ Α1. Να γράψετε στο τετράδιό

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 7 ο Τι πρέπει να έχουμε υπ όψιν μας για την επιλογή της κατάλληλης γλώσσας προγραμματισμού;

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 7 ο Τι πρέπει να έχουμε υπ όψιν μας για την επιλογή της κατάλληλης γλώσσας προγραμματισμού; Τι πρέπει να έχουμε υπ όψιν μας για την επιλογή της κατάλληλης γλώσσας προγραμματισμού; Κάθε γλώσσα σχεδιάζεται για συγκεκριμένο σκοπό, δίνοντας έμφαση σε ορισμένα χαρακτηριστικά σε βάρος κάποιων άλλων.

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 4 η Τελεστές Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II Strings Η κλάση String είναι προκαθορισμένη κλάση της Java που μας επιτρέπει να χειριζόμαστε αλφαριθμητικά. Ο τελεστής + μας επιτρέπει

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

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα. ΚΕΦΑΛΑΙΟ 7 ο 1. Επιλογή της κατάλληλης γλώσσας προγραµµατισµού Εκατοντάδες γλώσσες προγραµµατισµού χρησιµοποιούνται όπως αναφέρθηκε σήµερα για την επίλυση των προβληµάτων µε τον υπολογιστή, τη δηµιουργία

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

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

ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1. ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦ. ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ Καράκιζα Τσαμπίκα 1. ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦ. 2ο-8ο:ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εισαγωγή στην εντολή «για» (2.4.5, 8.2.3) 2. ΤΑΞΗ: Γ Γενικού Λυκείου (τεχνολογική

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

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

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

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

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

επιµέλεια Θοδωρής Πιερράτος Βασικές έννοιες προγραµµατισµού Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως,

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝΩ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝΩ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ ΘΕΜΑ 1 ο : Α. Να αναφέρετε ονομαστικά τις βασικές λειτουργίες (πράξεις) επί των δομών δεδομένων. Μονάδες 8 Β. Στον

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

ÔÏÕËÁ ÓÁÑÑÇ ÊÏÌÏÔÇÍÇ

ÔÏÕËÁ ÓÁÑÑÇ ÊÏÌÏÔÇÍÇ ΤΑΞΗ: ΚΑΤΕΥΘΥΝΣΗ: ΜΑΘΗΜΑ: ΘΕΜΑ Α Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ (2ος Κύκλος) ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ηµεροµηνία: Παρασκευή 25 Απριλίου 2014 ιάρκεια Εξέτασης: 3 ώρες ΕΚΦΩΝΗΣΕΙΣ

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

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΠΑΝΕΛΛΑ ΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ ΚΑΙ HMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α A ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙ ΙΚΟΤΗΤΑΣ ΟΜΑ Α Β ) ΣΑΒΒΑΤΟ 28 ΜΑΪΟΥ 2016 ΕΞΕΤΑΖΟΜΕΝΟ

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

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

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι Μεταγλωττιστές Εργαστήριο 9 Σημασιολογική Ανάλυση Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2016-2017 Σύνταξη και Σημασιολογία Σε οποιαδήποτε γλώσσα (προγραμματισμού ή μη) υπάρχουν δύο βασικές

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΟ 2 2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου 2.4.1 Δομή ακολουθίας ΚΕΦΑΛΑΙΟ 7 7.1 7.9 Σταθερές (constants): Προκαθορισμένες τιμές που παραμένουν

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

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α Σπυρόπουλος Α Μπουντουβής Αθήνα, 2015 v13_061015 Στον οδηγό αυτό θα χρησιμοποιηθούν

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

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ Μάθημα 7 - Υποπρογράμματα Εργαστήριο 11 Ο TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ Βασικές Έννοιες: Υποπρόγραμμα, Ανάλυση προβλήματος, top down σχεδίαση, Συνάρτηση, Διαδικασία, Παράμετρος, Κλήση συνάρτησης, Μετάβαση

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

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές Μεταβλητές 2 Δήλωση μεταβλητών Η δήλωση (declaration) πληροφορεί το μεταγλωττιστή για το όνομα και

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

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Βασικές αλγοριθμικές δομές Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Βασικές αλγοριθμικές δομές Βασικές Αλγοριθμικές Δομές 2 Εισαγωγή Οι αλγοριθμικές δομές εκφράζουν διαφορετικούς τρόπους γραφής ενός αλγορίθμου.

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

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

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

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΗΜΕΡΗΣΙΩΝ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΗΜΕΡΗΣΙΩΝ ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΗΜΕΡΗΣΙΩΝ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΤΕΤΑΡΤΗ 29 ΜΑΪΟΥ 2013 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014 Επιμέλεια: Ομάδα Διαγωνισμάτων από το Στέκι των Πληροφορικών Θέμα Α A1. Να γράψετε στο τετράδιό σας τους

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

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

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2012 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ: ΚΑΤΕΥΘΥΝΣΗ: ΜΑΘΗΜΑ: ΘΕΜΑ Α Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ (2ος Κύκλος) ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ηµεροµηνία: Κυριακή 22 Απριλίου 2012 ΕΚΦΩΝΗΣΕΙΣ Α1. Να γράψετε στο τετράδιό

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

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

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

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Εργαστήριο 6 Εντολές Επανάληψης Η δομή Επιλογής στη PASCAL H δομή Επανάληψης στη PASCAL. Ρεύμα Εισόδου / Εξόδου.. Ρεύμα Εισόδου / Εξόδου. To πρόγραμμα γραφικών gnuplot. Γραφικά στη PASCAL. Σκοπός 6.1 ΕΠΙΔΙΩΞΗ

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

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD) Η Γλώσσα Pascal Χαρακτηριστικά Τύποι Δεδοµένων Δοµή προγράµµατος 1. Βασικές έννοιες Χαρακτηριστικά της γλώσσας Pascal Γλώσσα προγραµµατισµού Συντακτικό Σηµασιολογία Αλφάβητο της γλώσσας Pascal (Σύνολο

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

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

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Εργαστήριο 4: 4.1 Η Δομή Ελέγχου if Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Γενική Μορφή: Παρατηρήσεις:

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ ΘΕΜΑ 1 ο Α. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις 1-5 και δίπλα τη λέξη Σωστό,

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

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

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

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

ΑΡΧΗ 2ΗΣ ΣΕΛΙΔΑΣ Γ Α... Β

ΑΡΧΗ 2ΗΣ ΣΕΛΙΔΑΣ Γ Α... Β ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΠΡΟΣΟΜΟΙΩΣΗ ΑΠΟΛΥΤΗΡΙΩΝ ΕΞΕΤΑΣΕΩΝ Γ' ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΔΕΥΤΕΡΑ 11 ΑΠΡΙΛΙΟΥ 2011 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

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

ττιαογή και επανάληψη

ττιαογή και επανάληψη Κεφάλαιο 8 ττιαογή και επανάληψη 8.1 Γενικός διδακτικός σκοπός Ο γενικός σκοπός του κεφαλαίου είναι να καταστούν ικανοί οι μαθητές να συντάσσουν και να εκτελούν σε δομημένη γλώσσα προγραμματισμού προγράμματα

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

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

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

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

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΠΑΡΑΣΚΕΥΗ 6 ΙΟΥΝΙΟΥ 2014 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙ- ΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ

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

Δομημένος Προγραμματισμός

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

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

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

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

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

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C Επαναληπτικός βρόχος καλείται το τμήμα του κώδικα μέσα σε ένα πρόγραμμα, το οποίο εκτελείται από την αρχή και επαναλαμβάνεται

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

ΠΡΟΓΡΑΜΜΑ Κύριο ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α, Β, Γ ΑΡΧΗ ΙΑΒΑΣΕ Α, Β, Γ ΚΑΛΕΣΕ ιαδ1(α, Β, Γ) ΓΡΑΨΕ Α, Β, Γ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΡΟΓΡΑΜΜΑ Κύριο ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α, Β, Γ ΑΡΧΗ ΙΑΒΑΣΕ Α, Β, Γ ΚΑΛΕΣΕ ιαδ1(α, Β, Γ) ΓΡΑΨΕ Α, Β, Γ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΡΙΤΗ 30 MAΪΟΥ 2006 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος Κεφάλαιο 10 Υποπρογράμματα 1 10.1 Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.

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

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ ÏÅÖÅ

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ ÏÅÖÅ 1 Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ 1 ο ΕΚΦΩΝΗΣΕΙΣ Α. Να γράψετε στην κόλλα σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1 5 και δίπλα τη λέξη

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

Ανακτήθηκε από την ΕΚΠΑΙΔΕΥΤΙΚΗ ΚΛΙΜΑΚΑ edu.klimaka.gr ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ

Ανακτήθηκε από την ΕΚΠΑΙΔΕΥΤΙΚΗ ΚΛΙΜΑΚΑ edu.klimaka.gr ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΡΙΤΗ 30 MAΪΟΥ 2006 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΘΕΜΑ Α Α1. Να χαρακτηρίσετε καθεμιά από τις προτάσεις που ακολουθούν γράφοντας στο τετράδιό σας, δίπλα από τον αριθμό κάθε πρότασης, το γράμμα Σ, αν αυτή

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