Περιεχόμενα. Πρόλογος...11

Σχετικά έγγραφα
Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

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

Στελεχώνου ε το σή ερα το τώρα και το αύριο!

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

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

ΕΠΛ 012. JavaScripts

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

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

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

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

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Pascal. 15 Νοεμβρίου 2011

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

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

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

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

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

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

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

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Προγραμματισμός ΙI (Θ)

Εντολές ελέγχου ροής if, for, while, do-while

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

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

Προγραμματισμός ΙI (Θ)

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

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

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

Αντικειμενοστρεφής Προγραμματισμός

Περιεχόμενα. Λίγα λόγια από το συγγραφέα... 7

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Ενδεικτική περιγραφή μαθήματος

for for for for( . */

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

Πληροφορική 2. Αλγόριθμοι

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 4

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προγραμματισμός Ι (HY120)

Pascal. 26 Οκτωβρίου 2011

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

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

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

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

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

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

Πρόβλημα 29 / σελίδα 28

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

Εισαγωγή στην πληροφορική

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

ικτυακά Πολυμέσα Ι (Β Έτος, 3ο εξ) ιάλεξη #8η: Javascript: Τεχνικές εντοπισμού/διόρθωσης λαθών, τελεστές, δομές ελέγχου, βρόχοι επανάληψης

ΣΥΝΑΡΤΗΣΕΙΣ (Functions)

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση


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

Λεκτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Τεχνικός Εφαρμογών Πληροφορικής

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

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

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

Παιχνίδια σε Javascript

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB

Συναρτήσεις. Υποπρόγραμμα

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet.

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Σημειωματάριο Δευτέρας 30 Οκτ. 2017

Συναρτήσεις. Εισαγωγή

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

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

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

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

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

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 2)

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Περιεχόμενα. Μέρος 1: Βασικές έννοιες Πληροφορικής και επικοινωνιών Μέρος 2: Χρήση υπολογιστή και διαχείριση αρχείων Πρόλογος...

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»

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

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Η βασική συνάρτηση προγράμματος main()

Transcript:

Περιεχόμενα Πρόλογος...11 Κεφάλαιο 1: Εισαγωγή...13 Η ιστορία της JavaScript...13 Τι είναι η JavaScript...15 Διαφορά μεταξύ σεναρίου και προγράμματος...16 Δυνατότητες και περιορισμοί της JavaScript...16 Τα απαραίτητα για το ξεκίνημα...17 Μερικές ιδέες για το ξεκίνημα...18 Το πρώτο σενάριο JavaScript...20 Οι δεσμευμένες λέξεις της JavaScript...24 Μερικοί βασικοί κανόνες...25 Ερωτήσεις και ασκήσεις...27 Κεφάλαιο 2: Βασικές έννοιες της JavaScript...29 Αντικειμενοστρεφής προγραμματισμός...29 Αντικείμενα...30 Κλάσεις...31 Οι μέθοδοι alert(), confirm(), και prompt() του αντικειμένου window...32 Οι μέθοδοι write() και writeln() του αντικειμένου document...37 Ερωτήσεις και ασκήσεις...38 Κεφάλαιο 3: Δεδομένα Μεταβλητές Υπολογισμοί...41 Τύποι δεδομένων...41 Μεταβλητές...43 Παραστάσεις και τελεστές...47 Αριθμητικοί τελεστές...47 Τελεστές σύγκρισης...48 Λογικοί τελεστές...49 7

