Μάθημα : Βασικά Στοιχεία της Γλώσσας Java

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Το αλφαριθμητικό (string)
Advertisements

ΠΙΝΑΚΕΣ ΜΑΘΗΜΑ 6.
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
Προγραμματισμός PASCAL
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Πίνακες-Αλφαριθμητικά
Εισαγωγή στους Η/Υ Πίνακες.
Πινακες (Arrays) Σημασια Συνταξη Αρχικοποιηση Προσβαση Παραμετροι
ΜΑΘ3122/106 Γλώσσα Προγραμματισμού
Προγραμματισμός Ι Πίνακες •Ο πίνακας είναι μία συλλογή μεταβλητών ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης. Χρησιμοποιείται.
Δείκτες, Πίνακες και Δείκτες, Δείκτες σε Συναρτήσεις
Αντικειμενοστραφής Προγραμματισμός
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜMΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
Μήτρες (templates)  Μία μήτρα είναι ένα κομμάτι κώδικα που περιέχει παραμέτρους οι οποίες δέχονται ως τιμές τύπους δεδομένων.  Είναι ένας μηχανισμός.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 3: Δείκτες Εαρινό εξάμηνο 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ι. Σαρρής, τηλ.
Τελεστές ανάθεσης (assignment)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
ΜΕΤΑΒΛΗΤΕΣ - ΤΥΠΟΙ ΜΑΘΗΜΑ 3.
Ολυμπιάδα Πληροφορικής
1 Ολυμπιάδα Πληροφορικής Μάθημα 7. 2 Στόχοι μαθήματος Δημιουργία συναρτήσεων από το χρήστη Δομή προγράμματος με συναρτήσεις Συναρτήσεις και παράμετροι.
ΣΥΝΑΡΤΗΣΕΙΣ.
1 Ολυμπιάδα Πληροφορικής Μάθημα 5. 2 Στόχοι μαθήματος Πίνακες 2 διαστάσεων.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
Δείκτες (Pointers) – Δομές (Structs)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Δομές Δεδομένων.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Υπερφόρτωση Τελεστών (Συνέχεια) Αντικειμενοστραφής Προγραμματισμός.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πίνακες.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΘΠ06 - Μεταγλωττιστές Ενδιάμεσος Κώδικας – Μεταφραστικά Σχήματα.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
Βασικά στοιχεία της Java
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 6: Πίνακες και Παράμετροι στην main. Διδάσκων: Νικόλαος Θ Λιόλιος,
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Προγραμματισμός & Εφαρμογές Η/Υ (Θ) Ενότητα 11: Εισαγωγή στο Προγραμματισμό με το MatLab 7.x (Μέρος 2 ο ) Δρ. Β.Χ. Μούσας, Αναπληρωτής Καθηγητής Τμήμα.
Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014: Κώστας Στάμος)
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ 1 Εισαγωγή στη γλώσσα Προγραμματισμού C ΠΙΝΑΚΕΣ (arrays)
Πολυδιάστατοι Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Πίνακες και αλφαριθμητικά
Java DataBase Connectivity
Δομές.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
FREEMAT Πίνακες και array.
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Πίνακας Συμβόλων Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής.
Εισαγωγή στον Προγ/μό Υπολογιστών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΚΦΡΑΣΕΙΣ, ΑΝΑΜΟΝΕΣ (DELAYS), ΗΧΟΙ
Μεταγράφημα παρουσίασης:

Μάθημα : Βασικά Στοιχεία της Γλώσσας Java

Πίνακες (Arrays) στη Java

Χρησιμότητα Πινάκων Για τον ορισμό ομάδων τιμών του ίδιου τύπου, αντί να ορίζουμε ξεχωριστή μεταβλητή για να αποθηκεύουμε κάθε τιμή, χρησιμοποιούμε πίνακες (arrays) Τα στοιχεία του πίνακα σημειώνονται με κοινό όνομα που συνοδεύεται από ένα δείκτη (index) Ο δείκτης είναι ένας ακέραιος αριθμός τοποθετημένος μέσα σε αγκύλες []

Δηλώσεις Πινάκων (Μίας Διάστασης) float []number; ή float number[]; int []C; ή int C[]; String []names; ή String names[]; Γενικός Ορισμός Πίνακα Τύπος_δεδομένων []Όνομα_Πίνακα; ή Τύπος_δεδομένων Όνομα_Πίνακα[]; ΠΡΟΣΟΧΗ: Με τη δήλωση ενός πίνακα απλώς δημιουργείται ένας pointer. Δε γίνεται ούτε κατανομή μνήμης για τον πίνακα, ούτε αρχικοποίησή του.

Ορισμός & Δημιουργία Πίνακα C = new int[5]; -> Δημιουργία πίνακα C πέντε ακεραίων Ισοδύναμα: int C[] = new int[5]; ή int []C = new int[5]; Οι παραπάνω εντολές δηλώνουν στο μεταγλωττιστή της Java ότι ο πίνακας C έχει 5 στοιχεία ακεραίου τύπου & δεσμεύεται αντίστοιχος χώρος στη μνήμη

