Κεφάλαιο 1: Τα βασικά της Java

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

Download "Κεφάλαιο 1: Τα βασικά της Java"

Transcript

1 Κεφάλαιο 1: Τα βασικά της Java Εξοικείωση µε το περιβάλλον Αυτό το µάθηµα αποσκοπεί σε µία πρώτη γνωριµία µε τη Java Για να ξεκινήσουµε... Για να ξεκινήσουµε θα πρέπει να έχουµε εγκαταστήσει στον υπολογιστή µας την τρέχουσα έκδοση της JAVA: Μπορούµε να την κατεβάσουµε από το site της Java της εταιρίας Sun ( Ανεξαρτησία από µηχανή Ο µεταγλωττιστής της Java δεν παράγει εκτελέσιµο κώδικα αλλά παράγει µία µορφή αρχείων γνωστή ως Java Bytecodes που δεν είναι εκτελέσιµη απευθείας από µία µηχανή αλλά εκτελείται από την εικονική µηχανή Java (Java Virtual Machine JVM). Αυτό δίνει στην Java το πλεονέκτηµα της ανεξαρτησίας από την συγκεκριµένη µηχανή στην οποία εκτελείται. Αρκεί κανείς να έχει εγκαταστήσει την κατάλληλη έκδοση της Java και το πρόγραµµα θα εκτελεστεί από την εικονική µηχανή. Αυτή η επινόηση έµεινε γνωστή σαν «Γράψε µια φορά για να τρέχει παντού» (Write Once Run Everywhere). Εικονική Μηχανή Java (Java Virtual Machine - JVM) Η ακόλουθη εικόνα µας δείχνει την ιδέα της εικονικής µηχανής Java. Όπως δείχνει και η εικόνα το ίδιο πρόγραµµα αφού µεταφραστεί σε bytecodes στη συνέχεια µπορεί να τρέξει σε διαφορετικές µηχανές (π.χ Windows, Solaris ή MacOS). Αρκεί το σύστηµα να είναι εφοδιασµένο µε την κατάλληλη JVM που θα το εκτελέσει. Γιατί λοιπόν Java; Σ' αυτό το εδάφιο θα εξηγήσουµε τους λόγους που είναι προτιµότερο να χρησιµοποιήσουµε Java από άλλες εναλλακτικές λύσεις, κυρίως για τον προγραµµατισµό διαδικτυακών εφαρµογών αλλά και γενικότερα

2 Από την πηγή... Σύµφωνα µε τα λόγια του Tim Lindholm Senior Staff Engineer της JavaSoft σε άρθρο του τον Απρίλιο του 1996: «Με την Java σαν γλώσσα επέκτασης, ένα πρόγραµµα πλοήγησης του Web θα µπορούσε να έχει απεριόριστες δυνατότητες. Οι προγραµµατιστές θα µπορούσαν να γράψουν τα applets µια φορά και αυτά µετά θα έτρεχαν σε οποιαδήποτε µηχανή, οπουδήποτε. Οι επισκέπτες σε σελίδες µε Java δυνατότητες, θα µπορούσαν να χρησιµοποιήσουν το περιεχόµενο αυτών των σελίδων εφησυχασµένοι ότι τίποτα δεν θα µπορούσε να φθείρει την µηχανή τους. Με τα applets σαν αρχικό σηµείο εστίασης, η Java επέδειξε ένα νέο τρόπο για την διάθεση λογισµικού µε το Internet. Αυτός ο νέος παραδειγµατισµός προγραµµατισµού πηγαίνει πέρα από τα προγράµµατα πλοήγησης. Πιστεύουµε ότι είναι ένας νεωτερισµός µε την δυνατότητα να αλλάξει την πορεία της Πληροφορικής.» Λόγοι για να χρησιµοποιήσουµε τη Java Η Java είναι σχεδιασµένη για το Internet. Προγράµµατα της Java µπορούν να τρέχουν σε προγράµµατα πλοήγησης εφοδιασµένα µε την κατάλληλη JVM. Αφού το πρόγραµµα κατέβει από το Internet εκτελείται στη µηχανή του πελάτη και όχι στο Server. Αυτά τα προγράµµατα της Java είναι γνωστά σαν Java Applets. Η Java είναι σχεδιασµένη µε στόχο την εξασφάλιση ασφάλειας. Ένα Java Applet εκτελείται µε απόλυτη ασφάλεια στη µηχανή του χρήστη και δεν µπορεί να κάνει τίποτα που να µην επιτρέπεται από την πολιτική ασφάλειας της JVM της µηχανής του πελάτη. Η Java προσφέρει εκτέλεση σε όλους τους υπολογιστές. Με το επίπεδο αφαίρεσης υλικού της JVΜ ένα πρόγραµµα Java εκτελείται σε όλους τους υπολογιστές ανεξαρτήτως Λειτουργικού Συστήµατος. Αρκεί αυτές να είναι εφοδιασµένες µε την κατάλληλη JVM (Java Virtual Machine) Η Java είναι µια πλούσια γλώσσα προγραµµατισµού. Η Java είναι πολύ ισχυρή αντικειµενοστραφής γλώσσα προγραµµατισµού για το Internet (και όχι µόνο) και όχι µία απλή script γλώσσα για την σύνθεση συστατικών (π.χ. VBScript µε ActiveX controls). Αυτό µας επιτρέπει να γράφουµε προγράµµατα τα οποία είναι εύκολο να συντηρηθούν και να εξελιχτούν στο χρόνο και όχι απλά σενάρια (scripts) τα οποία παίζουν το ρόλο της κόλλας για components που έχουν γίνει µε άλλες γλώσσες αλλά γενικά δεν µπορούµε να τα αλλάξουµε ή να ελέγξουµε την εξέλιξή τους. Η Java προσφέρει την ευελιξία της δυναµικής σύνδεσης. Ένα πρόγραµµα Java εκτελείται από µία εικονική µηχανή και οι τάξεις (τα αρχεία.class που περιέχουν τα bytecodes) φορτώνονται από την JVM όταν εκτελείται το πρόγραµµα. Αυτό σηµαίνει ότι µπορεί κανείς να αντικαταστήσει µία παλιά τάξη µε µία νέα ακόµα και την στιγµή που εκτελείται το πρόγραµµα. Αυτό είναι ένα βασικό χαρακτηριστικό των components. Έτσι οι τάξεις Java πάνε πέρα από τον αντικειµενοστραφή προγραµµατισµό, στον προγραµµατισµό βασισµένο σε συστατικά (component-based programming). Είναι επίσης σηµαντικό ότι η Java είναι σχεδιασµένη γι αυτό και δεν απαιτείται η προσθήκη κάποιου πολύπλοκου µοντέλου (όπως το COM) της Microsoft, πάνω από µία γλώσσα προγραµµατισµού που δεν είναι σχεδιασµένη µε αυτό τον τρόπο (π.χ. Visual C++). Αρκεί κανείς να µελετήσει το specification του COM και να το συγκρίνει µε το specification των Java Beans για να πειστεί γι αυτό! Πιθανά µειονεκτήµατα της Java Τα προγράµµατα πλοήγησης ενδέχεται να µην µπορούν να εκτελέσουν το Applet µας. Αυτό διότι τα προγράµµατα πλοήγησης ενδέχεται να µην είναι εφοδιασµένα µε την τρέχουσα έκδοση της Java. Ο κώδικας που είναι µεταγλωττισµένος για µια συγκεκριµένη µηχανή είναι ταχύτερος από τον κώδικα που εκτελείται από ένα µεταφραστή (interpreter). Πάντως αξίζει να σηµειωθεί ότι µία τεχνική που ονοµάζεται Just-In Time µεταγλώττιση (JIT compilation) έχει βελτιώσει σηµαντικά τους χρόνους εκτέλεσης των Java προγραµµάτων. Αν και ακόµα τα προγράµµατα - 2 -

3 της Java δεν έχουν γίνει ταχύτερα από τον µεταγλωττισµένο κώδικα της C++, πολλοί είναι αυτοί που υποστηρίζουν ότι είναι αρκετά γρήγορα για να µην γίνει η ταχύτητα η αιτία να µην πετύχει η Java. Eφαρµογές Java Σ' αυτό το µάθηµα θα κάνουµε την πρώτη µας εφαρµογή σε Java η οποία (φυσικά) θα είναι το πρόγραµµα HelloWorld! και θα δούµε πως είναι µία εφαρµογή στη Java. Τι είναι µία εφαρµογή στη Java Μία Java εφαρµογή είναι ένα πρόγραµµα σχεδιασµένο για να εκτελεστεί από µία JVM στη µηχανή του χρήστη και όχι από ένα πρόγραµµα πλοήγησης. Μία Java εφαρµογή θα πρέπει να έχει και µία συνάρτηση main (κύρια) που είναι και το σηµείο εισόδου στην εφαρµογή (δηλαδή από εκεί ξεκινά το πρόγραµµα). Φυσικά µια συνάρτηση main θα πρέπει να βρίσκεται µέσα σε µία τάξη (class). Η Java είναι µία αντικειµενοστραφής γλώσσα προγραµµατισµού και εποµένως δεν µπορούµε να έχουµε καµία συνάρτηση που δεν είναι τµήµα µιας τάξης στη Java. Θα πρέπει να έχουµε µία έστω τάξη στην οποία θα περιέχεται η main ακόµα και αν δεν την χρειαζόµαστε! Η πρώτη µας εφαρµογή: Το πρόγραµµα "Hello World!" Σ αυτό το σηµείο θα κατασκευάσουµε την πρώτη µας εφαρµογή Java που ο κώδικάς της είναι ο ακόλουθος: public class HelloWorld public static void main(string[] args) System.out.println("Hello World!"); Θα πρέπει να αποθηκεύσουµε το αρχείο µε το όνοµα HelloWorld.java να το µεταγλωττίσουµε σε bytecodes δίνοντας javac HelloWorld.java και αν δεν έχει λάθη να το εκτελέσουµε πληκτρολογώντας java HelloWorld Java Applets Σ' αυτό το εδάφιο θα κάνουµε µία πρώτη επαφή µε τα Java Applets και θα κάνουµε το πρόγραµµα HelloWorld σε µορφή Applet. Επίσης θα κάνουµε µία HTML σελίδα που είναι απαραίτητη για να εισάγουµε σ' αυτήν το Applet. Τί είναι ένα Java Applet Τα Java Applets είναι προγράµµατα Java τα οποία είναι σχεδιασµένα για να εκτελούνται από ένα πρόγραµµα πλοήγησης (browser). Για λόγους διευκόλυνσης των προγραµµατιστών, η Sun παρέχει µε κάθε JDK (Java Development Kit) και ένα πρόγραµµα εκτέλεσης των Applets το οποίο λέγεται appletviewer. Κάθε Applet θα πρέπει να επεκτείνει την τάξη java.applet.applet και να υλοποιεί κάποιες µεθόδους (τουλάχιστον τη µέθοδο paint). Για να εκτελέσουµε ένα applet µέσα από ένα browser ή από τον appletviewer θα πρέπει να συµπεριλάβουµε την τάξη του applet σε µια HTML σελίδα χρησιµοποιώντας το tag <Applet>. Στη συνέχεια µπορούµε να φορτώσουµε τη σελίδα στο browser ή να δώσουµε appletviewer <όνοµα HTML αρχείου> για να δούµε το Applet να εκτελείται Το πρώτο µας Applet: Το Applet HelloWorldApplet - 3 -

4 Στη συνέχεια θα κατασκευάσουµε το Hello World πρόγραµµα σαν Applet, θα το µεταφράσουµε σε bytecodes και θα κατασκευάσουµε µια µινιµαλιστική HTML σελίδα για να µπορέσουµε να εκτελέσουµε το Applet µέσα από τον appletviewer: Το java πρόγραµµα είναι το ακόλουθο: import java.applet.applet; import java.awt.graphics; public class HelloWorldApplet extends Applet public void paint(graphics g) g.drawstring("hello world!", 50, 25); To HTML αρχείο είναι το ακόλουθο: <applet code="helloworldapplet.class" width=300 height=300> </applet> Για να εκτελέσουµε το applet θα πρέπει να φορτώσουµε την HTML σελίδα είτε σε ένα browser (π.χ. τον Internet Explorer) ή να εκτελέσουµε το applet µε τον appletviewer, δίνοντας την εντολή: appletviewer <όνοµα HTML σελίδας> Έννοιες αντικειµενοστραφούς προγραµµατισµού Η Java είναι µία αντικειµενοστραφής (object-oriented) γλώσσα προγραµµατισµού. Εποµένως είναι σηµαντικό να έχουµε από νωρίς µία γνωριµία µε τις βασικές έννοιες του αντικειµενοστραφούς προγραµµατισµού. Αυτό το εδάφιο αποσκοπεί σ' αυτή τη πρώτη γνωριµία µε τις έννοιες που διέπουν τον αντικειµενοστραφή προγραµµατισµό, ενώ αυτές οι έννοιες θα αναπτυχθούν αναλυτικά σε επόµενα µαθήµατα. Η έννοια της τάξης (class) Μία τάξη (class) είναι ένα καλούπι από το οποίο δηµιουργούνται αντικείµενα. Μία τάξη είναι µια µονάδα: (α) Αφαίρεσης: ιότι παριστάνει µία οντότητα του χώρου λύσης του προβλήµατος (β) Συγκέντρωσης: ιότι συγκεντρώνει δεδοµένα και µεθόδους κάτω από τον ίδιο τύπο. (γ) Απόκρυψης: ιότι επιτρέπει τον απόλυτο έλεγχο στο ποιες άλλες τάξεις µπορούν να προσπελάσουν τα δεδοµένα της (δ) Επέκτασης: ιότι µπορεί να αποτελέσει την βάση ή την επέκταση ή και τα δύο κάποιας ή κάποιων άλλων τάξεων. (ε) Εξέλιξης: ιότι δεδοµένων κάποιων προϋποθέσεων µπορεί να διευκολύνει στην εξέλιξη του λογισµικού µε συστηµατικό τρόπο Τα τµήµατα της δήλωσης µιας τάξης στη Java Τα τµήµατα αυτά είναι όπως φαίνονται στην ακόλουθη εικόνα: - 4 -

5 Η έννοια του αντικειµένου (object) Ένα αντικείµενο δεν είναι παρά µία περίσταση (instance) µιας τάξης. Όπως είδαµε µία τάξη είναι ένα καλούπι για να δηµιουργήσουµε αντικείµενα. Άρα αν δηµιουργήσουµε ένα αντικείµενο της τάξης Person που είδαµε στο προηγούµενο παράδειγµα, τότε αυτό θα έχει ένα ιδιωτικό ακέραιο µέλος (το age), ένα default κατασκευαστή που µόλις δηµιουργήσουµε το αντικείµενο θα θέσει την ηλικία του σε 33, και δύο µεθόδους την setage που µας επιτρέπει να θέσουµε την ηλικία κάποιου σε κάποια συγκεκριµένη τιµή και την getage που µας επιστρέφει την ηλικία του αντικειµένου. Σε ένα πρόγραµµα Java η δήλωση και η δηµιουργία αντικειµένου µπορεί να γίνει µε µία απλή δήλωση ενός αντικειµένου και την αρχικοποίησή του σε ένα νέο αντικείµενο του τύπου της τάξης. Για παράδειγµα για να δηλώσουµε ένα νέο Person το citizen θα γράφαµε: Person citizen = new Person(); Συγκέντρωση (encapsulation) και υπερφόρτωση (overloading) Η συγκέντρωση των δεδοµένων και των µεθόδων µίας τάξης είναι ένα από τα βασικά χαρακτηριστικά του αντικειµενοστραφούς προγραµµατισµού. Ένα αντικείµενο τύπου Person µπορεί να αναφερθεί σε µεθόδους της τάξης του χρησιµοποιώντας τον τελεστή 'τελεία', όπως στην ακόλουθη εντολή: citizen.setage(40); Αυτό µας επιτρέπει να έχουµε και άλλες τάξεις στις οποίες θα µπορούσαµε να έχουµε µία µέθοδο µε το ίδιο όνοµα. Για παράδειγµα θα µπορούσαµε να έχουµε και µία τάξη Animal που θα είχε µία µέθοδο setage. Η εικονική µηχανή Java δεν µπερδεύεται διότι γνωρίζει την τάξη του κάθε αντικειµένου. Αυτό το χαρακτηριστικό, η χρήση δηλαδή των ίδιων ονοµάτων για διαφορετικές τάξεις, ονοµάζεται υπερφόρτωση (overloading). Κληρονοµικότητα (Inheritance) Μία τάξη Java µπορεί να επεκταθεί (extend) από µία άλλη τάξη. Αυτή η άλλη τάξη ονοµάζεται υποτάξη της αρχικής που είναι η υπερτάξη της. Μια υποτάξη κληρονοµεί από την υπερτάξη της: (α) Όλα τα µέλη ιδιωτικά, προστατευµένα και δηµόσια, αν και µπορεί απευθείας να αναφερθεί µόνο στα προστατευµένα και στα δηµόσια

6 (β) Όλες τις µεθόδους ιδιωτικές, προστατευµένες και δηµόσιες αν και µπορεί απευθείας να αναφερθεί µόνο στις προστατευµένες και στις δηµόσιες. (γ) Τον τύπο της υπερτάξης της. Για το σύστηµα τύπων της Java αν η τάξη Β είναι υποτάξη της τάξης Α, τότε αντικείµενα της Β θα γίνουν δεκτά οπουδήποτε θα απαιτούνταν αντικείµενα της Α. Αυτή η συµβατότητα τύπων είναι µία πολύ ισχυρή ιδιότητα του αντικειµενοστραφούς προγραµµατισµού. Στη συνέχεια σαν παράδειγµα δίνουµε µία τάξη WorkingPerson η οποία επεκτείνει το Person. Αφού είναι Person τα αντικείµενα της τάξης WorkingPerson θα έχουν όλες τις µεθόδους και τα δεδοµένα της τάξης Person συν τα δικά τους: public class WorkingPerson extends Person String job; public WorkingPerson() super(); job= "Ανεργος"; //Η εξ ορισµού τιµή για την Ελλάδα! public void setjob(string j) job = j; public String getjob() return job; Πολυµορφισµός (polymorphism) Ένα αντικείµενο µιας υποτάξης είναι συµβατό για το σύστηµα τύπων µε την υπερτάξη διότι σηµασιολογικά το αντικείµενο της υποτάξης είναι και αντικείµενο της υπερτάξης. Αυτή η ιδιότητα µας επιτρέπει να καταχωρίσουµε σε αντικείµενα που έχουν δηλωθεί σαν αντικείµενα της υπερτάξης, αντικείµενα της υποτάξης. Αν η υπερτάξη και η υποτάξη έχουν λοιπόν µια κοινή µέθοδο, δηλαδή η µέθοδος ορίζεται εκ νέου στην υποτάξη, ποια µέθοδος θα κληθεί σε ένα αντικείµενο που έχει δηλωθεί σαν αντικείµενο της υπερτάξης; Η απάντηση σ αυτό το ερώτηµα είναι «Εξαρτάται». Αν το αντικείµενο είναι πράγµατι της υπερτάξης θα κληθεί η µέθοδος της υπερτάξης, αν όµως είναι της υποτάξης θα κληθεί η µέθοδος της υποτάξης. Αυτή η σηµαντική ιδιότητα ονοµάζεται πολυµορφισµός, διότι η ίδια µέθοδος για αντικείµενα του ιδίου τύπου φαίνεται να έχει πολλές µορφές, και είναι µία πολύ ισχυρή τεχνική στην οποία τα αντικειµενοστραφή συστήµατα οφείλουν µεγάλο µέρος της φήµης τους. Ο πολυµορφισµός, για παράδειγµα, µας δίνει το δικαίωµα να διατηρούµε δοµές δεδοµένων µε αντικείµενα µιας υπερτάξης τα οποία µπορεί να είναι στη πραγµατικότητα αντικείµενα των υποτάξεων και να διατρέχουµε αυτή τη δοµή καλώντας τη κοινή µέθοδο. Αυτό µας δίνει πολλές δυνατότητες τις οποίες θα διερευνήσουµε σε επόµενα µαθήµατα και κυρίως διευκολύνει την επεκτασιµότητα των εφαρµογών! Mεταβλητές (variables) Οι µεταβλητές είναι οι θέσεις µνήµης στις οποίες ένα πρόγραµµα τοποθετεί τα δεδοµένα του κατά τη διάρκεια της λειτουργίας του. Σ' αυτό το εδάφιο θα µάθουµε πως δηλώνουµε µεταβλητές, ποιοί είναι οι τύποι των µεταβλητών στη γλώσσα Java, πως πρέπει να είναι το όνοµα µιας µεταβλητής και ποια είναι η εµβέλεια της µεταβλητής. ήλωση µεταβλητών Η δήλωση µιας µεταβλητής έχει πάντοτε την µορφή: <Τύπος Μεταβλητής> <Όνοµα Μεταβλητής>; - 6 -

7 Για παράδειγµα η ακόλουθη δήλωση αφορά µία ακέραια µεταβλητή που ονοµάζεται count: int count; Προαιρετικά µπορεί να υπάρχει και µία αρχικοποίηση της µεταβλητής ταυτόχρονα µε την δήλωσή της. Για παράδειγµα η ακόλουθη δήλωση αρχικοποιεί την count στη τιµή 0. int count = 0; Στη συνέχεια και για την περιοχή εµβέλειας της συγκεκριµένης µεταβλητής µπορούµε να χρησιµοποιήσουµε την count όπου επιτρέπεται να χρησιµοποιηθούν ακέραιες τιµές. Ο τύπος εποµένως της µεταβλητής καθορίζει τις επιτρεπτές ενέργειες που µπορούν να γίνουν σε αυτή τη µεταβλητή. Τύποι µεταβλητών Οι τύποι των µεταβλητών της Java δίνονται από τον ακόλουθο πίνακα Τύπος Μέγεθος και µορφή Περιγραφή Ακέραιες µεταβλητές byte 8 bit σε µορφή Ακέραιος µήκους ενός byte συµπληρώµατος ως προς 2 short 16 bit σε µορφή Ακέραιος µικρού µήκους συµπληρώµατος ως προς 2 int 32 bit σε µορφή Ακέραιος συµπληρώµατος ως προς 2 long 64 bit σε µορφή Ακέραιος µεγάλου µήκους συµπληρώµατος ως προς 2 Πραγµατικές µεταβλητές float 32 bit σε µορφή IEEE 754 Πραγµατικός απλής ακρίβειας double 64 bit σε µορφή IEEE 754 Πραγµατικός διπλής ακρίβειας Άλλοι Τύποι char 16-bit Unicode χαρακτήρας Ένας χαρακτήρας boolean true ή false Μία boolean τιµή αληθής ή ψευδής Ονόµατα µεταβλητών Ένα πρόγραµµα Java αναφέρεται σε µία µεταβλητή µε το όνοµά της. Ένα όνοµα µιας µεταβλητής θα πρέπει να ικανοποιεί τους ακόλουθους περιορισµούς. (α) Πρέπει να είναι ένα έγκυρο αναγνωριστικό της Java αποτελούµενο από µία σειρά Unicode χαρακτήρων. (β) εν πρέπει να είναι δεσµευµένη λέξη της Java (keyword) (γ) εν πρέπει να υπάρχει άλλο ίδιο όνοµα µεταβλητής στην περιοχή εµβέλειας της µεταβλητής. Στη Java συνηθίζονται τα ακόλουθα: Τα ονόµατα των τάξεων ξεκινάνε µε κεφαλαία γράµµατα Τα ονόµατα των µεταβλητών ξεκινάνε µε πεζά γράµµατα Στη περίπτωση που έχουµε αναγνωριστικό πολλών λέξεων τότε ενώνουµε τις λέξεις γράφοντας µε κεφαλαίο το πρώτο γράµµα κάθε λέξης: π.χ. averylongidentifier - 7 -

8 Εµβέλεια µεταβλητών (scope) Η εµβέλεια µίας µεταβλητής είναι η περιοχή εκείνη του προγράµµατός µας στην οποία η µεταβλητή είναι ορατή και καθορίζει πότε η µεταβλητή δηµιουργείται και καταστρέφεται. Υπάρχουν τέσσερα ήδη µεταβλητών µε αντίστοιχα τέσσερις περιοχές εµβέλειας: Μεταβλητές µέλη µε εµβέλεια την τάξη Τοπικές µεταβλητές µε εµβέλεια την οµάδα εντολών στην οποία δηλώνονται Παράµετροι µεθόδων µε εµβέλεια την µέθοδο µέσα στην οποία δηλώνονται, και Παράµετροι χειριστών εξαιρέσεων µε εµβέλεια την οµάδα εντολών του χειριστή εξαιρέσεων Η εµβέλεια των µεταβλητών φαίνεται πιο παραστατικά στην ακόλουθη εικόνα: Τελικές µεταβλητές και παράµετροι Μπορούµε να δηλώσουµε µία µεταβλητή ή µία παράµετρος σε µία µέθοδο ως τελική (final).η δήλωση final έχει ως αποτέλεσµα την απαγόρευση της αλλαγής της τιµής στην εµβέλεια στην οποία ανήκει η µεταβλητή. ηλαδή η µεταβλητή είναι στη πραγµατικότητα σταθερά για την εµβέλεια αυτή. Στην περίπτωση της µεταβλητής η λέξη final θα πρέπει λογικά να χρησιµοποιηθεί µε κάποια αρχικοποίηση για την απόδοση της αρχικής και ταυτόχρονα οριστικής τιµής στη µεταβλητή, όπως στο ακόλουθο παράδειγµα: Final int interestrate = 0.15; Μπορούµε όµως να αναβάλλουµε την απόδοση της αρχικής τιµής και γι αργότερα αν αυτό είναι αναγκαίο. Η αρχική τιµή φυσικά µπορεί να αποδοθεί µόνο µία φορά. Μία τελική µεταβλητή στην οποία δεν έχει αποδοθεί ακόµα τιµή ονοµάζεται κενή (blank). Στην περίπτωση µιας παραµέτρου σε µία µέθοδο η δήλωση final έχει το νόηµα ότι η συγκεκριµένη παράµετρος δεν µπορεί να αλλάξει τιµή µέσα στη µέθοδο αλλά θα διατηρηθεί η τιµή που θα περαστεί από το καλούν τµήµα του προγράµµατος. Για παράδειγµα η µέθοδος withdraw δεν µπορεί να µεταβάλλει τη παράµετρο money, διότι η παράµετρος αυτή έχει δηλωθεί ως τελική (final). Μπορεί µόνο να την χρησιµοποιήσει.: public class Account - 8 -

9 public void withdraw(final double money) if (money > 0 && money<=balance) balance -= money; Τελεστές (operators) Σ' αυτό το µάθηµα θα αναφερθούµε στους τελεστές της Java και στις έγκυρες χρήσεις τους. Τι είναι οι τελεστές Οι τελεστές είναι σύµβολα τα οποία συµβολίζουν την τέλεση µιας λειτουργίας σε ένα, δύο ή και τρεις τελεστέους (operators). Υπάρχουν λοιπόν τρία είδη τελεστών ως προς τον αριθµό των τελεστέων στους οποίους επενεργούν: Μοναδιαίοι (unary) Τελεστές: Αυτοί επενεργούν σε ένα και µόνο τελεστέο. Για παράδειγµα ο τελεστής ++ αυξάνει κατά 1 τον τελεστέο του όπως στην έκφραση ++count. υαδικοί (binary) Τελεστές: Αυτοί επενεργούν σε δύο τελεστέους. Για παράδειγµα ο τελεστής + της αριθµητικής πρόσθεσης απαιτεί δύο τελεστέους όπως στην έκφραση op1 + op2. Τριαδικοί (ternary) Τελεστές: Αυτοί επενεργούν σε τρεις τελεστέους. Η Java έχει µόνο ένα τέτοιο τελεστή την έκφραση if που είναι ο :?, όπως στην ακόλουθη έκφραση a>4?a-4:4 Αριθµητικοί τελεστές Οι αριθµητικοί τελεστές χρησιµοποιούνται για τις αριθµητικές πράξεις και είναι αυτοί που φαίνονται στον ακόλουθο πίνακα. Τελεστής Χρήση Περιγραφή + n1+n2 Αποτιµάται στο άθροισµα των n1 και n2 - n1-n2 Αποτιµάται στη διαφορά των n1 και n2 * n1*n2 Αποτιµάται στο γινόµενο των n1 και n2 / n1 / n2 Αποτιµάται στο πηλίκο των n1 και n2 % n1%n2 Αποτιµάται στο υπόλοιπο της διαίρεσης του n1 δια του n n ή ++n Αυξάνει την µεταβλητή n κατά n ή n-- Μειώνει την µεταβλητή n κατά 1 Μερικές παρατηρήσεις για τους αριθµητικούς τελεστές είναι οι ακόλουθες: Ο τελεστής + στη Java έχει επεκταθεί έτσι ώστε να έχει και το νόηµα την συνένωσης για τα Strings. Έτσι για παράδειγµα οι ακόλουθες εντολές θα εµφανίσουν στην οθόνη τo µήνυµα των «Αρ. Χαρκτήρων: 10». Παρατηρείστε επίσης την σιωπηλή µετατροπή του count από int σε String για να συνενωθεί µε τη σταθερά «Αρ. Χαρακτήρων» int count = 10; System.out.println("Αρ. Χαρακτήρων: "+count); Ο τελεστής ++ όπως και ο --, µπορούν να εφαρµοστούν είτε από τα αριστερά (προ-αύξηση & προ-µείωση) είτε από τα δεξιά (µετά-αύξηση & µετά-µείωση)

10 Προ-αύξηση και προ-µείωση σηµαίνει ότι αν η συγκεκριµένη έκφραση αποτελεί τµήµα µιας ευρύτερης έκφρασης πρώτα θα υπολογιστεί η νέα τιµή της µεταβλητής που αυξάνουµε ή µειώνουµε και µετά θα υπολογιστεί η έκφραση µε τη χρήση της νέας τιµής, όπως στο παράδειγµα: int x=10; y = ++x; //Στο y θα εισαχθεί η τιµή 11, και φυσικά το x θα γίνει 11 Μετά-αύξηση και µετά-µείωση σηµαίνει ότι αν η συγκεκριµένη έκφραση αποτελεί τµήµα µιας ευρύτερης έκφρασης πρώτα θα υπολογιστεί η έκφραση µε βάση τη τιµή εκείνη τη στιγµή που έχει η µεταβλητή που αυξάνουµε ή µειώνουµε και µετά θα αυξηθεί ή θα µειωθεί η µεταβλητή όπως στο παράδειγµα: int x=10; y = x++; //Στο y θα εισαχθεί η τιµή 10, και φυσικά το x θα γίνει 11 Τελεστές σύγκρισης Οι τελεστές σύγκρισης που δίνονται στη συνέχεια συγκρίνουν δύο τιµές και καθορίζουν τη σχέση µεταξύ τους. Η έκφραση που περιέχει ένα τελεστή σύγκρισης µπορεί να είναι true ή false. Τελεστής Χρήση Περιγραφή > n1>n2 true αν το n1 είναι µεγαλύτερο του n >= n1>=n2 true αν το n1 είναι µεγαλύτερο ή ίσο του n2 < n1<n2 true αν το n1 είναι µικρότερο του n2 <= n1<=n2 true αν το n1 είναι µικρότερο ή ίσο του n2 == n1==n2 true αν το n1 είναι ίσο µε το n2!= n1!=n2 true αν το n1 είναι διάφορο του n2 Λογικοί τελεστές Τους λογικούς τελεστές συνήθως τους χρησιµοποιούµε µε τους τελεστές σύγκρισης για την κατασκευή ποιο πολύπλοκων λογικών εκφράσεων, εκφράσεων δηλαδή που µπορεί να είναι true ή false. Για παράδειγµα η ακόλουθη έκφραση θα είναι true αν η τιµή του x είναι µεταξύ 10 και 100: x>=10 && x<=100 Οι λογικοί τελεστές είναι αυτοί που φαίνονται στον ακόλουθο πίνακα: Τελεστής Χρήση Περιγραφή && e1 && e2 true αν και η e1 και η e2 είναι true. H e2 δεν αποτιµάται αν η e1 είναι false e1 e2 false αν και η e1 και η e2 είναι false. Η e2 δεν αποτιµάται αν η e1 είναι true!!e H λογική άρνηση της έκφρασης e & e1&e2 Το ίδιο µε τον && µόνο που η e2 θα αποτιµηθεί ακόµα και αν η e1 είναι false e1 e2 Το ίδιο µε τον µόνο που η e2 θα αποτιµηθεί ακόµα και αν η e1 είναι true Μερικές φορές είναι επιθυµητό να αποτιµηθεί και το δεύτερο µέρος µιας σύνθετης λογικής έκφρασης ακόµα και αν έχει υπολογιστεί η τιµή αλήθειας της έκφρασης. Για παράδειγµα φανταστείτε την ακόλουθη έκφραση: x>0 && somefunc(x)>

11 Αν θέλουµε σ αυτό το παράδειγµα να κληθεί οπωσδήποτε η συνάρτηση somefunc τότε θα πρέπει να χρησιµοποιήσουµε τον & αντί του &&, γιατί µε τον && αν το x <=0 δεν θα αποτιµηθεί το δεύτερο µέρος της έκφρασης µια και η τιµή αλήθειας της έκφρασης θα είναι ούτως ή άλλως false, αφού το πρώτο µέρος της έκφρασης θα είναι false. Ανάλογη είναι και η χρήση του τελεστή σε σχέση µε τον. Για παράδειγµα στην έκφραση x>0 somefunc(x)>10 θα κληθεί η somefunc ακόµα και αν το x είναι θετικό υαδικοί τελεστές Με τους τελεστές αυτούς µπορούµε και κάνουµε πράξεις σε επίπεδο bit. Τελεστής Χρήση Περιγραφή >> n1 >> n2 Κάνει ολίσθηση n2 bits δεξιά στο n1 << n1<<n2 Κάνει ολίσθηση n2 bits αριστερά στο n1 >>> n1 >>> n2 Το ίδιο µε τον >> αλλά χωρίς πρόσηµο & n1&n2 υαδικό ΚΑΙ των n1 και n2 n1 n2 υαδικό Ή των n1 και n2 ^ n1 ^ n2 Αποκλειστικό Ή (XOR) των n1 και n2 ~ ~n υαδικό συµπλήρωµα του n Οι τελεστές δυαδικών πράξεων χρησιµοποιούνται όταν θέλουµε να επέµβουµε στην τιµή µιας µεταβλητής σε επίπεδο bit. Για παράδειγµα έστω ότι έχουµε δηλώσει τις ακόλουθες σταθερές: final int TURBO = 1; final int TWO_DOORS = 2; final int CHEAP = 4; που έστω ότι αφορούν τα χαρακτηριστικά ενός αυτοκινήτου. Θα µπορούσαµε στη συνέχεια να δηλώσουµε µία µεταβλητή int έστω την int characteristics = 0 και στη συνέχεια να αποδώσουµε σε αυτή τη µεταβλητή ταυτόχρονα δύο ή και τρεις ιδιότητες χρησιµοποιώντας τον τελεστή όπως παρακάτω: characteristics = TURBO TWO_DOORS; Σε άλλο σηµείο του προγράµµατος θα µπορούσαµε να ελέγξουµε µε την χρήση του δυαδικού & αν ένα αυτοκίνητο είναι για παράδειγµα TURBO ως εξής: if ((characteristics & TURBO) == TURBO) Tελεστές καταχώρισης Ο τελεστής καταχώρισης τιµής σε µεταβλητή είναι ο =. Ο = αποδίδει την τιµή της έκφρασης στα δεξιά του στη µεταβλητή που βρίσκεται στα αριστερά του, όπως στην εντολή: x = y+10; όπου θα υπολογιστεί η έκφραση y+10 και στη συνέχεια θα καταχωρηθεί η τιµή αυτή στη µεταβλητή x. Στη Java χρησιµοποιούνται και άλλοι τελεστές απόδοσης τιµής όπου είναι ουσιαστικά συντοµεύσεις για απόδοση τιµής σε µεταβλητή µε ταυτόχρονη αύξηση, µείωση κτλ αυτής της µεταβλητής. Για παράδειγµα η έκφραση µε τον τελεστή +=:

12 x += 10; είναι ταυτόσηµη µε την έκφραση: x = x+10; Αντίστοιχη σηµασία έχουν και οι τελεστές: -= *= /= %= &= = ^= <<= >>= >>>= οµές ελέγχου ροής προγράµµατος Σ' αυτό το µάθηµα θα ασχοληθούµε µε τις δοµές ροής ελέγχου προγράµµατος της Java, όπως η if και η while. οµές ελέγχου ροής στη Java Υπάρχουν γενικά δύο ήδη δοµών ελέγχου ροής (control flow): Οι δοµές επιλογής και Οι δοµές επανάληψης Ο ακόλουθος πίνακας συνοψίζει αυτές τις δοµές για τη Java Είδος δοµής ελέγχου ροής οµές Επιλογής οµές Επανάληψης οµή ελέγχου ροής if-else switch-case for while do-while Πέρα από τις εντολές του πιο πάνω πίνακα ο έλεγχος ροής σε ένα πρόγραµµα Java µπορεί να µεταφερθεί και σε κάποιο άλλο σηµείο εξαιτίας της πρόκλησης µιας εξαίρεσης. Αλλά για τις εξαιρέσεις (exceptions) και τους χειριστές τους (exception handlers) θα µιλήσουµε σε επόµενα µαθήµατα. Επίσης κάποιες άλλες εντολές πέρα από τις ίδιες τις δοµές ελέγχου ροής που είδαµε προηγουµένως είναι οι: break, continue και return που µεταφέρουν το έλεγχο ροής σε άλλα σηµεία του προγράµµατος. Την χρήση αυτών των εντολών θα τη δούµε στη συνέχεια. Η Java επιτρέπει και τη χρήση ετικετών αλλά δεν υποστηρίζει την εντολή goto. Αντί αυτής µπορούν και µε τις ετικέτες να χρησιµοποιηθούν οι εντολές break και continue. Η δοµή επιλογής if-else Η εντολή if µας βοηθάει στον έλεγχο µίας λογικής έκφρασης (της συνθήκης) και αν είναι αληθής εκτελούνται µία ή περισσότερες εντολές ενώ αν είναι ψευδής δεν εκτελούνται. Αν οι εντολές είναι περισσότερες από µία τότε θα πρέπει οι εντολές να περικλειστούν ανάµεσα από άγκιστρα (τα οποία οµαδοποιούν εντολές). Το συντακτικό της εντολής if είναι το ακόλουθο if (συνθήκη) εντολές

13 π.χ. if (x!=0) System.out.println("To x δεν είναι 0"); y = 1/x; Η εντολή if έχει επίσης και τη φράση else µε την οποία επιτρέπεται η εκτέλεση µίας οµάδας εντολών εναλλακτικά αν δεν ισχύει η συνθήκη. Φυσικά µπορούµε να έχουµε και εµφωλευµένα if δηλαδή if µέσα σε άλλα if όσες φορές θέλουµε. Το συντακτικό της if επαυξηµένο µε τη φράση else είναι το ακόλουθο: π.χ. if (συνθήκη) οµάδα-εντολών-1 else οµάδα-εντολών-2 if (x!=0) System.out.println("Το x δεν είναι 0"); y=1/x; else System.out.println("Το x είναι 0"); y=0; Η δοµή επιλογής switch-case Όταν οι εναλλακτικές περιπτώσεις που πρέπει να ελέγξουµε µε την if είναι πάρα πολλές και αφορούν τον έλεγχο για ισότητα της τιµής µιας µεταβλητής ή µιας έκφρασης µε κάποιες τιµές προτιµάται η switch-case η οποία έχει την ακόλουθη γενική µορφή: switch (έκφραση) case τιµή-1: εντολές-1; [break;] case τιµή-ν: εντολές-ν; [break;] [default: εντολές; [break;]] Η switch-case αποτιµά την τιµή της έκφρασης που ελέγχεται και στη συνέχεια διατρέχει µε τη σειρά όλες τις περιπτώσεις που δίνονται. Αν κάποια περίπτωση βρεθεί αληθής τότε εκτελούνται οι εντολές που δίνονται µετά την άνω-κάτω τελεία γι αυτή τη περίπτωση. Αν καµία περίπτωση δεν βρεθεί αληθής τότε εκτελείται η default περίπτωση αν υπάρχει. Προσοχή χρειάζεται στη χρήση του break που είναι µεν προαιρετική αλλά απαιτείται τις περισσότερες φορές, µια και αν δεν υπάρχει τότε θα εκτελεστούν και οι εντολές τις επόµενης περίπτωσης (χωρίς να ελεγχθεί η τιµή της) και πιθανώς και άλλων, µέχρι να βρεθεί το επόµενο break ή να τελειώσει η switch-case. Παρόλα αυτά ενδέχεται να υπάρχουν κάποιες περιπτώσεις που αυτό θα ήταν βολικό, όπως δείχνει το ακόλουθο τµήµα κώδικα που υπολογίζει τις µέρες ενός µήνα ανάλογα µε το ποιος µήνας είναι (η τιµή της µεταβλητής month) και το αν το έτος (year) είναι δίσεκτο:

14 switch (month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: numdays = 31; break; case 4: case 6: case 9: case 11: numdays = 30; break; case 2: if ( ((year % 4 == 0) &&!(year % 100 == 0)) (year % 400 == 0) ) numdays = 29; else numdays = 28; break; Η δοµή επανάληψης for Η εντολή for είναι χρήσιµη για την επανάληψη µιας σειράς εντολών όταν είναι γνωστό εκ των προτέρων πόσες φορές θέλουµε να επαναληφθούν. Έτσι συνήθως το for ελέγχεται από ένα µετρητή ο οποίος µεταβάλλεται από µία αρχική τιµή µέχρι να ξεπεράσει µία τελική τιµή. Στη for επίσης καθορίζεται το πόσο θα µεταβάλλεται αυτός ο µετρητής σε κάθε βήµα. Η γενική µορφή της for είναι η ακόλουθη: for (αρχικοποίηση; τερµατισµός; αύξηση) εντολές; Για παράδειγµα το ακόλουθο τµήµα κώδικα εµφανίζει στην οθόνη τους αριθµούς από το 1 µέχρι το 10:... for (int i=1; i<=10; i++) System.out.println(i);... Στη φράση της αρχικοποίησης το i δηλώνεται (η εµβέλειά του είναι το for loop) και αρχικοποιείται στο1. Στη φράση του τερµατισµού το i ελέγχεται για το αν έχει ξεπεράσει το 10. Άρα ο συγκεκριµένος βρόχος θα επαναληφθεί µέχρι το i να ξεπεράσει το 10. Στη φράση της µεταβολής το i αυξάνεται κατά 1. Αυτό σηµαίνει ότι το i θα πάρει διαδοχικά τις τιµές 1, 2,, 10 Σε κάθε βήµα της επανάληψης ελέγχεται η τιµή του i. Aν το i ξεπεράσει το 10 ο βρόχος τερµατίζεται, αν όχι αυξάνεται κατά 1 και εκτελείται ξανά η µία και µοναδική εντολή αυτού του βρόχου. Η δοµή επανάληψης while

15 Η εντολή for που είδαµε προηγουµένως είναι κατάλληλη όταν γνωρίζουµε πόσες επαναλήψεις θα γίνουν. Αν δεν γνωρίζουµε πόσες επαναλήψεις θα γίνουν µία καλύτερη εντολή είναι η while. H while έχει την ακόλουθη γενική µορφή: while (συνθήκη) εντολές; Η εντολή ή εντολές που ακολουθούν το while θα εκτελεστούν όσο η συνθήκη είναι αληθής. Ο βρόχος δηλαδή θα τερµατιστεί όταν η συνθήκη - που είναι µία boolean έκφραση - γίνει ψευδής Στο ακόλουθο τµήµα κώδικα ελέγχεται αν η τιµή x βρίσκεται µέσα στο πίνακα numbers. Κάνουµε δηλαδή µία σειριακή αναζήτηση στα στοιχεία του πίνακα. Αν το στοιχείο βρεθεί η µεταβλητή found γίνεται true και βγαίνουµε από το βρόχο. Επίσης από το βρόχο θα βγούµε αν ελεγχθούν και τα δέκα στοιχεία του πίνακα και δεν έχει βρεθεί ακόµα το x. boolean found = false; int i=0; while (!found && i!=10) if (numbers[i++] == x) found = true; Η δοµή επανάληψης do-while Υπάρχουν κάποιες περιπτώσεις στις οποίες θα θέλαµε οι εντολές µέσα στο βρόχο να εκτελεστούν τουλάχιστον µία φορά και στη συνέχεια να ελεγχθεί η συνθήκη εξόδου. Σ αυτές τις περιπτώσεις προτιµάται η χρήση της do-while αντί της while. Η do-while έχει την ακόλουθη γενική µορφή: do εντολές; while (συνθήκη); Στην do-while πρώτα εκτελούνται οι εντολές και στη συνέχεια ελέγχεται η συνθήκη. Ο βρόχος τερµατίζεται αν η συνθήκη βρεθεί ψευδής. H do-while δεν χρησιµοποιείται πολύ συχνά αλλά έχει κι αυτή τις χρήσεις της. Για παράδειγµα όταν διαβάζουµε χαρακτήρες από ένα αρχείο µέχρι να διαπιστώσουµε το τέλος του αρχείου θα πρέπει να διαβάσουµε τουλάχιστον ένα χαρακτήρα, όπως δείχνει και το ακόλουθο τµήµα κώδικα:... int c; Reader in;... do c = in.read();... while (c!= 1);... Εντολές διακλάδωσης Η Java έχει τρεις εντολές διακλάδωσης οι οποίες είναι βολικές σε αρκετές περιπτώσεις και ιδιαίτερα µε τις επαναληπτικές δοµές που έχουµε συζητήσει. Οι εντολές διακλάδωσης είναι οι: break, continue και return

16 Την εντολή break ήδη την είδαµε σε µία χρήση της µε την switch-case. Μία ακόµα αρκετά συνήθη χρήση της break είναι η χρήση της για άµεση έξοδο από κάποιο βρόχο. Για παράδειγµα η σειριακή αναζήτηση που είδαµε µε το while θα µπορούσε να γίνει ως εξής: int i; boolean found = false; for (i=0; i<10; i++) if (numbers[i]==x) found = true; break; Η χρήση της continue µέσα σε ένα βρόχο προκαλεί την άµεση αποτίµηση και πάλι της συνθήκης εξόδου. Για να γίνει αυτό στις εντολές for και while ο έλεγχος µεταφέρεται στη πρώτη γραµµή του βρόχου ενώ στο do-while στη τελευταία. Στη συνέχεια αποτιµάται και πάλι η συνθήκη τερµατισµού και η επαναληπτική διαδικασία τερµατίζεται ή συνεχίζεται ανάλογα µε την τιµή της συνθήκης (true ή false) ως συνήθως. Οι εντολές break και continue έχουν και µία µορφή για ετικέτες (labeled break και labeled continue) που δεν θα συζητήσουµε εδώ µια και στη πράξη οι ετικέτες δεν χρησιµοποιούνται αφού οι υπόλοιπες δοµές που είδαµε αρκούν για όλες τις πιθανές χρήσεις, χωρίς να εµφανίζουν πολλά από τα προβλήµατα που πιθανώς να εµφανιστούν µε την χρήση των ετικετών. Η συζήτηση για την εντολή return αναβάλλεται µέχρι να συζητήσουµε για τις µεθόδους των τάξεων σε επόµενα µαθήµατα. Πίνακες Σ' αυτό το µάθηµα θα ασχοληθούµε µε τους πίνακες οµοειδών στοιχείων (π.χ. ακεραίων) στη Java. ήλωση και δηµιουργία πινάκων Οι πίνακες, όπως και στις άλλες γλώσσες προγραµµατισµού, είναι δοµές δεδοµένων για την συλλογή και διαχείριση δεδοµένων του ιδίου τύπου. Η διαφορά µε τις περισσότερες από τις άλλες γλώσσες είναι ότι οι πίνακες στη Java είναι αντικείµενα και έχουν και ιδιότητες όπως η length που µας δείχνει ποιο είναι το µέγεθος ενός πίνακα. Η δήλωση ενός πίνακα γίνεται ως εξής: τύπος[] όνοµα; όπως για παράδειγµα στην ακόλουθη δήλωση: int[] arrayofints; που δηλώνει ένα πίνακα ακεραίων µε το όνοµα arrayofints. Η δήλωση του πίνακα δεν αρκεί για τη χρησιµοποίησή του. Γι αυτό θα πρέπει να δεσµευτεί ο χώρος µνήµης που απαιτείται για το πίνακα. Επειδή ο πίνακας είναι αντικείµενο απαιτείται όπως και µε όλα τα αντικείµενα στη Java να δηµιουργήσουµε ένα αντικείµενο (instantiation) για τον πίνακα µε την εντολή new. Έτσι συνήθως η δήλωση ενός πίνακα συνδυάζεται µε την δηµιουργία του αντικειµένου µε την new, στην οποία προσδιορίζεται και το µέγεθος του πίνακα. Αυτό γίνεται ως εξής:

17 τύπος[] όνοµα = new τύπος[µέγεθος]; όπως για παράδειγµα στην ακόλουθη δήλωση: int[] arrayofints = new int[10]; που δηµιουργεί ένα πίνακα 10 ακεραίων µε το όνοµα arrayofints. Η δηµιουργία του πίνακα δεν είναι απαραίτητο να γίνει ταυτόχρονα µε την δήλωσή του µπορεί να γίνει και αργότερα, όπως δείχνει το ακόλουθο τµήµα κώδικα: int[] arrayofints;... arrayofints = new int[10];... Σε κάθε περίπτωση πάντως δεν επιτρέπεται η αναφορά σε στοιχεία του πίνακα πριν να δηµιουργηθεί ο πίνακας µε την εντολή new. ΠΡΟΣΟΧΗ: Ένα σηµείο που προκαλεί σύγχυση στους νέους προγραµµατιστές στη Java είναι η χρήση των πινάκων για αντικείµενα και όχι για τύπους της γλώσσας όπως ο int. Σ αυτή τη περίπτωση πέρα από τη δηµιουργία του πίνακα απαιτείται και η δηµιουργία των ίδιων των αντικειµένων τα οποία βρίσκονται στον πίνακα. Χρήση πινάκων Το ακόλουθο τµήµα κώδικα δηµιουργεί ένα πίνακα 10 ακεραίων και στη συνέχεια τοποθετεί µέσα σ αυτόν τους ακεραίους από το 0 µέχρι το int[] arrayofints = new int[10]; for (int i=0; i<10; i++) arrayofints[i] = i;... Το ακόλουθο τµήµα κώδικα εµφανίζει τα στοιχεία που βρίσκονται στο πίνακα arrayofints. Παρατηρείστε τη χρήση της ιδιότητας length για να αναφερθούµε στο µήκος του πίνακα:... for (int i=0; i<arrayofints.length; i++) System.out.println(arrayOfInts[i]);... Πίνακες περισσοτέρων διαστάσεων Στη Java µπορείτε να έχετε πίνακες δύο, τριών, τεσσάρων κλπ διαστάσεων. Στη πράξη όµως σπάνια συναντούµε περιπτώσεις στις οποίες η χρήση πινάκων που έχουν περισσότερες από δύο διαστάσεις. Ο ακόλουθος πίνακας δίνει κάποια παραδείγµατα για την δηµιουργία, αναφορά σε στοιχεία και εύρεση µήκους πινάκων µέχρι και τριών διαστάσεων. ιάσταση ήλωση και ηµιουργία ενός πίνακα ακεραίων Αναφορά Εύρεση Μήκους 1 int a[] = new int[10] a[i] a.length 2 int a[][]=new int[3][10] a[i][j] a.length a[i].length

18 3 int a[][][]= new int[3][5][10] a[i][j][k] a.length a[i].length a[i][j].length Το ακόλουθο είναι ένα απλό παράδειγµα χρήσης δύο διαστάσεων. Ανάλογη είναι και η χρήση πινάκων τριών διαστάσεων κλπ. class Array2 public static void main(string[] args) int marks[][] = new int[3][10]; for (int i=0; i<marks.length; i++) for (int j=0; j<marks[i].length; j++) marks[i][j] = i*j; System.out.print(marks[i][j]+" "); System.out.println(); Συµβολοσειρές (Strings) Σ' αυτό το µάθηµα θα αναφερθούµε αναλυτικά στην τάξη java.lang.string. ήλωση και δηµιουργία String Μία συµβολοσειρά είναι µία σειρά από χαρακτήρες. Στη Java µία συµβολοσειρά υλοποιείται µε τη τάξη String του πακέτου java.lang. Ένα String είναι λοιπόν ένα αντικείµενο και όπως όλα τα αντικείµενα πρέπει να δηλωθεί και να δηµιουργηθεί µε την εντολή new, όπως στο παράδειγµα: String s = new String(); Εναλλακτικά µπορούµε να δηµιουργήσουµε ένα String αν του αποδώσουµε µία τιµή που θα είναι µία σταθερά συµβολοσειρά, όπως στο παράδειγµα: String s = "George"; Αφού δηµιουργήσουµε το String µπορούµε στη συνέχεια να το χρησιµοποιήσουµε. H τάξη String παρέχει πολλές χρήσιµες µεθόδους γι αυτό. ΠΡΟΣΟΧΗ: Μια συνήθη πηγή λαθών για τους νέους στη Java είναι η σύγκριση για ισότητα των String. Επειδή τα String είναι αντικείµενα ο τελεστής == δεν συγκρίνει τη τιµή τους, αλλά τη διεύθυνσή τους στη µνήµη. Αν θέλουµε να δούµε αν δύο String έχουν την ίδια τιµή θα πρέπει να χρησιµοποιήσουµε τη συνάρτηση equals. Για παράδειγµα για να δούµε αν το String s1 έχει την ίδια τιµή µε το String s2, θα πρέπει να αποτιµήσουµε την έκφραση s1.equals(s2) ή s2.equals(s1). Οι παράµετροι της main Όπως ήδη θα έχετε παρατηρήσει στη µέθοδο main περνιέται σαν παράµετρος ένας πίνακας από String που τον ονοµάσαµε args. Αυτός ο πίνακας είναι µία σειρά παράµετροι που µπορούν να περαστούν στην εφαρµογή όταν τη ξεκινάµε, ως εξής: java <όνοµα-τάξης> <παράµετρος-0> <παράµετρος-ν>

19 π.χ. java CheckUser Master Το ακόλουθο παράδειγµα ελέγχει τη πρώτη παράµετρο που δόθηκε στη γραµµή εντολών που ξεκίνησε το πρόγραµµα για να δει αν είναι Master. Αν είναι τότε εµφανίζει το µήνυµα Welcome Master! διαφορετικά εµφανίζει το µήνυµα Unauthorized User!. class CheckUser public static void main(string[] args) if (args[0].equals("master")) System.out.println("Welcome Master!"); //Kane kati epitrepto mono gia tous Masters else System.out.println( Unauthorized User!); Βασικές µέθοδοι της τάξης String int length(): Επιστρέφει το µήκος του String char charat(int index): Επιστρέφει τον χαρακτήρα του String στη θέση index. Ο index πρέπει να είναι από 0 έως length()-1. String substring(int beginindex): Επιστρέφει το substring που ξεκινά από την θέση beginindex µέχρι το τέλος του String. String substring(int beginindex, int endindex): Επιστρέφει το τµήµα του String από την θέση beginindex µέχρι την θέση endindex-1. byte[] getbytes(string enc): Μετατρέπει το array των χαρακτήρων που συνιστούν το String σε ένα array από bytes, χρησιµοποιώντας την κωδικοσελίδα που περιγράφεται από το String της παραµέτρου. void getchars(int srcbegin, int srcend, char[] dst, int dstbegin): Τοποθετεί τους χαρακτήρες του String από τη θέση srcbegin µέχρι την srcend-1 στο array dst, ξεκινώντας από την θέση dstbegin int indexof(int ch): Επιστρέφει τη θέση της πρώτης εµφάνισης του ch στο String ή 1 αν ο ch δεν υπάρχει στο String. int lastindexof(int ch): Επιστρέφει τη θέση της τελευταίας εµφάνισης του ch στο String ή 1 αν ο ch δεν υπάρχει στο String. int compareto(string anotherstring): Επιστρέφει θετικό αριθµό αν το anotherstring είναι µεγαλύτερο λεξικογραφικά από αυτό το String, αρνητικό αριθµό αν είναι µικρότερο, και 0 αν τα δύο Strings έχουν την ίδια τιµή boolean equals(object anobject): Επιστρέφει true αν το anobject είναι ένα String που δεν είναι null και που έχει την ίδια τιµή µε αυτό το String. int hashcode(): Είναι ουσιαστικά µια συνάρτηση κατακερµατισµού (hashing function) που επιστρέφει την τιµή µιας θέσης για το String σε µια δοµή Hashtable (π.χ. το java.util.hashtable). Η τιµή της συνάρτησης προκύπτει από τον υπολογισµό της ακόλουθης έκφρασης: s[0]*31^(n-1) + s[1]*31^(n-2) s[n-1] όπου s[0], s[1] κ.λ.π. είναι οι χαρακτήρες του String, n είναι το µήκος του String και ο χαρακτήρας ^ έχει το νόηµα της ύψωσης σε δύναµη. Παράδειγµα της τάξης String

20 Θα κάνουµε µία τάξη TokenMethods που θα έχει µια static µέθοδο printlnpertoken(string str) η οποία θα δέχεται ως παράµετρο ένα String και θα εκτυπώνει τα tokens µέσα στο String. Ως token θεωρούµε µια σειρά χαρακτήρων που είναι συνεχόµενη και χωρίζεται από ένα άλλο token µε έναν ή περισσότερους από τους χαρακτήρες λευκού διαστήµατος, που είναι \n, \t, \r, public class TokenMethods public static void printlnpertoken(string str) int currentposition = 0; int strlength = str.length(); int inwhitespace = 0; String whitespacechars = " \n\r\t"; //όσο δεν τελείωσε το String while (currentposition < strlength) //αγνόησε τους χαρακτήρες λευκού διαστήµατος στην αρχή της λέξης while (whitespacechars.indexof(str.charat(currentposition)) >= 0) currentposition++; int placeholder = currentposition; //όσο δεν είναι χαρακτήρας λευκού διαστήµατος απλά προχωρά στην //επόµενη θέση στο String while ((currentposition < strlength) && (whitespacechars.indexof(str.charat(currentposition))< 0)) currentposition++; //εκτυπώνει το String από τον τελευταίο µη λευκό χαρακτήρα έως και //πριν την τρέχουσα θέση System.out.println(str.substring(placeHolder, currentposition)); public static void main(string args[]) TokenMethods.printlnPerToken("Joshua Tree U2"); Στο πιο πάνω παράδειγµα η static µέθοδος printlnpertoken καλείται µε το String Joshua Tree Το αποτέλεσµα θα είναι: U2. Όπως βλέπετε το String εµφανίστηκε λέξη προς λέξη, µε κάθε λέξη σε ξεχωριστή γραµµή, ενώ αγνοήθηκαν οι χαρακτήρες λευκού διαστήµατος. Η τάξη StringBuffer

21 Η τάξη StringBuffer, χρησιµοποιείται για Strings τα οποία θέλουµε να µπορούν να αλλάξουν τιµή. Σηµειωτέον πως ένα String δεν αλλάζει τιµή. Όταν δίνετε µία νέα τιµή σε ένα String τότε παρασκηνιακά δηµιουργείτε ένα νέο String µε την νέα τιµή. Έτσι η χρήση της τάξης StringBuffer συνίσταται όταν τα περιεχόµενα ενός String µπορεί να αλλάξουν συχνά, γιατί δεν απαιτείται η δηµιουργία νέων αντικειµένων και η συλλογή των παλιών από τον συλλέκτη σκουπιδιών. Βασικές µέθοδοι και κατασκευαστές της τάξης StringBuffer Βασικοί constructors StringBuffer(): Κατασκευάζει έναν άδειο StringBuffer StringBuffer(String str): Κατασκευάζει ένα StringBuffer µε αρχικά περιεχόµενα το str Βασικές µέθοδοι public StringBuffer append(char c): Προσαρτά τον c στο τέλος του StringBuffer. Μέθοδοι append υπάρχουν για κάθε βασικό τύπο της Java αλλά και για Strings ή και για οποιοδήποτε Object (String.valueOf(Object)). public StringBuffer insert(int offset, char c): Εισάγει τον c στη θέση offset. Μέθοδοι insert υπάρχουν επίσης για όλους τους τύπους. public void setcharat(int index, char ch): Αλλάζει τον χαρακτήρα στην θέση index µε τον ch public StringBuffer reverse(): Αντιστρέφει τα περιεχόµενα του StringBuffer. public char charat(int index): Επιστρέφει τον χαρακτήρα στη θέση index. public String tostring(): Επιστρέφει ένα νέο String µε τα περιεχόµενα του StringBuffer public int length(): Επιστρέφει το µήκος του StringBuffer Παράδειγµα της τάξης StringBuffer Θα κάνουµε τάξη Title µε µιά static µέθοδο της µορφής: public static void maketitle(stringbuffer sb) η οποία θα δέχεται ένα StringBuffer και θα αλλάζει τα πρώτα γράµµατα των λέξεων που περιέχει µε κεφαλαία. Για την µετατροπή σε κεφαλαία θα χρησιµοποιήσουµε την ακόλουθη static µέθοδο της τάξης Character: public static char touppercase(char ch) Επίσης για να διαπιστώσουµε αν ένας χαρακτήρας είναι whitespace, θα χρησιµοποιήσουµε την ακόλουθη static µέθοδο της τάξης Character: public static boolean iswhitespace(char ch) public class Title public static void maketitle(stringbuffer sb) boolean inwhitespace = false; for (int i = 0; i < sb.length(); i++) char c = sb.charat(i); if (Character.isWhitespace(c)) inwhitespace = true; else if (inwhitespace i==0) sb.setcharat(i, Character.toUpperCase(c)); inwhitespace = false; public static void main(string args[]) StringBuffer sb = new StringBuffer("pera apo tin afriki");

22 Title.makeTitle(sb); System.out.println(sb); Η µέθοδος maketitle απλά διασχίζει τον StringBuffer κάνοντας το πρώτο γράµµα κάθε λέξης κεφαλαίο. Το αποτέλεσµα της εκτέλεσης του προγράµµατος θα είναι: Ασκήσεις Να γίνει πρόγραµµα StringUpper.java το οποίο θα έχει πίνακα µε 10 String µε Αγγλικές λέξεις. Το πρόγραµµα θα πρέπει να διατρέχει τον πίνακα και να µετατρέπει κάθε String στο array αυτό σε ένα String µε κεφαλαία γράµµατα. Να χρησιµοποιήσετε τη συνάρτηση touppercase της τάξης String. (Προτεινόµενη λύση: StringUpper.java) Να γίνει πρόγραµµα SortArray.java το οποίο χρησιµοποιεί τον αλγόριθµο της ταξινόµησης µε τη µέθοδο της φυσαλίδας για την αύξουσα ταξινόµηση ενός πίνακα 10 ακεραίων (Προτεινόµενη λύση: SortArray.java) Να γίνει πρόγραµµα SeekNumber.java το οποίο χρησιµοποιεί τον αλγόριθµο της δυαδικής αναζήτησης για να αναζητήσει ένα ακέραιο που δίνεται σαν παράµετρος στο πρόγραµµα σε ένα πίνακα ακεραίων ο οποίος είναι ταξινοµηµένος. (Προτεινόµενη λύση: SeekNumber.java) Προτεινόµενες Λύσεις class StringUpper public static void main(string[] args) String[] arrayofwords = "backspace", "deletes", "the", "character", "to", "the", "left", "of", "the", "cursor"; for (int i=0; i<arrayofwords.length; i++) arrayofwords[i] = arrayofwords[i].touppercase(); System.out.println(arrayOfWords[i]); class SortArray public static void main(string[] args) int[] a = 10, 5, 109, 200, 8, 764, 32, 87, 87, 9;

23 //bubble sort for (int i=1; i<a.length-1; i++) for (int j=a.length-1; j>=i; j--) if (a[j-1] > a[j]) int k = a[j-1]; a[j-1] = a[j]; a[j] = k; //Emfanisi tou apotelesmatos for (int i=0; i<a.length; i++) System.out.println("a["+i+"] = "+a[i]); class SeekNumber public static void main(string[] args) int a[] = 1, 9, 10, 23, 45, 67, 90, 95, 105, 180 ; int left, right, mid=0; if (args.length!= 1) System.out.println("Usage: java SeekNumber int"); System.exit(0); int x = Integer.parseInt(args[0]); left = 0; right = a.length-1; boolean found = false; while (!found && (left<=right)) mid = (left+right)/2; if (a[mid] == x) found = true; else if (a[mid] < x) left = mid + 1; else right = mid - 1; if (found) System.out.println(x+" was found in position a["+mid+"]"); else System.out.println(x+" was not found");

24 Κεφάλαιο 2: Αντικειµενοστραφής Προγραµµατισµός µε τη Java Σ' αυτό το εδάφιο θα κάνουµε µία εισαγωγή στις έννοιες που θα αναλύσουµε στα επόµενα. Σκοπός των επόµενων µαθηµάτων Στα επόµενα µαθήµατα θα µάθουµε τα ακόλουθα: 1. Πως δηµιουργούµε µία τάξη στη Java 2. Ποιος είναι ο κύκλος ζωής ενός αντικειµένου στη Java 3. εδοµένα και µέθοδοι µιας τάξης σε βάθος 4. Προσδιοριστές πρόσβασης 5. Κληρονοµικότητα τελικές, αφηρηµένες και εσωτερικές τάξεις 6. ιεπαφές (Interfaces) 7. Πακέτα (packages) Τι γνωρίζουµε ήδη Στο πρώτο µάθηµα είδαµε πως δηλώνουµε µία τάξη στη Java και κάναµε µία πρώτη γνωριµία µε τα βασικά στοιχεία της γλώσσας. Συγκεκριµένα είδαµε τα ακόλουθα: Πως είναι µία τάξη στη Java Τι είναι ένα αντικείµενο Τι είναι συγκέντρωση (encapsulation) και υπερφόρτωση (overloading) Τι είναι κληρονοµικότητα (inheritance), και Τι είναι πολυµορφισµός Αυτά αναφέρονται στο µάθηµα: "Έννοιες αντικειµενοστραφούς προγραµµατισµού" Στη συνέχεια θα εκµεταλλευτούµε αυτές τις βάσεις που θέσαµε για να επεκτείνουµε τις γνώσεις µας σ αυτές τις έννοιες Η αρχή είναι η τάξη Η βασική αρχή που διέπει τον αντικειµενοστραφή προγραµµατισµό είναι η έννοια της τάξης (class). Μία τάξη είναι όπως είδαµε ήδη, ένα καλούπι (ένα πρότυπο) από το οποίο δηµιουργούνται τα αντικείµενα αυτής της τάξης. Τα βασικά στοιχεία στον ορισµό µίας τάξης είναι τα ακόλουθα: Ένα όνοµα Κάποια δεδοµένα Ένα (ή περισσότερους) κατασκευαστές (constructors) Κάποιες µεθόδους Στα επόµενα µαθήµατα θα εξετάσουµε αναλυτικά ένα-ένα αυτά τα στοιχεία, έτσι ώστε να είµαστε σε θέση να χειριζόµαστε µε άνεση τις τάξεις. Η δήλωση της τάξης Η δήλωση µιας τάξης έχει την ακόλουθη γενική µορφή: [public] [abstract][final] class OνοµαΤάξης [extends τάξη] [implements λίστα-διεπαφών]

25 <σώµα τάξης> Οι φράσεις µέσα σε αγκύλες είναι προαιρετικές. Το όνοµα µιας τάξης είναι σύµβαση να ξεκινά µε κεφαλαίο γράµµα. Αυτό δεν σηµαίνει ότι είστε υποχρεωµένοι να τηρήσετε αυτή τη σύµβαση, απλά οι «καλοί τρόποι» επιβάλλουν να το πράξετε! Αν το όνοµα της τάξης αποτελείται από πολλές λέξεις, µπορείτε είτε να ξεκινάτε την κάθε λέξη µε κεφαλαίο γράµµα ή να χωρίζεται τις λέξεις µε τον χαρακτήρα υπογράµµισης (underscore): π..χ ThisIsAVeryLongClassName ή This_is_a_very_long_class_name. Mία τάξη είναι καλό να περιέχεται µόνη της σε ένα και µόνο αρχείο, το δε όνοµα αυτού του αρχείου θα πρέπει να είναι το ίδιο µε το όνοµα της τάξης και µε την επέκταση java. Η πρόσβαση σε µία τάξη Εξ ορισµού σε µία τάξη έχουν πρόσβαση τάξεις του ιδίου πακέτου (package). Αν και δεν µιλήσαµε ακόµα για πακέτα, µπορείτε µε ασφάλεια να θεωρήσετε τη λέξη συνώνυµη µε την υποδιεύθυνση ή το φάκελο (directory, folder). Με την τοποθέτηση της λέξης public µπροστά από το όνοµα της τάξης, έχουν και άλλες τάξεις πρόσβαση σε αυτή και µπορούν να τη χρησιµοποιήσουν, ασχέτως από το αν ανήκουν στο ίδιο ή σε διαφορετικά πακέτα. Η δήλωση abstract Για αφηρηµένες (abstract) τάξεις και για τη χρήση τους θα µιλήσουµε σε επόµενα µαθήµατα. Προς το παρόν πάντως αρκεί να πούµε ότι µία τάξη που έχει δηλωθεί ως abstract δεν µπορεί να χρησιµοποιηθεί για τη δηµιουργία αντικειµένων. ηλαδή δεν µπορούµε να δηµιουργήσουµε αντικείµενα µιας abstract τάξης. Η δήλωση final Οι τάξεις που δηλώνονται ως final, δεν µπορούν να χρησιµοποιηθούν σαν υπερτάξεις άλλων τάξεων. Έτσι θα δηλώνετε µία τάξη ως final µόνο αν θέλετε να µην επεκταθεί. Η φράση extends Μία τάξη µπορεί να επεκτείνει (extend) µία άλλη τάξη µε τη χρήση της φράσης extends, όπως είδαµε και στο µάθηµα "Έννοιες αντικειµενοστραφούς προγραµµατισµού". Σηµειώστε ότι στη Java µια τάξη δεν µπορεί να επεκτείνει περισσότερες από µία τάξεις. εν υποστηρίζεται δηλαδή η πολλαπλή κληρονοµικότητα (multiple inheritance). Αλλά γι' αυτό και όλα τα σχετικά µε την κληρονοµικότητα θα µιλήσουµε σε επόµενα µαθήµατα. Η φράση implements Μία διεπαφή (interface) είναι ένα σύνολο δηλώσεων µεθόδων χωρίς ορισµούς. Μία τάξη µπορεί να υλοποιεί µία ή περισσότερες διεπαφές, µε τη χρήση της φράσης implements. Όταν µία τάξη δηλώνει πως υλοποιεί (implements) µία διεπαφή, θα πρέπει να ορίσει όλες τις µεθόδους που έχουν δηλωθεί στη διεπαφή αυτή. Για διεπαφές και τη φράση implements θα µιλήσουµε αναλυτικά σε επόµενα µαθήµατα. Παράδειγµα: Μία τάξη τραπεζικού λογαριασµού Για να αποσαφηνιστούν καλύτερα τα παραπάνω, ας δώσουµε σ' αυτό το σηµείο µία τάξη ενός τραπεζικού λογαριασµού. Η τάξη Account, όπως θα τη πούµε, θα είναι πολύ απλή. Θα αποτελείται από τα εξής: ένα ιδιωτικό µέλος balance το οποίο θα είναι το υπόλοιπο του λογαριασµού

Δομές ελέγχου ροής προγράμματος

Δομές ελέγχου ροής προγράμματος Δομές ελέγχου ροής προγράμματος Υπάρχουν δύο είδη δομών ελέγχου ροής (control flow): Οι δομές επιλογής και Οι δομές επανάληψης Δομές ελέγχου ροής προγράμματος Είδος δομής Δομές επιλογής Δομή ελέγχου ροής

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

32-bit signed υποδιαστολής) Double διπλής ακρίβειας 64-bit signed Char unicode character 16-bit Boolean Boolean true or false

32-bit signed υποδιαστολής) Double διπλής ακρίβειας 64-bit signed Char unicode character 16-bit Boolean Boolean true or false 3. Τύποι δεδομένων - εντολές - τελεστές 3.1 Τύποι δεδομένων στην JAVA Οι τύποι δεδομένων στην JAVA είναι σαν αυτούς της C με μόνη διαφορά ότι το μέγεθός τους (σε bytes) είναι γνωστό και ίδιο σε όλες τις

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

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

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

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

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

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

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