8 Η γλώσσα JavaScript Ο τριαδικός τελεστής...51 Οι μοναδιαίοι τελεστές αύξησης και μείωσης...51 Περισσότερα για τις εκχωρήσεις...52 Συνένωση αλφαριθμητικών...52 Πίνακες...55 Μετατροπή τύπων και υπολογισμός παραστάσεων Οι συναρτήσεις parseint(), parsefloat(), και eval()...59 Ακολουθίες διαφυγής...62 Ερωτήσεις και ασκήσεις...63 Κεφάλαιο 4: Προγραμματισμός με τη γλώσσα JavaScript...67 Εισαγωγή...67 Η δομή επιλογής...69 Ένθετα if...76 Η δομή πολλαπλής επιλογής switch...79 Η δομή επανάληψης...82 Η εντολή επανάληψης while...82 Η εντολή επανάληψης do while...85 Η δομή επανάληψης for...86 Η εντολή επανάληψης for in...89 Οι εντολές break και continue...92 Ερωτήσεις και ασκήσεις...95 Κεφάλαιο 5: Συναρτήσεις και συμβάντα...101 Η έννοια της συνάρτησης...101 Η εντολή return...104 Συναρτήσεις που καλούν άλλες συναρτήσεις...105 Εμβέλεια των μεταβλητών...107 Αναδρομικές συναρτήσεις...109 Εσωτερικές συναρτήσεις της JavaScript...112 Συμβάντα και χειριστές συμβάντων...113 Ερωτήσεις και ασκήσεις...122 Κεφάλαιο 6: Αντικείμενα...127 Τα αντικείμενα στην JavaScript...127 Το αντικείμενο Array...128 Οι μέθοδοι του αντικειμένου Array...131 Το αντικείμενο Math...138 Το αντικείμενο String...143 Το αντικείμενο Date...152 Η δεσμευμένη λέξη this...162 Η δεσμευμένη λέξη with...162 Η συνάρτηση-κατασκευαστής...162 Ερωτήσεις και ασκήσεις...166

Περιεχόμενα 9 Κεφάλαιο 7: Η JavaScript στα προγράμματα περιήγησης: Παράθυρα και πλαίσια...173 Εισαγωγή JavaScript και προγράμματα περιήγησης...173 Το αντικείμενο window...175 Άνοιγμα και κλείσιμο παραθύρων...190 Πλαίσια...198 Ταυτόχρονη αλλαγή του περιεχομένου πολλών πλαισίων Το ψευδοπρωτόκολλο javascript:...204 Το αντικείμενο Navigator...208 Το αντικείμενο screen...210 Ερωτήσεις και ασκήσεις...212 Κεφάλαιο 8: Έγγραφα και εικόνες...221 Το αντικείμενο document στο μοντέλο DOM...221 Οι ιδιότητες του αντικειμένου document...222 Οι ιδιότητες all και layers Ανίχνευση του προγράμματος περιήγησης...226 Οι μέθοδοι του αντικειμένου document...227 Το αντικείμενο image Εφέ rollover...231 Πολλαπλά εφέ εναλλαγής εικόνων (multiple rollovers)...241 Τα "μπισκότα"...246 Ερωτήσεις και ασκήσεις...255 Κεφάλαιο 9: Φόρμες και JavaScript...261 Εισαγωγή...261 Το αντικείμενο form...262 Ανάγνωση και εγγραφή σε πλαίσιο κειμένου φόρμας...265 Περιοχή κειμένου...268 Ραδιοπλήκτρα...270 Πλαίσια ελέγχου...273 Λίστες...275 Υποβολή της φόρμας στο διακομιστή...277 Επικύρωση των δεδομένων της φόρμας με τη χρήση JavaScript...281 Ένα ολοκληρωμένο παράδειγμα δημιουργίας φόρμας...286 Ερωτήσεις και ασκήσεις...292 Κεφάλαιο 10: JavaScript και DHTML...299 Τι είναι η DHTML...299 Φύλλα επάλληλων στυλ...300 Ψευδοκλάσεις...307 Τοποθέτηση στοιχείων στο έγγραφο Επίπεδα...310 JavaScript και φύλλα στυλ...313 Κίνηση...319 Οπτικά εφέ με τον Internet Explorer: Φίλτρα και μεταπτώσεις...325 Ερωτήσεις και ασκήσεις...328