Αρχικοποίηση πινάκων: ArrayName=new type[limit] MyArray= new int[10] Δήλωση πινάκων: type [] arrayName; int [] MyArray; Αρχικοποίηση πινάκων: ArrayName=new type[limit] MyArray= new int[10] b[0]=10 c[1]=20;

Αρχικοποίηση και Πρόσβαση στα Στοιχεία Πίνακα (1/2) int C[] = new int[5]; Πρόσβαση από: C[0] έως C[4] 1 2 3 4 ΠΡΟΣΟΧΗ!!! Length=5 Αρχικοποίηση με loop: for (int i=0; i<5; i++) C[i] = i; i: ΔΕΙΚΤΗΣ (index)

Αρχικοποίηση και Πρόσβαση στα Στοιχεία Πίνακα (2/2) Αρχικοποίηση κατά τη δήλωση: int []C = {5, 6, 34, 7}; Αρχικοποίηση βάσει άλλου πίνακα: int []C = {5, 6, 34, 7}; int []D = C;

Αναφορά στο πλήθος των στοιχείων ενός Πίνακα int []a = new int[100]; System.out.println(“Dimension of a: “+a.length); Επιστρέφει το πλήθος των στοιχείων του πίνακα (εδώ το 100) Γενικά: Όνομα_Πίνακα.length

Προσοχή στα όρια των Πινάκων… Έστω: int []my_array = new int[20]; Κάνοντας αναφορά σε στοιχείο εκτός ορίων του πίνακα, π.χ. στο my_array[21], παίρνω μήνυμα λάθους: Exception in thread “…” java.lang.ArrayIndexOutOfBoundsException: … Γι’ αυτό: for (int i=0; i<my_array.length; i++) Χρήση του my_array[i]

Πίνακες Δύο Διαστάσεων Δήλωση: float [][]AA; Ορισμός: ΑΑ = new float[4][8]; Ορισμός πίνακα 4 γραμμών και 8 στηλών (4x8) Επεξεργασία: for(int row=0; row<4; row++) for(int col=0; col<8; col++) AA[row][col] = …;

Αλφαριθμητικά στη Java (String)