Mεταβλητές (variables) και Σταθερές (constants)

Mεταβλητές (variables) και Σταθερές (constants) Mεταβλητές (variables) και Σταθερές (constants) Οι μεταβλητές είναι οι θέσεις μνήμης στις οποίες ένα πρόγραμμα τοποθετεί τα δεδομένα του κατά τη διάρκεια της λειτουργίας του. θα μάθουμε: πως δηλώνουμε

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

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

Αντικειμενοστραφής Προγραμματισμός ΙΙ Java Αντικειμενοστραφής Προγραμματισμός ΙΙ Java Τμήμα Τεχνολογίας Πληροφορικής και Τηλεπικοινωνιών Σχολή Τεχνολογικών Εφαρμογών ΤΕΙ Λάρισας Δρ. Νικόλαος Θ. Λιόλιος Αν. Καθηγητής Java Μια αντικειμενοστραφής

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

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

Προγραμματισμός 2 Σημειώσεις εργαστηρίου Προγραμματισμός 2 Σημειώσεις εργαστηρίου 02-Java, Τύποι Δεδομένων ως Αντικείμενα Νεβράντζας Βάιος-Γερμανός Λάρισα, Μάρτιος 2013 02-iProgramminginJava, Τυ ποι δεδομε νων ως Αντικει μενα, σελίδα 1 Περίληψη

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

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS. Εισαγωγή στη JAVA Σύντομο Ιστορικό Η Java και το διαδίκτυο Το πρώτο απλό πρόγραμμα σε JAVA Μεταβλητές και σταθερές Παραστάσεις και εντολές Οι βασικοί τύποι δεδομένων στη Java Οι βασικοί Τελεστές στη Java

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

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

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

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

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

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

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

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

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Εντολές ελέγχου συγκρίσεων επιλογής ή διακλαδώσεων ( if switch) Μία από τις σημαντικότερες

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor ΕισαγωγήστουςΗ/Υ PHP Hypertext Preprocessor ΤιείναιηPHP; PHP είναιµία server-based scripting language σχεδιασµένη ειδικά για το web. Σε µία html σελίδα µπορούµε να ενσωµατώσουµε php κώδικα που εκτελείται

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

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

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

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

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

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

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

