Σύγχρονες γλώσσες προγραμματισμού

Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr

Οι υπολογιστές και ο προγραμματισμός τους

Καλώς ήρθατε

Σύγχρονες γλώσσες προγραμματισμού H/Y

Τι περιλαμβάνει το μάθημα

  1. Οι υπολογιστές και ο προγραμματισμός τους
  2. Το περιβάλλον της Visual Basic
  3. Υπολογισμοί με μεταβλητές, είσοδος και έξοδος
  4. Τελεστές σύγκρισης, λογικής και επαναλήψεις
  5. Προγραμματισμός με συμβολοσειρές, αποφάσεις
  6. Πρόσθετες δομές ελέγχου: select, on error
  7. Ορισμός συναρτήσεων και διαδικασιών
  8. Συναρτήσεις και διαδικασίες της Visual Basic
  9. Βασικές αρχές αντικειμενοστρεφούς προγραμματισμού
  10. Διεπαφή χρήστη
  11. Ιδιότητες και μέθοδοι για υλοποίηση διεπαφών
  12. Μεταγλώττιση και εγκατάσταση προγραμμάτων
  13. Διαχείριση δεδομένων: σύνδεση με βάσεις δεδομένων, συλλογές αντικειμένων, πίνακες, αρχεία κειμένου, πολυμέσα
  14. Προγραμματισμός με εξαρτήματα, σύνδεση με άλλες εφαρμογές
  15. Προγραμματισμός στο διαδίκτυο
  16. Από τη Visual Basic στη Java

Τρόπος διδασκαλίας

Οι σημειώσεις

Υλικό και λογισμικό

Ιστορική ανασκόπηση

Χαρακτηριστικές αλγοριθμικές γλώσσες

Σε μια αλγοριθμική (imperative) γλώσσα το πρόγραμμα εκφράζει άμεσα τα βήματα που επιθυμούμε να εκτελέσει ο υπολογιστής.

Χαρακτηριστικές δηλωτικές γλώσσες

Σε μια δηλωτική (declarative) γλώσσα το πρόγραμμα εκφράζει τη δομή του προβλήματος που θέλουμε να επιλύσουμε. Η γλώσσα προγραμματισμού παρέχει τον κατάλληλο μηχανισμό ελέγχου ο οποίος χρησιμοποιώντας τη δομή που έχουμε ορίσει καταλήγει στο επιθυμητό αποτέλεσμα.

Γλώσσες βασισμένες στη λογική

Γλώσσες βασισμένες σε συναρτήσεις

Βασικά γλωσσικά εργαλεία

Προετοιμαστής/Διορθωτής (Editor)
Επιτρέπει τη συγγραφή και την αλλαγή του προγράμματος.
Προεπεξεργαστής (Preprocessor)
Επεξεργάζεται το πρόγραμμα εκτελώντας απλούς συμβολικούς μετασχηματισμούς και παράγει ένα αντίστοιχο πρόγραμμα. Χρησιμοποιείται σε συμβολικές γλώσσες, τη Fortran (Ratfor), τη C, και τη C++.
Συμβολομεταφραστής (Assembler)
Μετατρέπει τη συμβολική γλώσσα του επεξεργαστή σε γλώσσα μηχανής.
Μεταγλωττιστής (Compiler)
Μεταφράζει μια γλώσσα υψηλού επιπέδου σε γλώσσα επιπέδου μηχανής.
Διερμηνευτής (Interpreter)
Εκτελεί άμεσα ένα πρόγραμμα σε γλώσσα υψηλού επιπέδου.
Συνδέτης (Linker)
Συρράφει τμήματα ενός προγράμματος που έχουν μεταγλωττιστεί ξεχωριστά σε ένα συνεχές πρόγραμμα.
Φορτωτής (Loader)
Φορτώνει το πρόγραμμα στη μνήμη του επεξεργαστή διορθώνοντας αναφορές σε σχετικές θέσεις μνήμης. Συνήθως τμήμα του λειτουργικού συστήματος.
Αποσφαλματωτής (Debuger)
Επιτρέπει την εκτέλεση του προγράμματος βήμα-βήμα, την εξέταση και αλλαγή μεταβλητών του και γενικά ενέργειες που αποσκοπούν στην ανίχνευση λαθών που μπορεί να περιέχει το πρόγραμμα.
Διερμηνευτής (Interpreter)
Εκτελεί απευθείας τις εντολές του προγράμματος χωρίς ενδιάμεσο στάδιο μεταγλώττισης.

Η διεργασία του προγραμματισμού

Βιβλιογραφία

Το περιβάλλον της Visual Basic

Το περιβάλλον της Visual Basic

Το περιβάλλον υλοποίησης της Visual Basic έχει την παρακάτω μορφή:

Πως γράφουμε απλά προγράμματα

Για λόγους απλούστευσης, τα πρώτα προγράμματα που θα δούμε δεν αποτελούνται από φόρμες αλλά από ένα κύριο σώμα κώδικα. Για να υλοποιήσουμε τέτοια προγράμματα ακολουθούμε την παρακάτω διαδικασία:
  1. Όταν ξεκινήσει η Visual Basic επιλέγουμε τη δημιουργία "Standard EXE"
  2. Με το πλήκτρο F4 κλείνουμε το παράθυρο με τη φόρμα που εμφανίζεται.
  3. Από το μενού Project επιλέγουμε Add module και από τις επιλογές που εμφανίζονται "Module".
  4. Στο παράθυρο που εμφανίζεται στο Project - Properties, στην κατηφορία General επιλέγουμε ως Startup Object "Sub Main".

Το πρώτο μου πρόγραμμα

Το πρώτο πρόγραμμα έχει ως στόχο να εμφανίσει στην οθόνη το μήνυμα "hello, world". Έχει την παρακάτω μορφή:
Sub main()
    MsgBox "hello, world"
End Sub
Για να το εκτελέσουμε, πατάμε το πλήκτρο F5 και, αν δεν έχουμε κάνει κάποιο λάθος, θα δούμε στην οθόνη μας το παρακάτω αποτέλεσμα:

Μορφή του προγράμματος

Υπολογισμοί με μεταβλητές, είσοδος και έξοδος

Σταθερές

Εκτύπωση τιμών

Απλές πράξεις

Οι αριθμητικές τιμές της Visual Basic μπορούν να συνδυαστούν με τη χρήση των παρακάτω τελεστών (operands):
Πράξη Τελεστής της Visual Basic
Πρόσθεση +
Αφαίρεση -
Πολλαπλασιασμός *
Διαίρεση /
Υπόλοιπο ακέραιας διαίρεσης mod
Ύψωση σε δύναμη ^

Παραδείγματα

Μεταβλητές

Είσοδος στοιχείων

Ασκήσεις

Είσοδος έξοδος και υπολογισμοί

  1. Να γράψετε ένα πρόγραμμα που θα διαβάζει από το χρήστη την τιμή ενός προϊόντος με το ΦΠΑ και να τυπώνει την τιμή χωρίς το ΦΠΑ. Παράδειγμα της εκτέλεσης του πρόγραμματος:

Τελεστές σύγκρισης, λογικής και επαναλήψεις

Τελεστές σύγκρισης

Οι αριθμητικές τιμές της Visual Basic μπορούν να συγκριθούν με τη χρήση των παρακάτω τελεστών:
Σύγκριση Τελεστής της Visual Basic
Ίσο =
Διάφορο <>
Μικρότερο <
Μεγαλύτερο >
Μικρότερο ή ίσο <=
Μεγαλύτερο ή ίσο >=

Παραδείγματα

MsgBox 1 + 1 = 2	'  Εμφανίζει True
MsgBox 1 > 2		'  Εμφανίζει False
MsgBox 5 <> 5		'  Εμφανίζει False
MsgBox 1 <= 5		'  Εμφανίζει True
MsgBox 1 <= 1		'  Εμφανίζει True
MsgBox 1 <= 0		'  Εμφανίζει False

Βρόχοι με την εντολή do while

Βρόχοι με την εντολή loop while

Προσδιορισμός της συνθήκης με τη χρήση της Until

Λογικοί τελεστές

Τα λογικά αποτελέσματα στη Visual Basic μπορούν να συνδυαστούν με τη χρήση των παρακάτω λογικών τελεστών:
Λογική πράξη Τελεστής της Visual Basic
σύζευξη (and) (και) And
διάζευξη (or) (ή) Or
άρνηση (not) (όχι) Not
αποκλειστική διάζευξη (exclusive or) Xor
ισοδυναμία (equivalence) Eqv
συνεπαγωγή (implication) Imp

Παράδειγμα

Ο παρακάτω βρόχος μπορεί να αποτελεί τμήμα του προγράμματος ελέγχου ενός τραπεζικού μηχανήματος αυτομάτων συναλλαγών:
    Dim PIN As Integer
    Dim Tries As Integer
    
    Const CorrectPIN = 1234
    Const MaxTries = 4
    
    Tries = 0
    Do
        PIN = InputBox("Πληκτρολογήστε τον κωδικό εισόδου")
        Tries = Tries + 1
    Loop Until PIN = CorrectPIN Or Tries = MaxTries