10 Η γλώσσα JavaScript Κεφάλαιο 11: Ειδικά θέματα...333 Σφάλματα...333 Συντακτικά σφάλματα...334 Σφάλματα χρόνου εκτέλεσης...340 Λογικά σφάλματα...342 Κανονικές παραστάσεις...343 Δημιουργία και σύνδεση εξωτερικών αρχείων JavaScript...347 Εμφάνιση του πηγαίου κώδικα JavaScript μιας σελίδας...349 Συνεργασία JavaScript και Java...351 Παράρτημα 1: Στοιχεία της γλώσσας HTML...359 Εισαγωγή...359 Δημιουργία και βασική οργάνωση ενός εγγράφου HTML...360 Μορφοποίηση κειμένου...363 Εισαγωγή εικόνων σε μια ιστοσελίδα...366 Σύνδεσμοι και αγκυρώσεις...370 Λίστες...373 Πίνακες...376 Πλαίσια...380 Φόρμες...382 Φύλλα επάλληλων στυλ...385 Ειδικές ετικέτες στυλ...390 Ιδιότητες και τιμές...391 Παράρτημα 2: Απαντήσεις στις ερωτήσεις και τις ασκήσεις του βιβλίου...393 Ευρετήριο...477

Κεφάλαιο 5 Συναρτήσεις και συμβάντα Η έννοια της συνάρτησης Συνάρτηση (function) ονομάζεται ένα τμήμα κώδικα (μια ομάδα από εντολές) με ξεχωριστό όνομα που εκτελεί μια συγκεκριμένη εργασία. Μια συνάρτηση καταρχήν ορίζεται και κατόπιν καλείται. Η κλήση μιας συνάρτησης γίνεται με το όνομά της και έχει αποτέλεσμα την εκτέλεση του κώδικα που περιέχει. Η χρήση συναρτήσεων διευκολύνει τη δημιουργία αρθρωτών και όχι μονολιθικών προγραμμάτων. Επιπλέον, ο κώδικας μιας συνάρτησης γράφεται μία φορά κατά τον ορισμό της, και μπορεί να κληθεί από διάφορα σημεία του προγράμματος. Ο ορισμός των συναρτήσεων γίνεται συνήθως στην περιοχή επικεφαλίδας (<HEAD>) ενός εγγράφου HTML, και έχει την ακόλουθη μορφή: function όνομα_συνάρτησης(παράμετροι) { Εντολές Όπως παρατηρούμε, στη δήλωση μιας συνάρτησης τοποθετείται αρχικά η λέξη function και ακολουθούν: Το όνομα της συνάρτησης. Για το όνομα της συνάρτησης ισχύουν όσα έχουμε αναφέρει για τις μεταβλητές, ότι δηλαδή πρέπει να ξεκινά με 101

102 Η γλώσσα JavaScript γράμμα του λατινικού αλφαβήτου ή χαρακτήρα υπογράμμισης, να μην περιέχει κενά διαστήματα, να μη χρησιμοποιούνται δεσμευμένες λέξεις ως ονόματα συναρτήσεων, κ.λπ. Ένα ζεύγος παρενθέσεων μέσα στο οποίο τοποθετούνται οι παράμετροι της συνάρτησης. Οι παράμετροι είναι τιμές που περνάμε στη συνάρτηση και οι οποίες θα υποστούν επεξεργασία στο εσωτερικό της. Εάν υπάρχουν περισσότερες από μία παράμετροι, τις χωρίζουμε με κόμματα. Επίσης, εάν δε χρειάζονται οι παράμετροι μπορούμε να τις παραλείψουμε, οπότε θα γραφεί μόνο το ζεύγος των παρενθέσεων. Το "σώμα" της συνάρτησης. Είναι οι εντολές που χρησιμοποιεί η συνάρτηση και οι οποίες επιτελούν την επιθυμητή εργασία. Οι εντολές αυτές τοποθετούνται ανάμεσα σε δύο άγκιστρα, {. Κατά την εκτέλεσή της μια συνάρτηση μπορεί να επιστρέψει ή να μην επιστρέψει κάποια τιμή. Εάν επιστραφεί κάποια τιμή αυτό γίνεται με την εντολή return. Για να εκτελεστεί μια συνάρτηση, πρέπει να κληθεί στο σημείο του σεναρίου που επιθυμούμε. Η κλήση της συνάρτησης γίνεται με το όνομά της ακολουθούμενο από τις παρενθέσεις ( ). Ο χώρος μέσα στις παρενθέσεις είτε είναι κενός (εάν δεν υπάρχουν ορίσματα), είτε περιέχει ορίσματα χωρισμένα με κόμματα. Η κλήση της συνάρτησης μπορεί να γίνει είτε στην περιοχή επικεφαλίδας (<HEAD>), είτε στην περιοχή του κύριου σώματος (<BODY>) ενός εγγράφου HTML. Παράδειγμα Να δημιουργηθεί μια συνάρτηση add() η οποία να προσθέτει δύο αριθμούς και να τυπώνει το αποτέλεσμα στο έγγραφο. Με βάση τα όσα αναφέραμε προηγουμένως, ο ορισμός της συνάρτησης είναι: function add(number1, number2) { var sum = number1 + number2 document.write(sum); Η δήλωση αυτή θα τοποθετηθεί στο τμήμα <HEAD> του εγγράφου. Για να καλέσουμε τη συνάρτηση ώστε να προσθέσει δύο αριθμούς (έστω τους 234

Κεφάλαιο 5: Συναρτήσεις και συμβάντα 103 και 436), γράφουμε το όνομά της και ως ορίσματα χρησιμοποιούμε τους συγκεκριμένους αριθμούς add (234, 436); Η κλήση θα τοποθετηθεί στο τμήμα <HEAD> του εγγράφου. Θα μπορούσαμε όμως να την τοποθετήσουμε και στο τμήμα <BODY>. Ακολουθεί ολόκληρο το αρχείο function_add.html, το οποίο περιέχει τον κώδικα:<html> <HEAD> <TITLE> ΣΥΝΑΡΤΗΣΗ add() </TITLE> <!-- function add(number1,number2) { var sum=number1+number2; document.write(sum); add(234,436); //--> </HEAD> <BODY> </BODY> </HTML> Το αποτέλεσμα του σεναρίου μέσα από το πρόγραμμα περιήγησης είναι το επόμενο:

104 Η γλώσσα JavaScript Το ίδιο αποτέλεσμα θα είχαμε, αν τοποθετούσαμε την κλήση της συνάρτησης στο τμήμα <BODY> του εγγράφου. Εννοείται ότι η τοποθέτηση θα γίνει μέσα σε ένα ζεύγος ετικετών <SCRIPT>, όπως φαίνεται παρακάτω: <HTML> <HEAD> <TITLE> ΣΥΝΑΡΤΗΣΗ add() </TITLE> <!-- function add(number1,number2) { var sum=number1+number2; document.write(sum); //--> </HEAD> <BODY> add(234,436); </BODY> </HTML> Η εντολή return Σε πολλές περιπτώσεις θέλουμε η συνάρτηση να επιστρέφει κάποια τιμή μετά την εκτέλεση του κώδικά της. Τότε χρησιμοποιούμε την εντολή return μαζί με μια μεταβλητή στην οποία εκχωρείται η τιμή που θα επιστραφεί. H σύνταξη της εντολής return είναι: return όνομα_μεταβλητής; Ας εξετάσουμε μια παραλλαγή της συνάρτησης του προηγούμενου παραδείγματος, η οποία επιστρέφει την τιμή του αθροίσματος των δύο αριθμών αντί να την τυπώνει στο έγγραφο. Η συνάρτηση θα έχει την παρακάτω μορφή:

Κεφάλαιο 5: Συναρτήσεις και συμβάντα 105 function add(number1,number2) { var sum=number1+number2; return sum; Στο σώμα του εγγράφου η κλήση της συνάρτησης θα γίνει με τη γραμμή: document.write(add(234,436)); Στη συνέχεια μπορείτε να δείτε ολόκληρο το τροποποιημένο έγγραφο: <HTML> <HEAD> <TITLE> Εντολή return </TITLE> <!-- function add(number1,number2) { var sum=number1+number2; return sum; //--> </HEAD> <BODY> <SCRIPT LANGUAGE=" JavaScript"> document.write(add(234,436)); </BODY> </HTML> Θα μπορούσαμε να μη χρησιμοποιήσουμε καθόλου τη μεταβλητή sum στον ορισμό της συνάρτησης, συντάσσοντας τη συνάρτηση όπως παρακάτω: function add(number1,number2) { return number1+number2; Συναρτήσεις που καλούν άλλες συναρτήσεις Αν χρειαστεί, μια συνάρτηση μπορεί να καλέσει μια άλλη συνάρτηση. Για το σκοπό αυτόν η δεύτερη συνάρτηση τοποθετείται μέσα στο σώμα της πρώτης. Απαραίτητη προϋπόθεση είναι ο ορισμός της δεύτερης συνάρτησης να έχει προηγηθεί του ορισμού της πρώτης.

106 Η γλώσσα JavaScript Έστω ότι θέλουμε να δημιουργήσουμε μια συνάρτηση, τη square(), η ο- ποία υπολογίζει το τετράγωνο ενός αριθμού, και μια άλλη συνάρτηση, την quadratic(), η οποία υπολογίζει την τέταρτη δύναμη αριθμού. Μπορούμε μέσα από την quadratic() να καλούμε τη square(), αρκεί να την έχουμε ορίσει προηγουμένως. function square(x) { return x*x; function quadratic(y) { return square(y)*square(y) ; Παράδειγμα Να δημιουργηθεί συνάρτηση που να υπολογίζει το τετράγωνο αριθμού και συνάρτηση που να υπολογίζει την τέταρτη δύναμη αριθμού. Στη συνέχεια να εισάγεται ένας αριθμός από το πληκτρολόγιο και να τυπώνεται η τέταρτη δύναμή του σε ένα πλαίσιο προειδοποίησης. Το αρχείο functioncall.html είναι το επόμενο: <HTML> <HEAD> <TITLE> Κλήση συνάρτησης από συνάρτηση </TITLE> <!-- function square(x) { return x*x; function quadratic(y) { return square(y)*square(y) ; //--> </HEAD> <BODY> var num=parsefloat(prompt("δώστε έναν αριθμό","0")); window.alert("η 4η δύναμη του αριθμού είναι "+quadratic(num)); </BODY> </HTML>

Κεφάλαιο 5: Συναρτήσεις και συμβάντα 107 Όταν φορτώνουμε το αρχείο στο πρόγραμμα περιήγησης, εμφανίζεται ένα πλαίσιο διαλόγου που ζητά να δώσουμε έναν αριθμό: Στη συνέχεια υπολογίζεται η τέταρτη δύναμη του αριθμού που καταχωρίσαμε. Εμβέλεια των μεταβλητών Οι μεταβλητές που χρησιμοποιεί η JavaScript διακρίνονται σε δύο κατηγορίες: καθολικές και τοπικές. Μια μεταβλητή που ορίζεται έξω από μια συνάρτηση χαρακτηρίζεται ως καθολική (global), και αναγνωρίζεται σε όλα τα σημεία του εγγράφου, ακόμα και μέσα στις συναρτήσεις. Μια καθολική μεταβλητή μπορεί να οριστεί με ή χωρίς τη χρήση της λέξης var.

108 Η γλώσσα JavaScript Αντίθετα, μια μεταβλητή που δηλώνεται μέσα σε μια συνάρτηση χαρακτηρίζεται ως τοπική (local), και ισχύει μόνο μέσα στη συνάρτηση στην οποία ορίστηκε. Για παράδειγμα, η μεταβλητή sum που χρησιμοποιήσαμε στη συνάρτηση add() του παραδείγματος σε προηγούμενη ενότητα είναι μια τοπική μεταβλητή. Όταν η συνάρτηση ολοκληρωθεί, όλες οι τοπικές μεταβλητές που υπήρχαν μέσα σε αυτή παύουν να υφίστανται. Εάν η συνάρτηση ξανακληθεί δημιουργούνται νέες τοπικές μεταβλητές. Η δήλωση της τοπικής μεταβλητής μέσα στη συνάρτηση γίνεται με τη χρήση της λέξης var. Εάν δε χρησιμοποιηθεί η λέξη var, τότε η μεταβλητή θεωρείται καθολική. Εάν ορίσουμε μια τοπική μεταβλητή μέσα σε μια συνάρτηση χρησιμοποιώντας το ίδιο όνομα με μια καθολική μεταβλητή, τότε μέσα στη συνάρτηση ισχύει η τοπική μεταβλητή. Εάν η μεταβλητή αλλάξει τιμή (πάντα μέσα στη συνάρτηση), αυτό δεν επηρεάζει την καθολική μεταβλητή. Παράδειγμα Στο παράδειγμα που ακολουθεί οι τιμές των καθολικών μεταβλητών τυπώνονται στο έγγραφο, ενώ η συνάρτηση somefunction() εμφανίζει τις τιμές των μεταβλητών σε ένα πλαίσιο προειδοποίησης. Παρατηρούμε ότι η τιμή της y είναι η ίδια και στις δύο περιπτώσεις. <HTML> <HEAD> <TITLE> Καθολικές και τοπικές μεταβλητές </TITLE> <!-- var x=15,y=20; function somefunction() { var x=30; x=x*x; window.alert ("x= "+x+"\n"+"y= "+y); document.write("x="+x+"<br>"); document.write("y="+y+"<br>"); somefunction(); document.write("x="+x+"<br>"); //--> </HEAD> <BODY>

Κεφάλαιο 5: Συναρτήσεις και συμβάντα 109 </BODY> </HTML> Αναδρομικές συναρτήσεις Αναδρομική (recursive) ονομάζεται μια συνάρτηση η οποία καλεί τον εαυτό της. Η αναδρομή είναι μια τεχνική που προσφέρουν όλες οι σύγχρονες γλώσσες προγραμματισμού, και είναι χρήσιμη σε πολλές περιπτώσεις. Για να καταλάβουμε την έννοια της αναδρομής θα εξετάσουμε ένα παράδειγμα συνάρτησης η οποία μπορεί να δημιουργηθεί με τον κλασικό τρόπο, και στη συνέχεια θα δούμε πώς μπορούμε να την υλοποιήσουμε με αναδρομή. Θα χρησιμοποιήσουμε το κλασικό παράδειγμα του υπολογισμού του παραγοντικού ενός θετικού ακέραιου αριθμού. Από τα μαθηματικά γνωρίζουμε ότι ως n! (διαβάζεται n παραγοντικό) ορίζεται το γινόμενο: n! = n(n 1)... Εξ ορισμού ισχύει 1!=1 και 0!=1. Θα δημιουργήσουμε καταρχήν μια ιστοσελίδα για τον υπολογισμό του n! με τον κλασικό τρόπο. Ο υπολογισμός θα γίνει με βάση τον τύπο ορισμού του παραγοντικού και με τη χρήση μιας δομής επανάληψης: <HTML> <HEAD> <TITLE> Υπολογισμός του παραγοντικού με τον κλασικό τρόπο </TITLE>

110 Η γλώσσα JavaScript <!-- function factorial(x) { var fact=1; for (var i=x;i>=1;--i) fact *=i; return fact; //--> </HEAD> <BODY> var num=parseint(prompt("δώστε έναν ακέραιο αριθμό","0")); window.alert("το παραγοντικό του αριθμού "+num+" είναι: "+factorial(num)); </BODY> </HTML> Με το άνοιγμα του αρχείου ιστοσελίδας στο πρόγραμμα περιήγησης, μας ζητείται να δώσουμε έναν αριθμό: Στη συνέχεια, σε ένα πλαίσιο προειδοποίησης τυπώνεται το παραγοντικό του αριθμού που πληκτρολογήσαμε.

Κεφάλαιο 5: Συναρτήσεις και συμβάντα 111 Ας δούμε τώρα πώς μπορούμε να δημιουργήσουμε μια αναδρομική συνάρτηση που να έχει το ίδιο αποτέλεσμα. Από τον ορισμό του παραγοντικού που είδαμε στην αρχή, μπορούμε να διαπιστώσουμε ότι ισχύει και η ακόλουθη σχέση: n! = n( n 1)! Αυτό σημαίνει ότι μπορούμε να υπολογίσουμε το παραγοντικό ενός αριθμού πολλαπλασιάζοντάς τον με το παραγοντικό του προηγουμένου του. Η σκέψη αυτή μας οδηγεί στην εξής διατύπωση της συνάρτησης factorial(). function factorial(x) { if (x>1) return x*factorial(x-1); else return 1; Μέσα στη συνάρτηση, η δομή if εξετάζει αν ο αριθμός που περάσαμε ως παράμετρο είναι μεγαλύτερος από 1. Αν είναι, επιστρέφει το γινόμενο του αριθμού με τη συνάρτηση factorial(), χρησιμοποιώντας ως όρισμα έναν αριθμό κατά ένα μικρότερο από το x. Αυτό σημαίνει ότι η συνάρτηση "πηγαίνει προς τα κάτω" μέχρι να συναντήσει το 1, του οποίου υπολογίζει το παραγοντικό (που είναι 1), και στη συνέχεια "ανεβαίνει" υπολογίζοντας τα επόμενα παραγοντικά μέχρι να φθάσει στο x. Ένα άλλο θέμα που πρέπει να προσέξουμε είναι να δώσουμε σωστά τον αριθμό του οποίου θέλουμε να υπολογίσουμε το παραγοντικό να μη δώσουμε δηλαδή αρνητικό αριθμό. Αυτό μπορεί να γίνει με τον κώδικα: var num=-1; while (num<0) num=parseιnt(prompt("δώστε ένα θετικό ακέραιο","-1")); Η τελική έκδοση του κώδικα για το παράδειγμα υπολογισμού του n! με αναδρομική διαδικασία είναι η ακόλουθη: <HTML> <HEAD> <TITLE> Υπολογισμός του παραγοντικού με αναδρομή </TITLE> <!-- var num=-1; while (num < 0) num=parseint(prompt("δώστε ένα θετικό ακέραιο","-1")); window.alert("το "+num+"! είναι "+factorial(num));

112 Η γλώσσα JavaScript function factorial(x) { if (x>1) return x*factorial(x-1); else return 1; //--> </HEAD> <BODY> </BODY> </HTML> Εσωτερικές συναρτήσεις της JavaScript Η JavaScript διαθέτει έναν αριθμό από εσωτερικές συναρτήσεις, μερικές από τις οποίες έχουμε ήδη εξετάσει, ενώ κάποιες άλλες θα δούμε σε ε- πόμενα κεφάλαια. Οι συναρτήσεις αυτές φαίνονται στον πίνακα που ακολουθεί: Συνάρτηση eval() isfinite() isnan() parseint(), parsefloat() Number(), String() escape(), unescape() Λειτουργία Υπολογίζει μια αριθμητική παράσταση μέσα σε ένα αλφαριθμητικό. Εξετάζει το όρισμα και παίρνει την τιμή true αν είναι πεπερασμένο. Αν το όρισμα δεν είναι πεπερασμένο ή είναι NaN, τότε επιστρέφει false. Εξετάζει το όρισμα και επιστρέφει true αν είναι NaN, αλλιώς επιστρέφει false. Και οι δύο συναρτήσεις δέχονται αλφαριθμητικό όρισμα και επιστρέφουν αριθμητικό. Εάν ο πρώτος χαρακτήρας του αλφαριθμητικού δε μπορεί να μετατραπεί σε αριθμό, επιστρέφουν NaN. Δέχονται ως όρισμα ένα αντικείμενο, και επιστρέφουν έναν αριθμό ή ένα αλφαριθμητικό αντίστοιχα. Χρησιμοποιούνται για την κωδικοποίηση και αποκωδικοποίηση αλφαριθμητικών.