for for for for( . */

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 3 ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι. Ελεγκτές συνθηκών ή περιπτώσεων:

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

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

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

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

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β.1 Τύποι Δεδομένων Όλες οι γλώσσες προγραμματισμού (πρέπει να) υποστηρίζουν πέντε (5) πρωταρχικούς τύπους δεδομένων: char (character) int (integer)

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

HelloApplet. Παύλος Εφραιμίδης Java Applets 1

HelloApplet. Παύλος Εφραιμίδης Java Applets 1 HelloApplet Παύλος Εφραιμίδης pefraimi@ee.duth.gr Java Applets 1 Applets Τα Applets είναι προγράμματα Java που μπορούν να εκτελεστούν μέσα στο περιβάλλον ενός Browser (Firefox, Internet Explorer, Netscape,

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράµµατα «γράφονται» χρησιµοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαµβάνει

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

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 Εισαγωγή

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

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

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

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων Αντικείµενα ηµιουργία και χρησιµοποίηση αντικειµένων ηµιουργία αντικειµένων Για να δηµιουργήσω ένα νέο αντικείµενο χρησιµοποιώ τον τελεστή new µε τοόνοµατηςκλάσηςαπότηνοποίαθέλωναδηµιουργήσωένααντικείµενο,

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

Στοιχεία εξεταζόµενου Αριθµός Απάντησης Βαθµολογία. Σύνολο (Θέµα 4 ο )

Στοιχεία εξεταζόµενου Αριθµός Απάντησης Βαθµολογία. Σύνολο (Θέµα 4 ο ) Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Εισαγωγή στον Προγραµµατισµό των Υπολογιστών Καθηγητής Ι. Κάβουρας Εξεταστική περίοδος Φεβρουαρίου 2004 Τετάρτη 10/3/2004, ώρα 8.00 Στοιχεία εξεταζόµενου

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

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

Βασικά στοιχεία της Java Βασικά στοιχεία της Java προτάσεις, εκφράσεις, µεταβλητές, σταθερές, τελεστές Ορισµοί Πρόταση (statement) είναι µία απλή εντολή σε µία γλώσσα προγραµµατισµού. Γιαπαράδειγµα: int x=12; Έκφραση (expression)

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 1: Εισαγωγικές έννοιες

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 1: Εισαγωγικές έννοιες ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 1: Εισαγωγικές έννοιες Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 1 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 - Παράδειγμα με switch (το οποίο δείχνει επίσης πότε σε μια άσκηση χρησιμοποιούμε user-input και System.out.println() για έξοδο και πότε χρησιμοποιούμε είσοδο σε μέθοδο

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

3. Εκφράσεις και έλεγχος ροής

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 4ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΟΙ ΤΕΛΕΣΤΕΣ ΣΥΓΚΡΙΣΗΣ Με τους τελεστές σύγκρισης, συγκρίνουμε τις

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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

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

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

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

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

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

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

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

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

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

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

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6 Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:

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

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

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

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

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 5 ο Έλεγχος Προγράµµατος Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Η εντολή if (Ι) Η εντολή if είναι µία από τις βασικότερες δοµές ελέγχου ροής στη C, αλλά και στις περισσότερες

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

Wrapper Classes, Abstract Classes and Interfaces

Wrapper Classes, Abstract Classes and Interfaces Wrapper Classes, Abstract Classes and Interfaces Εβδοµάδα 3: Κλάσεις συσκευαστές, αφηρηµένες κλάσεις και διαπροσωπείες Αντικείµενα και µη-αντικείµενα Η Java παρέχει τύπους αντικειµένων και απλούς τύπους

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

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

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

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

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

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

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.

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

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

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

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

οµές Επιλογής Εντολές if και switch

οµές Επιλογής Εντολές if και switch οµές Επιλογής Εντολές if και switch οµή Ελέγχου Control Structure Ένας συνδυασµός ατοµικών εντολών σε µία λογική µονάδα, όπου υπάρχει µόνο ένα σηµείο εισόδου και ένα σηµείο εξόδου. οµή Ελέγχου για Επιλογή

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

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

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε

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

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι 1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της

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

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

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

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

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

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

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

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

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

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

Java sessions. Part 1 - Βασικά έννοιες - μέθοδοι

Java sessions. Part 1 - Βασικά έννοιες - μέθοδοι Java sessions Part 1 - Βασικά έννοιες - μέθοδοι Ενότητα 1 Η γλώσσα Java 1.1 - Ιστορία Ξεκίνησε το 1995 από τον James Gosling, υπάλληλο της Sun Microsystems Αρχικά ονομάστηκε Oak, αργότερα άλλαξε σε Java

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 Constructors (Κατασκευαστές) Ειδικός τύπος μεθόδων που δημιουργούν αντικείμενα μιας κλάσης και: Εκτελούνται κατά την αρχικοποίηση των αντικειμένων

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

Επανάληψη για τις Τελικές εξετάσεις

Επανάληψη για τις Τελικές εξετάσεις Επανάληψη για τις Τελικές εξετάσεις ( ιάλεξη 21) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Εισαγωγή Το µάθηµα EPL032 έχει ως βασικό στόχο την επίλυση προβληµάτων πληροφορικής µε την χρήση της γλώσσας προγραµµατισµού

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

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

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

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Αλγοριθμική και Προγραμματισμός

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Αλγοριθμική και Προγραμματισμός ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Σ υ μ β ο λ ο σ ε ι ρ έ ς S t r i n g s Είδαμε τον τύπο char που απεικονίζει ένα χαρακτήρα,

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

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

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

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

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

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

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

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος. Û ØÓÒ ÔÖÓ Ö ÑÑ Ø Ñ ¾ Ç Ö ÐÓ ØÛÒ ÙÔÓÐÓ ØôÒ Ο υπολογιστής είναι εργαλείο επίλυσης προβλημάτων λόγω: ταχύτητας υπολογισμού και μεγέθους μνήμης γενικής χρησιμότητας μέσω της έννοιας του προγραμματισμού. Η

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος 2012-13 Κων/νος Φλώρος Απλοί τύποι δεδομένων Οι τύποι δεδομένων προσδιορίζουν τον τρόπο παράστασης των

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Τρίτη Διάλεξη Εντολές Επιλογής και Επανάληψης Εντολές επιλογής Εντολή if Η πιο απλή μορφή της if συντάσσεται ως εξής: if ( συνθήκη ) Οι εντολές μέσα στα άγκιστρα αποτελούν

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

Υποστηρικτικό υλικό Σημειώσεις

Υποστηρικτικό υλικό Σημειώσεις ΔΙΑΔΙΚΤΥA : Υπηρεσίες, Τεχνολογία, Εφαρμογές Τμήμα Πληροφορικής Α.Π.Θ. Υποστηρικτικό υλικό Σημειώσεις Διδάσκοντες : Α. Βακάλη Γ. Παπαδημητρίου Εαρινό εξάμηνο 2000 2001 ΜΕΡΟΣ ΙΙ J A V A ΔΙΑΔΙΚΤΥA : Υπηρεσίες,

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

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

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

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ❶ Προετοιµασία για το 1 ο Εργαστήριο

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

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ 2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Linear Data Structures) Ας θεωρήσουµε µία δοµή δεδοµένων το σύνολο των στοιχείων της οποίας είναι διατεταγµένο µε τέτοιο τρόπο ώστε να ισχύουν τα εξής: (α) υπάρχει ένα µόνο

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Μεταβλητές-Σταθερές-Παράμετροι Τα στοιχεία

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

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

Εντολές επιλογής Επαναλήψεις (if, switch, while)

Εντολές επιλογής Επαναλήψεις (if, switch, while) Εντολές επιλογής Επαναλήψεις (if, switch, while) Οι σημειώσεις αυτές έχουν σαν στόχο την μάθηση εντολών επιλογής (if, switch, while) που ελέγχουν τη ροή εκτέλεσης ενός προγράμματος. Πρώτα όμως, είναι αναγκαίο

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

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος Α. Θεωρία 1. Κύκλος Ανάπτυξης Προγράµµατος 1. Συγγραφή και Μεταγλώττιση ενός προγράµµατος 2. Εκτέλεση του προγράµµατος

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 8/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 8/11/07 Συμπλήρωμα προηγούμενης εβδομάδας: ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 8/11/07 Τι συμβαίνει όταν στην ίδια έκφραση υπάρχει πάνω από

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

ΕΠΛ 012. JavaScripts

ΕΠΛ 012. JavaScripts ΕΠΛ 012 JavaScripts Γλώσσα JavaScript (JS) ηµιουργεί δυναµικές ιστοσελίδες και αλληλεπιδράσεις µε το χρήστη εν είναι Java, αλλά είναι αντικειµενοστραφής (απλό µοντέλο υποκειµένων) Objects, properties (τιµές

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

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

scanf() scanf() stdin scanf() printf() int float double %lf float

scanf() scanf() stdin scanf() printf() int float double %lf float Εισαγωγή Στον Προγραµµατισµό «C» Είσοδος Δεδοµένων Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Η συνάρτηση scanf() Η συνάρτηση

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

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

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr 1 Δομημένος προγραμματισμός έναντι αντικειμενοστρεφούς

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

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

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

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

Πανεπιστήµιο Πειραιά Τµήµα Εκπαιδευτικής Τεχνολογίας και Ψηφιακών Συστηµάτων. Εισαγωγή στη γλώσσα προγραµµατισµού. Java. Βασίλειος Βεσκούκης

Πανεπιστήµιο Πειραιά Τµήµα Εκπαιδευτικής Τεχνολογίας και Ψηφιακών Συστηµάτων. Εισαγωγή στη γλώσσα προγραµµατισµού. Java. Βασίλειος Βεσκούκης Πανεπιστήµιο Πειραιά Τµήµα Εκπαιδευτικής Τεχνολογίας και Ψηφιακών Συστηµάτων Εισαγωγή στη γλώσσα προγραµµατισµού Java Βασίλειος Βεσκούκης ιδάκτωρ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών v.vescoukis@unipi.gr

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

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

Δομές ελέγχου & επανάληψης

Δομές ελέγχου & επανάληψης 3 Δομές ελέγχου & επανάληψης Τι θα δούμε σε αυτό το μάθημα 1. δομές ελέγχου 1. η δομή if 2. η δομή switch 2. δομές επανάληψης 1. η δομή while 2. η δομή do...while 3. η δομή for 3. break και continue 4.

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

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου Σκοπός και περίγραμμα της Ενότητας 4 Σκοπός της παρουσίασης Να μελετήσουμε τις συναρτήσεις που ελέγχουν την ροή και την εκτέλεση ενός προγράμματος Σύνοψη

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

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

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

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.

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

Δεδομένα, τελεστές, είσοδος/έξοδος

Δεδομένα, τελεστές, είσοδος/έξοδος 2 Δεδομένα, τελεστές, είσοδος/έξοδος Τι θα δούμε σε αυτό το μάθημα 1. βασικοί τύποι δεδομένων 2. ακέραιοι 3. κινητής υποδιαστολής 4. ο τύπος decimal 5. χαρακτήρες 6. bool 7. string 8. χρήση μεταβλητών

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

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

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

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2 Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Δοµικά στοιχεία Πίνακες Το κόσκινο του Ερατοσθένη Αντιγραφή πινάκων

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

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

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

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