Ορισμός string… Συνδυασμός χαρακτήρων Μία συμβολοσειρά είναι μία σειρά από χαρακτήρες. Στη Java μία συμβολοσειρά υλοποιείται με τη κλάση String του πακέτου java.lang. Συνδυασμός χαρακτήρων μεταξύ: [a…z], [A…Z], [0…9], [!@#$…]

Δημιουργία string στη Java Δήλωση μεταβλητής με όνομα name τύπου String Δηλώσεις: String name; String name = “John”; String name = new String(5); Δήλωση μεταβλητής με όνομα name τύπου String και αρχική τιμή το “John” Δήλωση μεταβλητής με όνομα name, η οποία είναι ένα αντικείμενο τύπου String 5 χαρακτήρων Ένα String είναι ένα αντικείμενο και όπως όλα τα αντικείμενα πρέπει να δηλωθεί και να δημιουργηθεί με την εντολή new

Αναφορά στο πλήθος χαρακτήρων ενός string Δήλωση: String name = “George Bush”; Αναφορά: System.out.println(“Number of characters in name:” +name.length()); Γενικά: όνομα_string.length()

Συνένωση string Με χρήση του τελεστή + π.χ.: ΠΡΟΣΟΧΗ!!! String s1 = “hello”; String s2 = “world”; String s_all = s1 + s2; //s_all <- “helloworld” int result = 1000; System.out.println(“Result= ” + result); ΠΡΟΣΟΧΗ!!!

Έλεγχος Ισότητας string π.χ.: String s1, s2; s1 = …; s2 = …; if(s1.equals(s2)) System.out.println(“Strings are identical”); else System.out.println(“Strings are different”); Γενικά: Όνομα_string1.equals(Όνομα_string2) ΠΡΟΣΟΧΗ: Μια συνήθης πηγή λαθών για τους νέους στη Java είναι η σύγκριση για ισότητα των String με τον τελεστή ==. Επειδή τα String είναι αντικείμενα ο τελεστής == δεν συγκρίνει τη τιμή τους, αλλά τη διεύθυνσή τους στη μνήμη.Αν θέλουμε να δούμε αν δύο String έχουν την ίδια τιμή θα πρέπει να χρησιμοποιήσουμε τη συνάρτηση equals

Μετατροπή κεφαλαίων χαρακτήρων σε πεζούς και αντίστροφα… π.χ.: String s1, s2, s3; s1 = “heLLo”; s2 = s1.toUpperCase(); s3 = s1.toLowerCase(); Σε κεφαλαία: s2 <- “HELLO” Σε πεζά: s3 <- “hello”

Υπο-αλφαριθμητικά (substring) Γενικά: αρχικό_string.substring(int αρχή, int τέλος) Υπο-αλφαριθμητικά: String s1, s2; s1 = “hello there”; s2 = s1.substring(0, 4); Αποτέλεσμα: s2 <- “hell” Επιστρέφει ένα νέο string το οποίο αποτελεί substring αυτού. Το 1o ακέραιο όρισμα καθορίζει τη θέση του πρώτου χαρακτήρα Το 2o ακέραιο όρισμα είναι η θέση του τελευταίου χαρακτήρα -1. Το μέγεθος του substring θα είναι το 2o int μείον το 1o int. Αν ο δεύτερος ακέραιος απουσιάζει τότε το substring εκτείνεται ως το τέλος του αρχικού string

Αντικατάσταση χαρακτήρων σε αλφαριθμητικό Αντικαθιστά όλες τις εμφανίσεις του χαρακτήρα που ορίζεται ως 1ο όρισμα με το χαρακτήρα που ορίζεται ως 2ο όρισμα. Αν δε γίνουν αντικαταστάσεις επιστρέφεται το αρχικό string Γενικά: όνομα_string.replace(char αρχικά, char τελικά) π.χ. String s1, s2; s1 = “test”; s2 = s1.replace(‘t’, ‘a’); Αποτέλεσμα: s2 <- “aesa”

Προσπέλαση μεμονωμένων χαρακτήρων σε string Επιστρέφει την τιμή του χαρακτήρα στη συγκεκριμένη θέση. Η θέση παίρνει τιμές από 0 έως length()-1. Η θέση του 1ου χαρ/ηρα είναι 0, η επόμενη 1 κοκ. π.χ.: String s1 = “testing”; System.out.println(“Character at index 4 is:” + s1.charAt(4)); Γενικά: όνομα_string.charAt(int index) Αποτέλεσμα: Character at index 4 is: i

Έλεγχος ύπαρξης χαρακτήρων σε string θα βρει, ξεκινώντας από την αρχή του string, διαφορετικά επιστρέφει -1 π.χ.: String temp = “ACGTGCGC”; int location = temp.indexOf(‘G’); (Αποτέλεσμα: 2) Επιστρέφει τη θέση του 1ου ‘G’ που θα βρει, ξεκινώντας από το τέλος του string, διαφορετικά επιστρέφει -1 π.χ.: String temp = “ACGTGCGC”; int location = temp.lastIndexOf(‘G’); (Αποτέλεσμα: 6)

Έλεγχος ύπαρξης substring σε string Επιστρέφει τη θέση του 1ου “TTG” που θα βρει, ξεκινώντας από την αρχή του string, διαφορετικά επιστρέφει -1 π.χ.: String temp = “ACGTTTGC”; if(temp.indexOf(“TTG”)!=-1) System.out.println(“temp contains TTG”); else System.out.println(“temp doesn’t contain TTG”) Γενικά: Όνομα_string.indexOf(Όνομα_substring)

Μετατροπές Τύπων Δεδομένων

Από αριθμητικούς τύπους σε string Μέθοδος valueOf π.χ.: int n = 49; String n_to_string = String.valueOf(n); Αποτέλεσμα: n_to_string <- “49” Γενικά, κλήση ως: String.valueOf(αριθμητική έκφραση)

Από string σε τύπο ακεραίου π.χ.: String temp = “34567”; int temp_to_int = Integer.parseInt(temp); Αποτέλεσμα: temp_to_int <- 34567 Γενικά, κλήση ως: Integer.parseInt(αλφαριθμητικό)

Type Casting… Έστω: Γίνεται: int i = 8; Αυτόματα int j = 7; float division = i/j; // division <- 1.0 (ακέραια διαίρεση) Για να διατηρηθεί η ακρίβεια της διαίρεσης κάνουμε type casting: float division = ((float)i)/j; // division <- 1.142857… Γίνεται: Αυτόματα Μη αυτόματα (T) N Όπου: T είναι το όνομα ενός αριθμητικού τύπου N το όνομα της μεταβλητής άλλου τύπου Το αποτέλεσμα είναι του τύπου T. byte -> short -> int -> long -> float -> double

Οι κυριότερες Μαθηματικές Συναρτήσεις της Java abs(όρισμα) -> απόλυτη τιμή ορίσματος, π.χ. abs(-5.78) = 5.78 pow(num,N) -> numN -> Ύψωση αριθμού σε δύναμη π.χ. pow(3,5)-> 35 sqrt(όρισμα) -> τετραγωνική ρίζα αριθμού, π.χ. sqrt(4) -> 2 random() -> επιστρέφει ένα τυχαίο αριθμό μεταξύ 0 και 1, π.χ. random() -> 0.67 Κλήση μαθηματικών συναρτήσεων Math.συνάρτηση(ορίσματα)