Με τον προσδιορισμό Const μπορούμε να αντιστοιχούμε ονόματα σε σταθερές τιμές. Με τον τρόπο αυτό το πρόγραμμα διαβάζεται και συντηρείται ευκολότερα.

Λογικές τιμές

Ασκήσεις

Βρόχοι

  1. Να γράψετε ένα πρόγραμμα που να υπολογίζει τη συνολική απόδοση μιας κατάθεσης με ετήσιο επιτόκιο που μεταβάλλεται κάθε χρόνο.

Αποφάσεις και άλλες δομές ελέγχου

Η εντολή if-else

H εντολή select

Η εντολή for

Έξοδος από το βρόχο

Ασκήσεις

Αποφάσεις

  1. Να γράψετε ένα πρόγραμμα που να υπολογίζει τη συνολική απόδοση μιας κατάθεσης με ετήσιο επιτόκιο που μεταβάλλεται κλιμακωτά ανάλογα με το ποσό που τοκίζεται σύμφωνα με τον παρακάτω πίνακα:
    ΠοσόΕπιτόκιο
    0-999.9992.25
    1.000.000-4.999.9992.5
    5.000.000-10.000.0002.8
    10.000.000 και άνω2.9

Προγραμματισμός με συμβολοσειρές

Ο τύπος της συμβολοσειράς

Συναρτήσεις για συμβολοσειρές

Στη Visual Basic μπορούμε να χειριστούμε συμβολοσειρές με τη χρήση διάφορων συναρτήσεων (έχουμε δει πως μπορούμε να ενώσουμε δύο συμβολοσειρές με τον τελεστή +). Οι πιο σημαντικές συναρτήσεις είναι οι παρακάτω:
Len(string)
Επιστρέφει το μήκος μιας συμβολοσειράς
Left(string, length)
Επιστρέφει length χαραρακτήρες από αριστερά
Right(string, length)
Επιστρέφει length χαραρακτήρες από δεξιά
Mid(string, start[, length])
Επιστρέφει length χαρακτήρες από τη θέση start (ή όλη τη συμβολοσειρά από τη θέση start και μετά).
LTrim(string)
Αφαιρεί κενά στο αριστερό μέρος της συμβολοσειράς
RTrim(string)
Αφαιρεί κενά στο δεξί μέρος της συμβολοσειράς
Trim(string)
Αφαιρεί κενά αριστερά και δεξιά της συμβολοσειράς
Τέλος, η εντολή
Mid(stringvar, start[, length]) = string
επιστρέπει την αλλαγή ενός μέρους μιας συμβολοσειράς (από τη θέση start και για length χαρακτήρες) με μια άλλη.

Σύγκριση συμβολοσειρών

Με τον τελεστή Like μπορούμε να συγκρίνουμε αν μια συμβολοσειρά μοιάζει με ένα συγκεκριμένο πρότυπο. Τα πρότυπα καθορίζονται με τη χρήση των παρακάτω χαρακτήρων:
?
Ταιριάζει με οποιοδήποτε ένα χαρακτήρα
*
Ταιριάζει με μηδέν ή περισσότερους χαρακτήρες
#
Ταιριάζει με οποιοδήποτε ψηφίο
[λίστα]
Ταιριάζει με οποιοδήποτε χαρακτήρα στη λίστα (π.χ. [aeiyuio])
[!λίστα]
Ταιριάζει με οποιοδήποτε χαρακτήρα δεν περιέχεται στη λίστα
Η λίστα μπορεί να περιέχει χαρακτήρες ή μια περιοχή χαρακτήρων με τη σύνταξη χαρακτήρας-χαρακτήρας (π.χ. [A-Z]. Αν θέλουμε η λίστα να περιέχει το -, τότε αυτό πρέπει να εμφανίζεται πρώτο στη λίστα.

Παράδειγμα (ο βρόχος ελέγχει αν ο ταχυδρομικός κώδικας είναι γραμμένος σωστά):

Sub main()
    Dim PostCode As String
    Dim CodeOk As Boolean
    
    Do
        PostCode = InputBox("Δώστε ταχυδρομικό κώδικα")
        CodeOk = (PostCode Like "##[- ]###" Or PostCode Like "###[- ]##")
        If Not CodeOk Then
                MsgBox "Λάθος ταχυδρομικός κώδικας, δοκιμάστε ξανά."
        End If
    Loop Until CodeOk
End Sub

Πρόσβαση στο πρόχειρο

Το πρόχειρο (clipboard) των Windows συχνά περιέχει κείμενο το οποίο έχουμε αντιγράψει, αποκόψει ή θέλουμε να επικολήσουμε σε άλλες εφαρμογές. Μπορούμε να έχουμε πρόσβαση στο πρόχειρο με το αντικείμενο (object) ClipBoard και τη μέθοδο (method) GetText ως εξής:
Dim Result as String

Result = Clipbboard.GetText
Αντίστοιχα, μπορούμε να κάνουμε το πρόχειρο να περιέχει μια συμβολοσειρά με τις μεθόδους Clear και SetText:
Clipboard.Clear
Clipboard.SetText("These are the new clipboard contents")

Ασκήσεις

Συμβολοσειρές

  1. Να γράψετε ένα πρόγραμμα που να εμφανίζει στατιστικά στοιχεία για το περιεχόμενο του προχείρου. Το πρόγραμμα πρέπει να εμφανίζει τον αριθμό των χαρακτήρων, ψηφίων (0-9), λατινικών πεζών χαρακτήρων (a-z), λατινικών κεφαλαίων χαρακτήρων (A-Z) και ελληνικών αντίστοιχων χαρακτήρων που βρέθηκαν στο πρόχειρο.
  2. Εκτελέστε το πρόγραμμά σας με είσοδο τον εαυτό του και με είσοδο ένα κείμενο από το Microsoft Word.

Προγραμματισμός με αριθμητικές τιμές

Αριθμητικοί τύποι

Η Visual Basic παρέχει αρκετούς διαφορετικούς τύπους για το χειρισμό αριθμών. Είναι σημαντικό να επιλέξουμε τον κατάλληλο τύπο σύμφωνα με τις ανάγκες μας. Ο παρακάτω πίνακας μπορεί να μας οδηγήσει στην κατάλληλη επιλογή:
Integer -32,768 to 32,767
Long (long integer) -2,147,483,648 to 2,147,483,647
Single (single-precision floating-point) -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values
Double (double-precision floating-point) -1.79769313486232E308 to -4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values
Currency (scaled integer) -922,337,203,685,477.5808 to 922,337,203,685,477.5807
Decimal +/-79,228,162,514,264,337,593,543,950,335 with no decimal point; +/-7.9228162514264337593543950335 with 28 places to the right of the decimal; smallest non-zero number is +/-0.0000000000000000000000000001
Αξίζει να προσέξουμε τα παρακάτω:

Μαθηματικές συναρτήσεις

Οι βασικές μαθηματικές συναρτήσεις της Visual Basic είναι οι παρακάτω:
Abs
Απόλυτη τιμή
Sgn
Πρόσημο
Fix
Αφαίρεση του δεκαδικού τμήματος (στρογγύλευση προς το 0)
Int
Στρογγύλευση προς τα κάτω
Sqr
Τετραγωνική ρίζα
Log
Φυσικός λογάριθμος
Exp
e υψωμένο σε δύναμη
Rnd
Ψευδοτυχαίος αριθμός 0 <= χ < 1. Αρνητικό όρισμα θέτει νέα αρχή για παραγωγή αριθμών, θετικό επιστρέφει τον επόμενο αριθμό της σειράς.
Sin
Ημίτονο
Cos
Συνημίτονο
Tan
Εφαπτομένη
Atn
Αντίστροφη εφαπτομένη

Λογιστικές συναρτήσεις

Η Visual Basic παρέχει μια σειρά από συναρτήσεις για υπολογισμούς λογιστικής φύσης σύμφωνα με τον παρακάτω πίνακα:
ΥπολογισμόςΣυνάρτηση
Calculate the future value of an annuity based on periodic, fixed payments and a fixed interest rate. FV(rate, nper, pmt[, pv[, type]])
Calculate the depreciation of an asset for a specific time period using the double-declining balance method or some other method you specify. DDB(cost, salvage, life, period[, factor])
Calculate the interest payment for a given period of an annuity based on periodic, fixed payments and a fixed interest rate. IPmt(rate, per, nper, pv[, fv[, type]])
Calculate the internal rate of return for a series of periodic cash flows (payments and receipts). IRR(values()[, guess])
Calculate the modified internal rate of return for a series of periodic cash flows (payments and receipts). MIRR(values(), finance_rate, reinvest_rate)
Calculate the number of periods for an annuity based on periodic, fixed payments and a fixed interest rate. NPer(rate, pmt, pv[, fv[, type]])
Calculate the net present value of an investment based on a series of periodic cash flows (payments and receipts) and a discount rate. NPV(rate, values())
Calculate the payment for an annuity based on periodic, fixed payments and a fixed interest rate. Pmt(rate, nper, pv[, fv[, type]])
Calculate the principal payment for a given period of an annuity based on periodic, fixed payments and a fixed interest rate. PPmt(rate, per, nper, pv[, fv[, type]])
Calculate the present value of an annuity based on periodic, fixed payments to be paid in the future and a fixed interest rate. PV(rate, nper, pmt[, fv[, type]])
Calculate the interest rate per period for an annuity. Rate(nper, pmt, pv[, fv[, type[, guess]]])
Calculate the straight-line depreciation of an asset for a single period. SLN(cost, salvage, life)
Calculate the sum-of-years' digits depreciation of an asset for a specified period. SYD(cost, salvage, life, period)

Μετατροπή αριθμών σε συμβολοσειρές

Η συνάρτηση Format επιτρέπει τον ακριβή καθορισμό της μετατροπής αριθμητικών τιμών σε συμβολοσειρές. Η σύνταξή της είναι:
Format(έκφραση[, εμφάνιση])
όπου η "εμφάνιση" είναι μια συμβολοσειρά που καθορίζει θα μετατραπεί η αντίστοιχη έκφραση σύμφωνα με τους παρακάτω κανόνες:
0
Εμφανίζει ένα ψηφίο ή 0
#
Εμφανίζει ένα ψηφίο ή κενό
.
Καθορίζει το σημείο εμφάνισης των δεκαδικών τιμών
,
Καθορίζει το διαχωρισμό των χιλιάδων
%
Εμφανίζει το πηλίκο του αριθμού με το 100 ως ποσοστό
E+
Εμφανίζει τον αριθμό σε εκθετική μορφή με πρόσημο στους θετικούς εκθέτες
E-
Εμφανίζει τον αριθμό σε εκθετική μορφή χωρίς πρόσημο στους θετικούς εκθέτες
"σύμβολα"
Εμφανίζει τα σύμβολα μέσα στα εισαγωγικά
Παράδειγμα:
Sub main()
    Dim x As Currency
    
    x = 1500000
    MsgBox ("Κερδίσατε " + Format(x, "0,0.00 ""EUR""!"))
End Sub
Εμφανίζει:

Ορισμός συναρτήσεων και διαδικασιών

Ορισμός διαδικασίας

Ορίσματα

Ορισμός συνάρτησης

Άσκηση

Διαδικασίες και συναρτήσεις

  1. Να γράψετε μια συνάρτηση που να υπολογίζει τη συνολική απόδοση μιας κατάθεσης με ετήσιο επιτόκιο που μεταβάλλεται κλιμακωτά ανάλογα με το ποσό που τοκίζεται σύμφωνα με τον παρακάτω πίνακα:
    ΠοσόΕπιτόκιο
    0-999.9992.25
    1.000.000-4.999.9992.5
    5.000.000-10.000.0002.8
    10.000.000 και άνω2.9

Βασικές αρχές αντικειμενοστρεφούς προγραμματισμού

Στοιχεία αντικεμενοστρεφούς προγραμματισμού

Υλοποίηση κλάσεων

Το εργαλείο Class Builder

Ορισμός ιδιότητας

Οι ιδιότητες είναι μεταβλητές που αποτελούν τμήμα του κάθε αντικειμένου.

Ορισμός μεθόδου

Κάθε μέθοδος είναι μια διαδικασία ή συνάρτηση που έχει πρόσβαση στις ιδιότητες του συγκεκριμένου αντικειμένου.

Ορισμός κληρονομικότητας

Οι ιδιότητες και μέθοδοι του αντικειμένουν Point κληρονομούνται από το αντικείμενο Point3D.

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

Αντικειμενοστρεφής σχεδιασμός με UML

Εισαγωγή

Η ενοποιημένη γλώσσα σχεδιασμού (unified modeling language) (UML) είναι μια γραφική γλώσσα για την οπτική παράσταση, τη διαμόρφωση προδιαγραφών και την τεκμηρίωση συστημάτων που βασίζονται σε λογισμικό. Η UML στοχεύει στο σχεδιασμό αντικειμενοστρεφών συστημάτων. Το σχέδιο είναι μια απλοποιημένη παράσταση της πραγματικότητας.

Σχεδιάζουμε για να μπορέσουμε να καταλάβουμε το σύστημα που αναπτύσσουμε. Έτσι δημιουργώντας ένα σχέδια επιτυγχάνουμε τέσσερις στόχους:

  1. παριστάνουμε οπτικά το σύστημα που έχουμε ή θέλουμε να κατασκευάσουμε,
  2. προσδιορίζουμε τη δομή και τη συμπεριφορά του συστήματος,
  3. δημιουργούμε ένα πρότυπο για να βασίσουμε την κατασκευή του συστήματος,
  4. τεκμηριώνουμε τις αποφάσεις που λάβαμε.

Σε όλους τους τεχνολογικούς τομείς ο σχεδιασμός βασίζεται σε τέσερις βασικές αρχές:

  1. η επιλογή του είδους του σχεδίου έχει επίπτωση στον τρόπο και την μορφή επίλυσης του προβλήματος,
  2. όλα τα σχέδια εκφράζονται σε διαφορετικές βαθμίδες ακρίβειας,
  3. τα καλύτερα σχέδια σχετίζονται με την πραγματικότητα,
  4. ένα είδος σχεδίων δεν είναι ποτέ αρκετό.

Η UML περιλαμβάνει τρία βασικά στοιχεία:

  1. Οντότητες
  2. Σχέσεις
  3. Διαγράμματα
Η UML είναι μια πλήρης και πλούσια γλώσσα με εξαιρετικά ευρύ πεδίο εφαρμογής. Στο μάθημα αυτό θα εξετάσουμε εξαιρετικά συνοπτικά τον τρόπο παράστασης ορισμένων αντικειμενοστρεφών δομών σε UML.

Κλάσεις

Σχέσεις

Στη UML ορίζονται τρεις βασικές σχέσεις:
  1. εξάρτηση (dependency)
  2. γενίκευση (generalisation)
  3. σύνδεση (association)

Εξάρτηση

Η εξάρτηση δηλώνει πως μια αλλαγή σε μιαν οντότητα θα επηρεάσει μιαν άλλη αλλά όχι απαραίτητα και το αντίστροφο. Παριστάνεται με μια διακεκομμένη γραμμή με ανοιχτό βέλος που δείχνει προς την οντότητα που υπάρχει εξάρτηση:

Γενίκευση

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

Σύνδεση

Η σύνδεση αναφέρεται σε αντικείμενα τα οποία συνδέονται με κάποιο τρόπο με άλλα. Όταν δύο κλάσεις είναι συνδεδεμένες μπορεί κανείς να μεταβεί από αντικείμενα της μιας σε αντικείμενα της άλλης. Η σύνδεση παριστάνεται με μια ευθεία γραμμή ανάμεσα στα δύο αντικείμενα.

Αν σε μια σχέση τα αντικείμενα απαρτίζουν τμήματα ενός όλου, τότε αυτή απεικονίζεται ως συγκρότημα (aggregation) με την παράσταση ενός διαμαντιού στην άκρη του "όλου".

Αν σχέση τα αντικείμενα που απαρτίζουν τμήματα ενός όλου έχουν την ίδια διάρκεια ζωής με το όλο, τότε αυτή απεικονίζεται ως σύνθεση (composition) με την παράσταση ενός γεμάτου διαμαντιού στην άκρη του "όλου".

Είδη εξαρτήσεων

Με τη χρήση μιας εξάρτησης εκφράζουμε σημασιολογικές (semantic) σχέσεις ανάμεσα σε στοιχεία του μοντέλου. Σε τέτοιες περιπτώσεις μια αλλαγή σε ένα στοιχείο της εξάρτησης μπορεί να έχει επίπτωση στο άλλο. Διακρίνουμε τα παρακάτω είδη εξάρτησης:
πρόσβαση (access)
Άδεια σε κάποια στοιχεία από ένα τμήμα να έχουν πρόσβαση σε στοιχεία από άλλο τμήμα (access).
σύνδεση (binding)
Παροχή τιμών σε ένα πρότυπο για να δημιουργήσει ένα νέο στοιχείο (bind).
κλήση (call)
Μια μέθοδος καλεί μια άλλη (call).
απόρρεια (derivation)
Ένα στοιχείο που μπορεί να υπολογιστεί από κάποιο άλλο (derive).
friend
Ένα στοιχείο μπορεί να έχει πρόσβαση σε στοιχεία άλλης κλάσης παρά τους όποιους περιορισμούς (friend).
εισαγωγή (import)
Άδεια σε ένα τμήμα να εισάγει και να χρησιμοποιήσει τα στοιχεία ενός άλλου τμήματος (import).
δημιουργία (instantiation)
Μια μέθοδος μιας κλάσης δημιουργεί αντικείμενα μιας άλλης κλάσης (instantiate).
παράμετρος (parameter)
Σχέση ανάμεσα σε μια λειτουργία και τις παραμέτρους της (parameter).
δημιουργία (realization)
Σχέση ανάμεσα σε μια προδιαγραφή και την υλοποίησή της (realize).
εκλέπτυνση (refinement)
Δήλωση για την ύπαρξη απεικόνισης ανάμεσα σε δύο σημασιολογικά επίπεδα (refine).
αποστολή (send)
Σχέση ανάμεσα στον αποστολέα και τον παραλήπτη ενός μηνύματος (send).
ίχνος (trace)
Σχέση ανάμεσα σε δύο στοιχεία δύο διαφορετικών μοντέλων που δεν αποτελεί όμως απεικόνιση (trace).
χρήση (usage)
Ένα στοιχείο απαιτεί την ύπαρξη ενός άλλου στοιχείο για τη λειτουργία του (π.χ. call, instantiate, parameter, send) (use).
Στο διάγραμμα της UML γράφουμε μέσα σε εισαγωγικά το είδος της εξάρτησης (αυτό που εμφανίζεται στο τέλος κάθε ορισμού στον παραπάνω πίνακα) πάνω από την αντίστοιχη γραμμή με το βέλος:

Διάγραμμα κλάσεων

Το διάγραμμα των κλάσεων ενός συστήματος περιέχει τις κλάσεις μαζί με του αντίστοιχους δεσμούς εξάρτησης, γενίκευσης και σύνδεσης. Έτσι ένα διάγραμμα κλάσεων μπορεί να απεικονίσει τη χρήση της κληρονομικότητας στο σχεδιασμό με τη χρήση δεσμών γενίκευσης όπως στο παρακάτω σχήμα:

Διάγραμμα αντικειμένων

Τα διαγράμματα αντικειμένων χρησιμοποιούνται για το σχεδιασμό της στατικής κατάστασης του συστήματος κατά μια συγκεκριμένη χρονική στιγμή. Κάθε αντικείμενο σχεδιάζεται ως ένα ορθογώνιο με την παρακάτω μορφή:

Το σύνολο των αντικειμένων σχεδιάζεται με βάση τους συνδέσμους που ορίζονται πάνω σε αυτό.

Βιβλιογραφία

Διεπαφή χρήστη

Παράθυρα, εικονίδια, μενού, και δείκτης

Στο σύγχρονο περιβάλλον διεπαφής με το χρήστη βασίζεται στα παράθυρα (windows), τα εικονίδια (icons), τα μενού (menus) και το δείκτη (pointer).

Το περιβάλλον αυτό σχεδιάστηκε για πρώτη φορά στο Palo Alto Research Center της Xerox (PARC) και υλοποιήθηκε με επιτυχία από την Apple για τους υπολογιστές Macintosh και από τη Micosoft στην οικογένεια Windows. Η επιφάνεια εργασίας χρησιμοποιεί ως βάση τη μεταφορά του γραφείου (desktop metaphor). Ο χρήστης μετακινεί πάνω στην οθόνη παράθυρα με τη χρήση του δείκτη όπως θα κινούσε έγγραφα στο γραφείο με τα χέρια του. Βασικά τεχνολογικά στοιχεία για τη λειτουργία του περιβάλλοντος αυτού είναι η οθόνη χαρτογραφικής απεικόνισης (bitmap display) και το ποντίκι (mouse) ή κάποιος άλλος αντίστοιχος μηχανισμός που επιτρέπει στο χρήστη να δείχνει αντικείμενα στην οθόνη. Με τη χρήση εικονιδίων ορισμένα στοιχεία του περιβάλλοντος μπορούν να παρασταθούν με αμεσότητα, ενώ τα μενού κάνουν τις λειτουργίες του περιβάλλοντος προσιτές χωρίς να χρειάζεται ο χρήστης να απομνημονεύει εντολές και τη σύνταξή τους.


Εικονίδια στο περιβάλλον Windows


Εισαγωγή εικόνας στο κείμενο με τη χρήση μενού στο πρόγραμμα Microsoft Word

<img src="./ui/inspic.gif"> 
Εισαγωγή εικόνας στο κείμενο στη γλώσσα HTML

Εσωτερική δομή

Εσωτερικά τα συστήματα γραφικής διεπαφής που βασίζονται σε παράθυρα λειτουργούν με βάση γεγονότα (events) τα οποία στέλνονται στις εφαρμογές. Το κάθε παράθυρο είναι μια (τυπικά ορθογώνια) περιοχή της οθόνης η οποία σχεδιάζεται αυτόνομα και λαμβάνει γεγονότα. Κάθε εφαρμογή μπορεί να απαρτίζεται από ένα ή περισσότερα παράθυρα. Γεγονότα μπορεί να είναι π.χ. η επιλογή μιας εντολής από το μενού, η αλλαγή του κειμένου που γράφει ο χρήστης, το πάτημα ενός πλήκτρου, η κίνηση του ποντικιού ή, η αλλαγή της ώρας. Τα γεγονότα μπορεί να δημιουργούνται άμεσα από το χρήστη ή να συνθέτονται από το σύστημα ως αποτέλεσμα εντολών του χρήστη, ή άλλων εξωτερικών διεπαφών. Το κάθε γεγονός στέλνεται σε μια ή περισσότερες εφαρμογές. Οι εφαρμογές με τη σειρά τους στέλνουν τα γεγονότα στα παράθυρα που μπορούν να τα επεξεργαστούν. Έτσι, αντί η εφαρμογή να ζητά στοιχεία από το χρήστη, τα στοιχεία από το χρήστη στέλνονται ως γεγονότα στην εφαρμογή. Στο περιβάλλον των Windows ορίζονται πάνω από 800 διαφορετικά γεγονότα.

Για την επιβολή συνέπειας στη διεπαφή με το χρήστη αλλά και τη διευκόλυνση υλοποίησης των εφαρμογών τα παραθυρικά περιβάλλοντα ορίζουν μια σειρά από όργανα (controls) (ή widgets) τα οποία ενσωματώνουν και διαθέτουν ένα σύνολο από λειτουργίες που είναι συχνά χρήσιμες. Παραδείγματα τέτοιων οργάνων είναι το πλαίσιο εισαγωγής κειμένου (edit box), το πιεζόμενο κουμπί (push button) και το πλαίσιο επιλογής αρχείου.

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

Απεικόνιση της δομής στη Visual Basic

Το περιβάλλον προγραμματισμού Visual Basic επιτρέπει τη γραφική σχεδίαση εφαρμογών με τη χρήση οργάνων και τον άμεσο ορισμό κώδικα που θα αποκρίνεται σε συγκεκριμένα γεγονότα. Για το σκοπό αυτό η Visual Basic απλοποιεί το περιβάλλον προγραμματισμού που ορίζουν τα Windows δίνοντας στο χρήστη μια σειρά από εξειδικευμένα όργανα (βασισμένα σε αυτά των Windows) και έναν τρόπο να ορίζει ο χρήστης την εμφάνιση του κάθε οργάνου, τις λειτουργίες του και τον τρόπο που αυτό ανταποκρίνεται σε γεγονότα. Έτσι, κάθε όργανο παριστάνεται ως ένα αντικείμενο που διαθέτει: Ο έλεγχος που έχει ο χρήστης πάνω στα όργανα διαφέρει ανάλογα με την κατάσταση της εφαρμογής:

Όργανα

Όργανα τοποθετούνται μέσα στην εφαρμογή με γραφικό τρόπο κατά την υλοποίησή της. Κάθε όργανο διακρίνεται από το όνομά του. Αν πολλά όργανα ίδιου τύπου έχουν το ίδιο όνομα τότε αυτά ορίζουν έναν πίνακα οργάνων τον οποίο μπορούμε να διατρέξουμε με τη χρήση ενός δείκτη (π.χ. txtTextBox(i).text = "hello").

Το περιβάλλον της Visual Basic ορίζει τα παρακάτω βασικά όργανα:

TextBox
Όργανο για είσοδο κειμένου
Label
Εμφάνιση κειμένου
PictureBox
Περιοχή για εμφάνιση και σχεδίαση γραφικών κατά τη διάρκεια εκτέλεσης του προγράμματος.
CheckBox
Επιλογή τύπου ναι/όχι (μπορούν να είναι αληθείς πολλαπλές τέτοιες επιλογές)
OptionButton
Επιλογή τύπου ναι/όχι (δεν μπορούν να είναι αληθείς πολλαπλές τέτοιες επιλογές)
CommandButton
Κουμπί για εντολές
Image
Χαρτογραφική εικόνα που μπορεί να ορίσει ο χρήστης
Shape
Σχήμα που μπορεί να οριστεί κατά τη σχεδίαση της εφαρμογής.
Timer
Χρονόμετρο που δημιουργεί γεγονότα σε τακτά διαστήματα.
ListBox
Λίστα με επιλογές.
ComboBox
Λίστα με επιλογές σε συνδυασμό με περιοχή που μπορεί να γραφτεί κείμενο
VScrollBar
Κάθετο όργανο ελέγχου της θέσης στο παράθυρο.
HScrollBar
Οριζόντιο όργανο ελέγχου της θέσης στο παράθυρο.
Frame
Περιοχή στην οποία μπορούν να ομαδοποιηθούν πολλά όργανα (ειδικά OptionButton)
Εκτός από τα παραπάνω βασικά όργανα μπορεί κανείς να ορίσει ή να αγοράσει πολλά άλλα όργανα που εκτελούν χρήσιμες λειτουργίες όπως π.χ. σύνδεση με βάσεις δεδομένων και το Internet, εμφάνιση γραφημάτων και πινάκων. Τα όργανα αυτά μπορούν να θεωρηθούν εξαρτήματα (components) για την υλοποίηση εφαρμογών.

Γεγονότα

Κάθε όργανο έχει το δικό του σύνολο από γεγονότα τα οποία μπορεί να δεχτεί. Ορισμένα από τα γεγονότα τα οποία αφορούν πολλά όργανα είναι τα παρακάτω:
Click
Click του ποντικιού πάνω στο όργανο.
DblClick
Διπλό click του ποντικιού πάνω στο όργανο.
GotFocus
Το όργανο γίνεται η εστία εισόδου.
LostFocus
Το όργανο παύει να είναι η εστία εισόδου.
KeyDown
Ένα πλήκτρο πατιέται πάνω από το όργανο.
KeyUp
Ένα πλήκτρο αφήνεται πάνω από το όργανο.
KeyPress
Ένας χαρακτήρας γράφεται πάνω από το όργανο.
MouseDown
Ένα πλήκτρο του ποντικιού πατιέται πάνω από το όργανο.
MouseUp
Ένα πλήκτρο του ποντικιού αφήνεται πάνω από το όργανο.
MouseMove
Το ποντίκι κινείται πάνω από το όργανο.
Change
Τα δεδομένα που περιέχει το όργανο άλλαξαν.
Η σύνδεση του γεγονότος με κώδικα της Visual Basic γίνεται με τον ορισμό μιας συνάρτησης που έχει ως όρισμα παραμέτρους που αφορούν το συγκεκριμένο όργανο. Παράδειγμα:
Private Sub Check1_KeyPress(KeyAscii As Integer)

End Sub

Private Sub Check1_KeyUp(KeyCode As Integer, Shift As Integer)

End Sub

Private Sub Check1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

End Sub

Private Sub Command1_Click()

End Sub

Private Sub Text1_Change()

End Sub

Ιδιότητες

Οι ιδιότητες που αφορούν κάθε όργανο μπορούν να μεταβληθούν τόσο κατά το σχεδιασμό, όσο και κατά την εκτέλεση της εφαρμογής. Πρόσβαση στις ιδιότητες κατά την εκτέλεση της εφαρμογής έχουμε με τη σύνταξη όργανο.ιδιότητα. Μερικές ιδιότητες που εμφανίζονται σε πολλά όργανα είναι οι παρακάτω:
Name
Το όνομα του συγκεκριμένου οργάνου.
BackColor
Το χρώμα του φόντου.
ForeColor
Το χρώμα σχεδίασης.
Enabled
Αληθές αν το όργανο είναι ενεργό.
Visible
Αληθές αν το όργανο είναι ορατό.
Text
Το κείμενο που περιέχει το όργανο.
Caption
Το κείμενο που εμφανίζει το όργανο.
Value
Η τιμή που έχει το όργανο (π.χ. αληθές/ψευδές).
ToolTipText
Το αναδυόμενο κείμενο σύντομης βοήθειας.
Height
Το ύψος του οργάνου.
Left
Η θέση του οργάνου στη φόρμα από αριστερά.
Top
Η θέση του οργάνου στη φόρμα από πάνω.
Width
Το πλάτος του οργάνου.

Υλοποίηση προγραμμάτων

Βιβλιογραφία

Ασκήσεις

Διεπαφές

  1. Να υλοποιήσετε μια φιλική γραφική διεπαφή για ένα από τα προγράμματα που έχετε γράψει στα πλαίσια του μαθήματος.

Διαχείριση δεδομένων: σύνδεση με βάσεις δεδομένων, πίνακες, τύποι

Πρόσβαση σε βάσεις δεδομένων

Συχνά προγράμματα σε Visual Basic αποθηκεύουν τα στοιχεία τους σε μια βάση δεδομένων και υλοποιούν μόνο τη διεπαφή του χρήστη για πρόσβαση στη βάση αυτή. Η ανάπτυξη τέτοιων προγραμμάτων πελάτη εξυπηρετητή (client/server) δεν είναι τετριμμένη. Ο τρόπος σύνδεσης που θα παρουσιαστεί αφορά τη σύνδεση σε προσωπικές βάσεις δεδομένων ή την άντληση στοιχείων από απλές εταιρικές πηγές δεδομένων. Πιο σύνθετες εφαρμογές πρέπει μεταξύ άλλων να λάβουν υπόψη τους

Πρόσβαση από τη διεπαφή του χρήστη

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

Πρόσβαση στη βάση από το πρόγραμμα

Πίνακες

Τύποι καθοριζόμενοι από το χρήστη

Βιβλιογραφία

Ασκήσεις

Πρόσβαση σε βάσεις δεδομένων
  1. Να ορίσετε με τη χρήση του προγράμματος Microsoft Access μια βάση δεδομένων (ΒΔ) που να περιέχει έναν πίνακα για τον καθορισμό του ετήσιου επιτοκίου μιας κατάθεσης με ετήσιο επιτόκιο που μεταβάλλεται κλιμακωτά ανάλογα με το ποσό που τοκίζεται σύμφωνα με τα παρακάτω στοιχεία:
    ΠοσόΕπιτόκιο
    0-999.9992.25
    1.000.000-4.999.9992.5
    5.000.000-10.000.0002.8
    10.000.000 και άνω2.9
  2. Να ορίσετε στη ΒΔ μια ερώτηση που να επιστρέφει - με βάση τον πίνακα - το επιτόκιο που ισχύει για ένα συγκεκριμένο ποσό.
  3. Να γράψετε μια συνάρτηση που να υπολογίζει τη συνολική απόδοση μια κατάθεσης για ένα έτος αντλώντας το επιτόκιο από τη ΒΔ.
  4. Με βάση την παραπάνω συνάρτηση να γράψετε ένα πρόγραμμα που ζητάει από το χρήστη
    • το αρxικό ποσό και
    • τον αριθμό των περιόδων (ετών).
    και εμφανίζει το τελικό ποσό της κατάθεσης.
  5. Προσπαθήστε η διεπαφή του προγράμματος να είναι φιλική προς το χρήστη.
  6. Εναλλακτικά, να υλοποιήσετε με βάση το data control μια διεπαφή που να επιστρέπει στο χρήστη την ανάγνωση και αλλαγή των στοιχείων του πίνακα.

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

Αρχιτεκτονική του παγκόσμιου ιστού

Προσδιορισμός στοιχείων με URI

Ο προσδιορισμός στοιχείων στο πρωτόκολλο HTTP γίνεται με τη χρήση των Uniform Resource Identifiers. Αυτά ορίζονται από την παρακάτω γραμματική (RFC 2068):
  URI            = ( absoluteURI | relativeURI ) [ "#" fragment ]

  absoluteURI    = scheme ":" *( uchar | reserved )

  relativeURI    = net_path | abs_path | rel_path

  net_path       = "//" net_loc [ abs_path ]
  abs_path       = "/" rel_path
  rel_path       = [ path ] [ ";" params ] [ "?" query ]

  path           = fsegment *( "/" segment )
  fsegment       = 1*pchar
  segment        = *pchar

  params         = param *( ";" param )
  param          = *( pchar | "/" )
  scheme         = 1*( ALPHA | DIGIT | "+" | "-" | "." )
  net_loc        = *( pchar | ";" | "?" )

  query          = *( uchar | reserved )
  fragment       = *( uchar | reserved )

  pchar          = uchar | ":" | "@" | "&" | "=" | "+"
  uchar          = unreserved | escape
  unreserved     = ALPHA | DIGIT | safe | extra | national

  escape         = "%" HEX HEX
  reserved       = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+"
  extra          = "!" | "*" | "'" | "(" | ")" | ","
  safe           = "$" | "-" | "_" | "."
  unsafe         = CTL | SP | <"> | "#" | "%" | "<" | ">"
  national       = <any OCTET excluding ALPHA, DIGIT,
		   reserved, extra, safe, and unsafe>
Η χρήση τους επιτρέπει τον προσδιορισμό άλλων σελίδων τοπικά, σε άλλα μηχανήματα, καθώς και ερωτήσεων:
http://kerkis.math.aegean.gr/~dspin/
http://www.altavista.com/cgi-bin/query?pg=q&text=yes&q=link%3akerkis%2emath%2eaegean%2egr%2f%7edspin+%2dhost%3akerkis%2emath%2eaegean%2egr&stq=10&c9k
Σημαντικά προβλήματα ασφάλειας που μπορούν να προκύψουν είναι τα παρακάτω:
  1. Το σύστημα DNS που μετατρέπει τα ονόματα σε διευθύνσεις δεν είναι ασφαλές
  2. Οποιοσδήποτε μπορεί να δημιουργήσει ένα URI. Δεν πρέπει η ασφάλειά μας να βασίζεται σε "κρυμμένα" αρχεία ή στη χρήση συγκεκριμένων URI.
  3. Με τον προσδιορισμό άλλων θυρών μπορεί ένα "αθώο" URI να "μιλήσει" σε άλλο πρωτόκολλο (όχι HTTP) με καταστροφικά αποτελέσματα.
  4. Όταν ένα URI περιέχει συνθηματικό αυτό δεν μπορεί να είναι εμπιστευτικό.

Το πρωτόκολλο HTTP

Το πρωτόκολλο HTTP υποστηρίζει τις παρακάτω μεθόδους επικοινωνίας: Παράδειγμα:
GET /pub/WWW/TheProject.html HTTP/1.1
Host: www.w3.org
Βασικά προβλήματα ασφάλειας που έχουν σχέση με το HTTP είναι τα παρακάτω:

Διασφάλιση συναλλαγών HTTP

Συναλλαγές που χρησιμοποιούν HTTP μπορούν να ασφαλιστούν ως προς την εμπιστευτικότητα και την ακεραιότητα σε τρία διαφορετικά επίπεδα:
  1. Κάτω από το πρωτόκολλο HTTP μέσω SSL ή IPSEC
  2. Επεκτείνοντας το πρωτόκολλο HTTP (π.χ. secure HTTP)
  3. Πάνω από το πρωτόκολλο HTTP με λ.χ. με εξειδικευμένες εφαρμογές σε Java που κρυπτογραφούν τα μηνύματα.

Περιγραφή σελίδων με HTML

H HTML είναι μια εφαρμογή της SGML για την περιγραφή σελίδων στο Web. Περιοχές του κειμένου σημειώνονται με ετικέτες (tags). Κάθε ετικέτα περιλαμβάνει το όνομά της και παραμέτρους. Οι ετικέτες γράφονται ως εξής:
<όνομα ετικέτας παράμετροι>
Μια περιοχή του κειμένου μπορεί να σημειωθεί ως εξής:
<ετικέτα>
περιοχή που σημειώνεται
</ετικέτα>
Βασικές ετικέτες που υποστηρίζει η HTML είναι οι παρακάτω:
HTML
περιγραφή ολόκληρης σελίδας
HEAD
επικεφαλίδα της σελίδας
BODY
κείμενο της σελίδας
H1-H6
επικεφαλίδες του κειμένου
P
αλλαγή παραγράφου
UL
λίστα με τελείες
OL
αριθμημένη λίστας
LI
στοιχείο λίστας
BR
αλλαγή γραμμής
HR
οριζόντια γραμμή
IMG
εικόνα
A
(anchor) σημείο πρόσβασης από ή σε υπερκείμενο
PRE
προστοιχειοθετημένο κείμενο
DL, DT, DD
λίστα περιγραφών, περιγραφές
I
πλάγιοι χαρακτήρες
B
έντονοι χαρακτήρες
Παράδειγμα σελίδας:
<!doctype html public "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<TITLE>Τίτλος της σελίδας</title>

<META NAME="GENERATOR" CONTENT="thread.pl">
<META NAME="AUTHOR" CONTENT="Diomidis Spinellis">
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=ISO-8859-7">
<LINK REV="made" HREF="mailto:dspin@aegean.gr"> 
<LINK REL="ToC" href="./web/index.htm">
<LINK REV="Subdocument" href="./web/index.htm">
<LINK REL="previous" href="./web/http.htm">
<LINK REL="next" href="./web/cgi.htm">

</HEAD>

<BODY> <H1>Επικεφαλίδα πρώτου επιπέδου</H1><HR>
Κείμενο που περιέχει ένα σημείο κατάληξης υπερκειμένου
<a name="G42"> (<em>με έντονο κείμενο</em>)</a> 
και μια λίστα:
<ul>
<li> στοιχείο 1
<li> στοιχείο 2
</ul>

<p>
Νέα παράγραφος με ένωση υπερκειμένου στο
<A HREF="http://www.aegean.gr">Πανεπιστήμιο Αιγαίου</A>

<HR>
</BODY>

</HTML>
Προβλήματα ασφάλειας που σχετίζονται με την HTML είναι τα εξής:

Web browser control

Internet transfer control

Βιβλιογραφία

Προγραμματισμός με εξαρτήματα, μεταγλώττιση και εγκατάσταση

Προγραμματισμός με εξαρτήματα

Πολλές γλώσσες προσφέρουν τη δυνατότητα προγραμματισμού με έτοιμα εξαρτήματα. Στη Visual Basic μπορούμε να χρησιμοποιησούμε δύο είδη εξαρτημάτων:
  1. Εξαρτήματα ActiveX τα οποία εμφανίζονται στην εργαλειοθήκη και τα οποία μπορούμε να τοποθετήσουμε σε φόρμες.

    Για τα εξαρτήματα αυτά μπορούμε να ορίσουμε τις ιδιότητές τους από το αντίστοιχο παράθυρο. Παραδείγματα τέτοιων εξαρτημάτων είναι τα:

    • Calendar
    • Chart
    • Common Dialog
    • Flex Grid
    • Outline
    • Multimedia
    • Internet
    • Rich Textbox
    • Tabbed Dialog
    • Media Player
    Τα εξαρτήματα αυτά ορίζονται στην επιλογή Project - Components

  2. Συλλογές αντικειμένων (βιβλιοθήκες (libraries) στα οποία έχουμε πρόσβαση μέσα από τον κώδικα της εφαρμογής. Μπορούμε να ορίσουμε μεταβλητές που να αντιστοιχούν στα αντικείμενα αυτά και μέσω αυτών να έχουμε πρόσβαση σε άλλες σύνθετες εφαρμογές. Παραδείγματα τέτοιων αντικειμένων είναι τα:
    • Microsoft Excel
    • Corel Draw
    • Microsoft DAO (Data Access Objects)
    • Microsoft Word
    • Real Player
    • Microsoft Media Player
    Τα εξαρτήματα αυτά ορίζονται στην επιλογή Project - References

Πρόσβαση σε πολυμέσα

Το πρότυπο επικοινωνίας MCI (Media Control Interface) καθορίζει μια σειρά από εντολές που υποστηρίζονται από συσκευές multimedia για την επικοινωνία τους με το λογισμικό εφαρμογών. Έτσι όπως το BIOS (Basic Input Output System) των προσωπικών υπολογιστών παρέχει μία τυποποιημένη δυνατότητα ελέγχου της οθόνης, του δίσκου και του πληκτρολογίου μέσω των αντίστοιχων κλήσεων σε συναρτήσεις εξυπηρέτησης διακοπών (interrupt service function), έτσι και το πρότυπο MCI παρέχει την τυποποιημένη δυνατότητα ελέγχου περιφερειακών συσκευών multimedia. Για την επίτευξη όσο το δυνατό μεγαλύτερης συμβατότητας με πολλά περιβάλλοντα προγραμματισμού οι κλήσεις στον οδηγό MCI δεν είναι απαραίτητα συνδεδεμένες με κάποια συγκεκριμένη γλώσσα προγραμματισμού όπως η Visual Basic ή η C, αλλά αποτελούνται από απλές συμβολοσειρές με τις οποίες τα Windows επικοινωνούν με την αντίστοιχη συσκευή.

Στη Visual Basic το όργανο Microsoft Multimedia Control (το προσθέτουμε από την επιλογή Project - Components) επιτρέπει την εύκολη πρόσβαση σε πολυμέσα. Το όργανο εμφανίζεται με την παρακάτω μορφή:

Για να χρησιμοποιήσουμε το όργανο αυτό ακολουθούμε τα παρακάτω βήματα:

  1. Καθορίζουμε το είδος της συσκευής με την οποία θέλουμε να μιλήσουμε. Αυτό γίνεται με ανάθεση στην ιδιότητα DeviceType η οποία υποστηρίζει τις ακόλουθες συσκευές:
    • AVIVideo
    • CDAudio
    • DAT
    • DigitalVideo
    • MMMovie
    • Other
    • Overlay
    • Scanner
    • Sequencer
    • VCR
    • Videodisc
    • WaveAudio
  2. Kαθορίζουμε το όνομα του αρχείου που θέλουμε να γράψουμε ή να διαβάσουμε στην ιδιότητα FileName.
  3. Καθορίζομε άλλες ιδιότητες που έχουν να κάνουν με τον τρόπο εγγραφής ή αναπαραγωγής όπως Notify, Wait, Shareable.
  4. Θέτουμε στην ιδιότητα Command την εντολή που θέλουμε να εκτελεστεί. Υποστηρίζονται οι παρακάτω εντολές:
    CommandDescription
    OpenOpens a device using the MCI_OPEN command.
    CloseCloses a device using the MCI_CLOSE command.
    PlayPlays a device using the MCI_PLAY command.
    PausePauses playing or recording using the MCI_PLAY command. If executed while the device is paused, tries to resume playing or recording using the MCI_RESUME command.
    StopStops playing or recording using the MCI_STOP command.
    BackSteps backward using the MCI_STEP command.
    StepSteps forward using the MCI_STEP command.
    PrevGoes to the beginning of the current track using the Seek command. If executed within three seconds of the previous Prev command, goes to the beginning of the previous track or to the beginning of the first track if at the first track.
    NextGoes to the beginning of the next track (if at last track, goes to beginning of last track) using the Seek command.
    SeekIf not playing, seeks a position using the MCI_SEEK command. If playing, continues playing from the given position using the MCI_PLAY command.
    RecordRecords using the MCI_RECORD command.
    EjectEjects media using the MCI_SET command.
    SoundPlays a sound using the MCI_SOUND command.
    SaveSaves an open file using the MCI_SAVE command.
  5. Μπορούμε τέλος να επιτρέψουμε στο χρήστη να χρησιμοποιήσει τα πλήκτρα ελέγχου ή να προσθέσουμε δικό μας κώδικα σε κάθε πλήκτρο. Κάθε πλήκτρο έχει μια καθορισμένη λειτουργία ή μπορεί να καλέσει και μια συνάρτηση με βάση το όνομα του πλήκτρου. Τα πλήκτρα έχουν τα παρακάτω ονόματα:
    • Prev
    • Next
    • Play
    • Pause
    • Back
    • Step
    • Stop
    • Record
    • Eject
    Αντίστοιχα μπορούμε να ενεργοποιήσουμε ή να απενεργοποιήσουμε συγκεκριμένα πλήκτρα ανάλογα με την εφαρμογή μας.
Παράδειγμα (αφού προσθέσουμε ένα όργανο με όνομα mcictrl):
Private Sub Form_Load()
    mcictrl.Notify = False
    mcictrl.Shareable = False
    mcictrl.DeviceType = "AVIVideo"
    mcictrl.filename = "C:\Program Files\Microsoft Office\Clipart\MMedia\globe.AVI"
    mcictrl.Command = "Open"
    mcictrl.Wait = True
    mcictrl.Command = "Play"
    mcictrl.Command = "Close"
    mcictrl.filename = "C:\Program Files\Microsoft Office\Clipart\MMedia\sonata8.wav"
    mcictrl.Command = "Open"
    mcictrl.Wait = True
    mcictrl.Command = "Play"
    mcictrl.Wait = True
    mcictrl.Command = "Close"
End Sub

Γραφικές παραστάσεις

Η σχεδίαση τυποποιημένων γραφικών παραστάσεων από αριθμητικά δεδομένα γίνεται στη Visual Basic το όργανο Chart (το προσθέτουμε ως Microsoft Chart Control από την επιλογή Project - Components). Το όργανο εμφανίζεται με την παρακάτω μορφή:

Για να χρησιμοποιήσουμε το όργανο αυτό ακολουθούμε τα παρακάτω βήματα:

  1. Θέτουμε την ιδιότητα chartType σύμφωνα με το είδος του γραφήματος που θέλουμε να σχεδιάσουμε. Υποστηρίζονται οι παρακάτω σταθερές για τους αντίστοιχους τύπους γραφημάτων:
    ConstantDescription
    VtChChartType3dBar3D Bar
    VtChChartType2dBar2D Bar
    VtChChartType3dLine3D Line
    VtChChartType2dLine2D Line
    VtChChartType3dArea3D Area
    VtChChartType2dArea2D Area
    VtChChartType3dStep3D Step
    VtChChartType2dStep2D Step
    VtChChartType3dCombination3D Combination
    VtChChartType2dCombination2D Combination
    VtChChartType2dPie2D Pie
    VtChChartType2dXY2D XY
  2. Θέτουμε την ιδιότητα columnCount στον αριθμό στηλών των δεδομένων που θέλουμε να εμφανίσουμε.
  3. Θέτουμε την ιδιότητα rowCount στον αριθμό στηλών των δεδομένων που θέλουμε να εμφανίσουμε.
  4. Για κάθε τιμή που περιέχεται στο γράφημα θέτουμε τις ιδιότητες Row και Column στις συντεταγμένες της αντίστοιχης τιμής και στη συνέχεια την ιδιότητα Data στην τιμή που αντιστοιχεί στις συντεταγμένες εκείνες.
  5. Θέτουμε άλλες ιδιότητες για να αλλάξουμε τον τρόπο εμφάνισης του γραφήματος. Μερικές από τις ιδιότητες αυτές είναι οι AllowDithering, BorderStyle, Chart3d, Backdrop, ColumnLabel, Legend, Stacking, TitleText.
Παράδειγμα (αφού προσθέσουμε ένα όργανο με όνομα MSChart1):
Private Sub Command1_Click()
With Form1.MSChart1
        ' Displays a 3d chart with 8 columns and 8 rows
        .chartType = VtChChartType3dArea
        .ColumnCount = 8
        .ShowLegend = False
        .RowCount = 8
        For Column = 1 To 8
            For Row = 1 To 8
                .Column = Column
                .Row = Row
                .Data = Row * 10 + Column * 3 + Rnd * 40
            Next Row
        Next Column
    End With
End Sub
Εμφανίζει το παρακάτω γράφημα:

Πρόσβαση σε αρχεία κειμένου

Για να δημιουργήσουμε ένα αρχείο (file) με κείμενο από τη Visual Basic ακολουθούμε την παρακάτω διαδικασία:
  1. Συσχετίζουμε το αρχείο με έναν ακέραιο αριθμό με τον οποίο θα αναφερόμαστε στο αρχείο αυτό με την εντολή open
    open "names.txt" for output as #1
    
    • Γράφουμε στο αρχείο με την εντολή print # αν το αρχείο θα διαβαστεί από ανθρώπους
      print #1, Name, Number
      
    • Γράφουμε στο αρχείο με την εντολή write # αν το αρχείο θα διαβαστεί από άλλο πρόγραμμα
      write #1, Name, Number
      
  2. Όταν γράψουμε όλα τα στοιχεία που θέλουμε στο αρχείο, διακόπτουμε το συσχετισμό με την εντολή close
    close #1
    
Παράδειγμα:
open "numbers.txt" for output as #1
for i = 1 to 10
	write #1, i, string(i, ".")
next i
close #1
Για να διαβάσουμε αρχεία με κείμενο ακολουθούμε την παρακάτω διαδικασία:
  1. Συσχετίζουμε το αρχείο με έναν ακέραιο αριθμό με τον οποίο θα αναφερόμαστε στο αρχείο αυτό με την εντολή open
    open "names.txt" for input as #1
    
  2. Διαβάζουμε από το αρχείο με την εντολή input #
    input #1, Name, Number
    
  3. Ελέγχουμε αν το αρχείο έχει άλλα στοιχεία με τη συνάρτηση eof
  4. Όταν διαβάσουμε όλα τα στοιχεία που θέλουμε στο αρχείο, διακόπτουμε το συσχετισμό με την εντολή close
    close #1
    
Παράδειγμα:
open "numbers.txt" for input as #1
do while not eof(1)
	input #1, num, s
	msgbox str(num) + s
loop
close #1

Πρόσβαση σε δυαδικά αρχεία

Εκτός από τη μορφή κειμένου μπορούμε να αποθηκεύσουμε στοιχεία και στη μορφή που φυλάσσονται στη μνήμη του υπολογιστή. Τα πλεονεκτήματα του τρόπου αυτού φύλαξης είναι: Η δομή των δυαδικών αρχείων ορίζεται τυπικά με έναν τύπο οριζόμενο από το χρήστη, ενώ πρόσβαση στα στοιχεία έχουμε με τις εντολές Get και Put. Παράδειγμα:
Type Record
	ID As Integer
	Name As String * 20
End Type

Dim MyRecord As Record
Open "TESTFILE.dat" For Random As #1 Len = Len(MyRecord)
Put #1, 5, MyRecord
Get #1, 5, MyRecord
Close #1

Χειρισμός λαθών

Παράδειγμα:
on error resume next
open "names.txt" for input as #1
if err <> 0 then
	msgbox "names.txt: " + err.description
	exit sub
end if
on error goto 0

Σύνδεση με άλλες εφαρμογές

Η Visual Basic επιτρέπει τη σύνδεση του προγράμματός μας με άλλες εφαρμογές όπως το Word και το Excel. Με τον τρόπο αυτό μπορούμε να διαβάσουμε ή να δημιουργήσουμε σύνθετα έγγραφα ή να έχουμε πρόσβαση σε δυνατότητες των προγραμμάτων αυτών (π.χ στον έλεγχο ορθογραφίας).

Βασικό στοιχείο για τον έλεγχο της εφαρμογής είναι να ενεργοποιήσουμε στο πρόγραμμά μας την αντίστοιχη βιβλιοθήκη αντικειμένων από την επιλογή Project - References. Τεκμηρίωση για κάθε βιβλιοθήκη αντικειμένων βρίσκουμε συχνά αν τοποθετήσουμε το δρομέα πάνω στη βασική λέξη της βιβλιοθήκης μέσα στο πρόγραμμά μας (π.χ. Word, ή Excel) και ζητήσουμε βοήθεια με το πλήκτρο F1.

Σύνδεση με το Excel

Η σύνδεση με το Excel μας επιτρέπει να δημιουργήσουμε αυτόματα φύλλα εργασίας ή να διαβάσουμε υπάρχοντα. Η πρόσβαση στο Excel γίνεται μέσα από το αντικείμενο Excel.Application και τις κλάσεις που το αποτελούν. Ο παρακάτω πίνακας των βασικών κλάσεων προέρχεται από την τεκμηρίωση που παρέχει η Microsoft:

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

Sub main()
    Dim xl As Excel.Application
    Dim ws As Excel.Worksheet
    Dim wb As Excel.Workbook
    Dim regions(4, 1) As String
    
    regions(0, 0) = "Europe"
    regions(1, 0) = "Americas"
    regions(2, 0) = "Asia"
    regions(3, 0) = "Africa"
    
    
    Set xl = New Excel.Application
    xl.Visible = True
    Set wb = xl.Workbooks.Add
    Set ws = wb.Worksheets(1)
    
    ws.Range("A2:A5") = regions
    For i = 2 To 5
        ws.Range("B" & Format(i)).Value = i * 110 * Rnd
    Next i
    
    Dim chart As Excel.chart
    Dim rn As Range
    
    Set rn = ws.Range("A1:B5")
    
    Set chart = wb.Charts.Add
    chart.ChartWizard rn, xl3DPie, 7, xlColumns, 1, 1, 1, "Sales by area", "Areas", "Sales"
End Sub

Σύνδεση με το Word

Η σύνδεση με το Word μας επιτρέπει να δημιουργήσουμε αυτόματα σύνθετα έγγραφα ή να διαβάσουμε και να επεξεργαστούμε υπάρχοντα. Η πρόσβαση στο Word γίνεται μέσα από το αντικείμενο Word.Application και τις κλάσεις που το αποτελούν. Ο παρακάτω πίνακας των βασικών κλάσεων προέρχεται από την τεκμηρίωση που παρέχει η Microsoft:

Στο παράδειγμα που ακολουθεί δημιουργούμε αυτόματα ένα νέο έγγραφο παραγγελίας:

Sub main()
    Dim wd As Word.Application
    Dim doc As Word.Document
    
    Set wd = New Word.Application
    wd.Visible = True
    Set doc = Word.Documents.Add
    
    ' Insert title date and items
    Dim r As Word.Range
    Set r = doc.Paragraphs(1).Range
    r.InsertAfter ("Replacement Part Order")
    r.InsertParagraphAfter
    r.InsertAfter ("Date:" & Date)
    r.InsertParagraphAfter
    r.InsertAfter ("Please dispatch the following parts:")
    r.InsertParagraphAfter
    r.InsertParagraphAfter
    ' 7 random parts
    For i = 1 To 7
        r.InsertAfter Str(i) + ". Part code " + Format(Int(Rnd * 10000 + 1), "000000") + " qty " + Str(Int(Rnd * 100 + 1))
        r.InsertParagraphAfter
    Next i
    
    r.Paragraphs(1).Alignment = wdAlignParagraphCenter
    
    ' Format title
    Dim pr As Word.Range
    Set r = doc.Paragraphs(1).Range
    Set pr = doc.Range(r.Start, r.End)
    pr.Font.Bold = True
    pr.Font.Size = 14
    pr.Font.Name = "Arial"
End Sub

Μεταγλώττιση

Εγκατάσταση προγραμμάτων

Άσκηση

Προγραμματισμός με εξαρτήματα

  1. Να προσθέσετε στο πρόγραμμα υπολογισμού της συνολικής απόδοσης τη δυνατότητα δημιουργίας αναφοράς σε κείμενο του Word ή την απεικόνιση του κεφαλαίου με βάση το χρόνο σε μορφή γραφήματος.
  2. Δημιουργήστε πρόγραμμα εγκατάστασης για την εφαρμογή σας.

Βιβλιογραφία

Εργασία του μαθήματος

Περιγραφή της εργασίας

Αντικείμενο της εργασίας είναι η υλοποίηση μιας μη απλοϊκής εφαρμογής σε Visual Basic. Η υλοποίηση πρέπει να γίνει στα πλαίσια του μαθήματος και περιλαμβάνει τα παρακάτω στάδια: Η παρουσίαση θα γίνει στα πλαίσια του μαθήματος και θα είναι διάρκειας 10 λεπτών. Θα πρέπει να καλυφθούν τα παρακάτω: Η βαθμολογία θα γίνει με βάση την παρουσίαση και μια εκτύπωση του πηγαίου κώδικα της εργασίας. Θα ληφθούν υπόψη η πρωτοτυπία του θέματος, η φιλικότητα διεπαφής της εφαρμογής, και το πόσο ευανάγνωστος είναι ο κώδικας.

Θέματα εργασιών

Όνομα Θέμα Γνώσεις
ΠΑΠΑΓΙΑΝΝΗΣ ΓΙΩΡΓΟΣ Πρόγραμμα για τον έλεγχο μετατροπέα αναλογικού σε ψηφιακό (A/D converter) 7 (κυρίως σε C για έλεγχο hardware)
Ανδρέας Ιωαννίδης Κάποια μαθηματική εφαρμογή (ενδεχομένως με γραφικά fractal) 6
Αγγελακόπουλος Δημήτριος Τηλεφωνικός κατάλογος 2
ΧΑΤΖΗΑΝΤΩΝΙΟΥ ΜΑΡΙΑΝΘΗ Κάποιο παιχνίδι ή κάποιο screensaver 1
Γιάννης Θεοδώρου Τηλεφωνική ατζέντα 1
Πετρόπουλος Αθανάσιος Απεικόνιση σημείων από 3D laser scanner σε επιφάνεια 6
ΣΕΡΔΑΡΗ ΒΑΣΙΛΙΚΗ ΤΙΜΟΚΑΤΑΛΟΓΟΣ ΠΡΟΙΟΝΤΩΝ - ΤΙΜΟΛΟΓΙΑ 4
Χριστίνα Κριτσιδήμα Δημιουργία Calendar, Phonebook, Reminder 0
Αγνή Σκαπέρδα Σχεδιασμός barcode προϊόντων 1
Έλλη Καραγιάννη Οροσκόπιο 2
Νίκη Δανδόλου Υπολογισμός γωνιών με βάση συντεταγμένες 1
Γεώργιος Πατρής Βάση με αρχεία MP3 1
Τζαβάρας Κωνσταντίνος Πρόγραμμα Στατιστικής Επεξεργασίας Μετρήσεων Ποιοτικού Ελέγχου 3
Tsiampa Athanasia A program which will convert Grd to Euro in a database chosen by the user 4
Ευγενία Τριανταφυλλοπούλου Το πρόγραμμα θα λύνει μια δευτεροβάθμια εξίσωση. Συγκεκριμένα θα ζητάει τους συντελεστές α, β, γ και θα βρίσκει τα χ1 και χ2. Στη συνέχεια δε θα εμφανίζει τις λύσεις, αλλά θα περιμένει από εμάς να εισάγουμε τις δικές μας, ελέγχοντας αν έχουμε λύσει σωστά την εξίσωση και τυπώνοντας ανάλογα μηνύματα. 4

Λύσεις ασκήσεων

'Ασκηση 0

Sub main()
    Dim Ammt As Double
    
    Ammt = InputBox("Δώστε την αρχική τιμή")
    MsgBox "Η τιμή χωρίς το ΦΠΑ είναι " + Str(Ammt / 1.18)
End Sub

'Ασκηση 1

Sub main()
    Dim Ammt As Double
    Dim nyears As Integer
    Dim interest As Double
    Dim i As Integer
    
    Ammt = InputBox("Δώστε το αρxικό ποσό")
    nyears = InputBox("Δώστε τον αριθμό των περιόδων")
    i = 0
    Do While i < nyears
        interest = InputBox("Δώστε επιτόκιο για την περίοδο " + str(i + 1))
        Ammt = Ammt * (1 + interest / 100)
        i = i + 1
    Loop
    MsgBox "Το τελικό ποσό είναι " + Str(Ammt)
End Sub