Προγραμματισμός σε Java Σικαλιάς Γιώργος SikRip
Εισαγωγή Ο προγραμματισμός είναι να σαν να διδάσκουμε κάποιον: στόχος μας είναι να κάνει ο Η/Υ αυτό που θέλουμε Πρέπει να «μιλήσουμε» στον υπολογιστή στην γλώσσα που γνωρίζει Οι Η/Υ γνωρίζουν μόνο τα δυαδικά ψηφία (0 και 1) Φυσικά για τον άνθρωπο είναι δύσκολο να θυμάται τεράστιες αλληλουχίες από 0 και 1!!!! Γι αυτό οι επιστήμονες δημιούργησαν τις γλώσσες προγραμματισμού: μια γέφυρα ανάμεσα στον Η/Υ και στον άνθρωπο Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 2
Η τεχνολογία της Java Οι περισσότερες γλώσσες προγραμματισμού είτε μεταγλωττίζουν (compile) είτε μεταφράζουν (interpret) το πρόγραμμα Στην Java συμβαίνουν και τα δύο!!!! Ο compiler της Java μετατρέπει τον πηγαίο κώδικα του προγράμματος σε μια ενδιάμεση γλώσσα (Java bytecodes) Κάθε φορά που τρέχουμε το πρόγραμμα αυτό ο κώδικας Java bytecodes μεταφράζεται και εκτελείται Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 3
Η τεχνολογία της Java Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 4
Η τεχνολογία της Java Η Java bytecodes είναι εντολές για την Java Virtual Machine (Java VM) Έτσι μπορούμε να γράψουμε ένα πρόγραμμα μια φορά και να τρέχει σε κάθε πλατφόρμα Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 5
Συναρτήσεις Προγραμματιστικές μονάδες οι οποίες εκτελούν μια συγκεκριμένη λειτουργία Στη Java η δήλωση συναρτήσεων γίνεται όπως και στην C/C++ τελεστής_προσπέλασης τύπος_επιστοφής όνομα_συνάρτησης(ορίμστα) { κώδικας_συνάρτησης Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 6
Συναρτήσεις Παράδειγμα public int add(int a,int b) { return a+b; Εντολή return: επιστρέφει το αποτέλεσμα στον καλούντα Ειδικός τύπος επιστροφής «void» δεν επιστρέφεται καμία τιμή public void sayhello() { System.out.println("Hello"); Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 7
Δομή Java προγράμματος Δηλώσεις Πακέτων Εντολή «import» Δήλωση Γενικής Κλάσης Η κλάση αυτή έχει την συνάρτηση main() Δεν έχει κάποια άλλη ιδιαιτερότητα Δηλώσεις άλλων κλάσεων Προαιρετικά μπορούμε να δηλώσουμε και άλλες κλάσεις Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 8
Hello world σε Java /*Η κλάση HelloWorldApp υλοποιεί ένα πρόγραμμα το οποίο απλά εμφανίζει "Hello name!" στην οθόνη. */ import java.io.*; public class HelloWorldApp { public static void main(string[] args) { Console con=new Console(); String name=con.console_string(); System.out.println("Hello "+name); //Εμφάνιση μηνύματος. class Console { Κάθε εντολή στην Java τελειώνει με ένα ελληνικό ερωτηματικό (;) Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 9
Σχόλια στην Java /*Η κλάση HelloWorldApp υλοποιεί ένα πρόγραμμα το οποίο απλά εμφανίζει "Hello name!" στην οθόνη. */ import java.io.*; public class HelloWorldApp { public static void main(string[] args) { Console con=new Console(); String name=con.console_string(); System.out.println("Hello "+name); //Εμφάνιση μηνύματος. class Console { Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 10
Σχόλια στην Java H Java υποστηρίζει τριών ειδών σχόλια /* comment */ o compiler αγνοεί οτιδήποτε γράψουμε ανάμεσα στο /* και στο */ /** documentation */ o compiler αγνοεί οτιδήποτε γράψουμε ανάμεσα στο /** και στο */ - δημιουργία τεκμηρίωσης για το πρόγραμμα με το εργαλείο javadoc // comment o compiler αγνοεί οτιδήποτε γράψουμε μέχρι το τέλος της γραμμής Βάζουμε πάντα σχόλια!!! Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 11
Δηλώσεις πακέτων /*Η κλάση HelloWorldApp υλοποιεί ένα πρόγραμμα το οποίο απλά εμφανίζει "Hello name!" στην οθόνη. */ import java.io.*; public class HelloWorldApp { public static void main(string[] args) { Console con=new Console(); String name=con.console_string(); System.out.println("Hello "+name); //Εμφάνιση μηνύματος. class Console{ Δηλώνουμε τα πακέτα τα οποία είναι απαραίτητα για τις λειτουργίες του προγράμματος μας Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 12
Χρήσιμα πακέτα import java.io.* Συναρτήσεις Ε / Ε import java.math.* Μαθηματικές Συναρτήσεις Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 13
Κύρια Κλάση /*Η κλάση HelloWorldApp υλοποιεί ένα πρόγραμμα το οποίο απλά εμφανίζει "Hello name " στην οθόνη. */ import java.io.*; public class HelloWorldApp { public static void main(string[] args) { Console con=new Console(); String name=con.console_string(); System.out.println("Hello "+name); //Εμφάνιση μηνύματος. class Console { Κάθε Java πρόγραμμα πρέπει να έχει τουλάχιστον μια κλάση, καμία συνάρτηση ή μεταβλητή δεν μπορεί να μην βρίσκεται σε μια κλάση. Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 14
Συνάρτηση main() /*Η κλάση HelloWorldApp υλοποιεί ένα πρόγραμμα το οποίο απλά εμφανίζει "Hello name " στην οθόνη. */ import java.io.*; public class HelloWorldApp { public static void main(string[] args) { Console con=new Console(); String name=con.console_string(); System.out.println("Hello "+name); //Εμφάνιση μηνύματος. class Console{ Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 15
Συνάρτηση main() Η συνάρτηση main() είναι το σημείο εκκίνησης του προγράμματος Καλείται από το λειτουργικό σύστημα Σε αυτή τη συνάρτηση μπορούμε να περάσουμε ορίσματα κατά την εκτέλεση του προγράμματος Μόνο μια main() σε κάθε πρόγραμμα!!! Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 16
Είσοδος από το πληκτρολόγιο /*Η κλάση HelloWorldApp υλοποιεί ένα πρόγραμμα το οποίο απλά εμφανίζει "Hello name " στην οθόνη. */ public class HelloWorldApp { public static void main(string[] args) { Console con=new Console(); String name=con.console_string(); System.out.println("Hello "+name); //Εμφάνιση μηνύματος. class Console { Χρήση της κλάσης Console (σελ. 297 του βιβλίου) Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 17
Έξοδος στην οθόνη /*Η κλάση HelloWorldApp υλοποιεί ένα πρόγραμμα το οποίο απλά εμφανίζει "Hello World!" στην οθόνη. */ import java.io.*; public class HelloWorldApp { public static void main(string[] args) { Console con=new Console(); String name=con.console_string(); System.out.println("Hello "+name); //Εμφάνιση μηνύματος. class Console { Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 18
Έξοδος στην οθόνη System.out.println( Πληροφορική ); System.out.print( Πληροφορική \n ); System.out.println(b); System.out.print( Hello +name); System.out.println(num1+ + +num2+ = +sum); Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 19
Προσοχή Η Java είναι case sensitive γλώσσα, π.χ. το HelloWorldApp δεν είναι το ίδιο με το helloworldapp To αρχείο.class θα πάρει το όνομα του από το όνομα της κλάσης που περιέχει την main(). Ένα πηγαίο αρχείο κώδικα μπορεί να έχει παραπάνω από μια κλάση. Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 20
Δημιουργία, μεταγλώττιση και εκτέλεση προγράμματος 1. Δημιουργία του πηγαίου αρχείου με τον κώδικα (π.χ. HelloWorldApp.java) 2. Μεταγλώττιση με την εντολή: javac HelloWorldApp.java Δημιουργείται το αρχείο HelloWorldApp.class (Java bytecodes ) 3. Εκτέλεση του προγράμματος με την εντολή: java HelloWorldApp Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 21
Βασικοί τελεστές 1. Ισότητα == 2. Ισότητα String equals(str1,str2) 3. Ανάθεση Τιμής = 4. Διάφορο!= 5. Modulo % 6. Λογικό ΚΑΙ && (and) 7. Λογικό Η (Or) 8. Άρνηση! 9. Αύξηση / Μείωση ++, +=, --, -= 10. Σύγκριση >, <, >=, <= Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 22
Μεταβλητές Δήλωση μεταβλητών type name; Παραδείγματα: byte largestbyte; short largestshort; int largestinteger; long largestlong; Αρχικοποίηση: Κατά την δήλωση: int myint=5; Μετά την δήλωση: int myint; myint=5; Σταθερή τιμή τελεστής final final int myint=6; Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 23
Μεταβλητές String Είναι μεταβλητές που αποθηκεύουν αλφαριθμητικά Έχουν μεταβλητό μέγεθος Π.χ. String myname= George ; Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 24
Τύποι μεταβλητών Τύπος byte short int long float double char boolean Απαίτηση σε μνήμη 8-bit 16-bit 32-bit 64-bit 32-bit 64-bit 16-bit 1-bit true or false Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 25
Μετατροπές Τύπων Μεταβλητών (Casting) Ρητή μετατροπή τύπου Μεταβλητή = (Νέος τύπος)(έκφραση προς μετατροπή) Π.χ. short count = (short)intcount; (char)age / (int)letter Συναρτήσεις Μετατροπής Τιμών Integer.parseInt(String_μεταβλητή) Double.parseDouble(String_Μεταβλητή) Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 26
Πίνακες Συλλογή μεταβλητών ίδιου τύπου Δήλωση πίνακα: int idata[]; Δημιουργία πίνακα: idata=new int[10]; Ανάθεση τιμής: idata[8]=100; Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 27
Πίνακες πινάκων Μπορούμε να δηλώσουμε ένα πίνακα του οποίου το κάθε στοιχείο είναι ένας πίνακας int[][] amatrix = new int[4][]; amatrix[0] = new int[5]; amatrix[1] = new int[12]; int[][] bmatrix = new int[4][5]; Μήκος πίνακα: amatrix.length //μέγεθος κύριου πίνακα amatrix[0].length //μέγεθος 1 ου υπο-πίνακα Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 28
Εντολές ελέγχου Εντολή if/else Εντολή switch Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 29
Εντολή if/else Εντολή if/else if (συνθήκη) { εντολές else { εντολές Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 30
Εντολή if/else Εντολή if/else if (συνθήκη) { εντολές else if(συνθήκη2) { εντολές else { εντολές Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 31
Εντολή if/else Παράδειγμα if (testscore >= 90) { grade = 'A'; else if (testscore >= 80) { grade = 'B'; else if (testscore >= 70) { grade = 'C'; else if (testscore >= 60) { grade = 'D'; else { grade = 'F'; Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 32
Εντολή switch Εντολή switch switch(option) { case 1: case 2: case 3: default: Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 33
Εντολή switch Παράδειγμα switch (month) { case 1: System.out.println("January"); break; case 2: System.out.println("February"); break; case 3: System.out.println("March"); break;... case 12: System.out.println("December"); break; default: System.out.println("Hey, that's not a valid month!"); break; Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 34
Εντολές επανάληψης Εντολή while Εντολή do while Εντολή for Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 35
Εντολή while Εντολή while while (συνθήκη) { εντολές Αν η συνθήκη δεν ισχύει αρχικά οι εντολές δεν θα εκτελεστούν καμία φορά Οι εντολές πρέπει να αλλάζουν με κάποιον τρόπο την συνθήκη Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 36
Εντολή while Παράδειγμα while(i<5) { System.out.ptrintln( i= + (i++) ); Αποτέλεσμα(αρχικά i=1): i=1 i=2 i=3 i=4 Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 37
Εντολή while Παράδειγμα while(i<5) { System.out.ptrintln( i= + (++i) ); Αποτέλεσμα(αρχικά i=1): i=2 i=3 i=4 i=5 Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 38
Εντολή do while Εντολή do while do { εντολές while(συνθήκη); Οι εντολές θα εκτελεστούν τουλάχιστον μια φορά έστω και αν η συνθήκη δεν ισχύει αρχικά Οι εντολές πρέπει να αλλάζουν με κάποιον τρόπο την συνθήκη Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 39
Εντολή do while Παράδειγμα do { System.out.ptintln("i="+i); i=i+1; while (i < 5); Αποτέλεσμα(αρχικά i=1) i=1 i=2 i=3 i=4 Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 40
Εντολές επανάληψης Τι θα γίνει αν δεν αλλάζουμε την συνθήκη μέσα στις εντολές της επανάληψης??? Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 41
Εντολή for Εντολή for for (αρχικοποίηση; έλεγχος; αύξηση) { εντολές Είναι η ποιο ισχυρή εντολή επανάληψης Χρησιμοποιείται κυρίως όταν γνωρίζουμε από πριν τον αριθμό επαναλήψεων Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 42
Εντολή for Παράδειγμα for (int i = 1; i < 5; i++) { System.out.println("i="+i); Η εντολή μέσα στο for δεν αλλάζει την μεταβλητή i, αυτό γίνεται μέσα στην εντολή for Αποτέλεσμα: i=1 i=2 i=3 i=4 Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 43
Εντολές διακλάδωσης Εντολή break Εντολή continue Εντολή return Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 44
Εντολή break break; Οδηγεί την εκτέλεση του προγράμματος στο αμέσως εξωτερικό block Χρησιμοποιείται για να τερματίσει εντολές switch(όπως είδαμε πρίν), for, while, do..while Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 45
Εντολή break Παράδειγμα for (int i ; i < arrayofints.length; i++) { if (arrayofints[i] == searchfor) { foundit = true; break; εντολή_που_ακολουθεί_μετά_for; Όταν εκτελεστεί η εντολή break η εκτέλεση του προγράμματος θα συνεχίσει στην αμέσως επόμενη εντολή από το for Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 46
Εντολή continue continue; Χρησιμοποιείται για να προσπεράσουμε την τρέχουσα επανάληψη σε μια επαναληπτική εντολή for, while, do while Για παράδειγμα αν θέλουμε να τυπώσουμε τους αριθμούς από το 1 έως το 5 αλλά να προσπεράσουμε το 2. Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 47
Εντολή continue Παράδειγμα for(int i=1; i<=5; i++) { if(i==2) continue; System.out.println(i); Αποτέλεσμα: 1 3 4 5 Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 48
Εντολή return return; Χρησιμοποιείται για έξοδο από την συνάρτηση που εκτελείται Αν η συνάρτηση έχει επιστρεφόμενη τιμή τότε πρέπει να επιστρέφουμε μια τιμή του κατάλληλου τύπου (π.χ. return 3) Αν η συνάρτηση έχει επιστρεφόμενη τιμή void τότε αρκεί μια εντολή return για έξοδο από την συνάρτηση Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 49
Τερματισμός προγράμματος Ένα Java πρόγραμμα τερματίζεται όταν Εκτελεστεί η εντολή return της συνάρτησης main() Εκτελεστεί η εντολή System.exit(τιμή_επιστροφής); από οποιοδήποτε σημείο του προγράμματος Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 50
Χειρισμός λαθών Η Java χρησιμοποιεί τις εξαιρέσεις (exceptions) για να χειριστεί τα λάθη που πιθανώς συμβούν κατά την διάρκεια εκτέλεσης του προγράμματος Μηχανισμός Εξαιρέσεων: try { εντολές που ίσως προκαλέσουν λάθος; catch (τύπος_εξαίρεσης όνομα) { εντολές χειρισμού του λάθους; finally { εντολές που εκτελούνται είτε γίνει εξαίρεση είτε όχι; Κάθε try πρέπει να ακολουθείται από ένα catch. Η εντολή finally είναι προαιρετική Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 51
Χειρισμός λαθών Παράδειγμα try{ do{ System.out.print( Επιλογή(1-4): "); choice = con.console_int(); while(choice<1 choice>4); catch(numberformatexception e){ System.out.println(e.getMessage()); System.exit(-2); Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 52
Τύποι εξαιρέσεων που θα χρειαστούν NumberFormatException Η εφαρμογή ζητά εισαγωγή αριθμού και εισάγονται χαρακτήρες ArithmeticException Λάθος σε υπολογισμό π.χ. διαίρεση με το 0 IndexOutOfBounds www.infospoudes.gr Βγαίνουμε εκτός ορίων ενός πίνακα Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 53
Αντικείμενα Τα πραγματικά αντικείμενα έχουν δύο κύρια χαρακτηριστικά: Κατάσταση (state) Συμπεριφορά (behavior ) Παράδειγμα: ένα αυτοκίνητο (το αντικείμενό), έχει κατάσταση (ταχύτητα, επιτάχυνση, κυβισμός, κ.τ.λ.) και συμπεριφορά (μπορεί να επιβραδύνει, μπορεί να επιταχύνει κ.τ.λ.) Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 54
Αντικείμενα Τα αντικείμενα στη Java έχουν δημιουργηθεί για να μοντελοποιούν τα πραγματικά αντικείμενα Έτσι έχουν και αυτά κατάσταση (state) και συμπεριφορά (behavior ) Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 55
Κλάσεις Στον πραγματικό κόσμο υπάρχουν πολλά αντικείμενα του ίδιου είδους, τότε λέμε αυτά ανήκουν στην ίδια κλάση. Αντίστοιχα και οι κλάσεις της Java είναι αναπαράσταση αντικειμένων του ίδιου είδους (π.χ. η κλάση car μπορεί αναπαριστά αυτοκίνητα) Απεικόνιση της κλάσης: Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 56
Κλάσεις vs Αντικείμενα Οι κλάσεις είναι ένα «καλούπι» για την δημιουργία αντικειμένων Ένα αντικείμενο είναι η περίσταση (instance) μιας κλάσης Π.χ. Κλάση car Αντικείμενα: goergecar, yourcar, κ.τ.λ. Π.χ. Κλάση human Αντικείμενα: nick, george, κ.τ.λ. Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 57
Παράδειγμα κλάσης class Human { static int arithmοspodion=2; private String name; private int ilikia; private float baros; private float ypsos; // public Human() { System.out.println("Human Constructor 1"); // public Human(String name,int ilikia, float baros, float ypsos) { System.out.println("Human Constructor 2"); this.name=name; this.ilikia = ilikia; this.baros = baros; this.ypsos = ypsos; Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 58
Δημιουργία αντικειμένου Για να δημιουργήσουμε ένα αντικείμενο μιας κλάσης χρησιμοποιούμε τον τελεστή new Π.χ. Human nikos=new Human(); Human dimitris=new Human(23,75,1.80); Όταν δημιουργούμε ένα αντικείμενο αυτόματα καλείται ο constructor της κλάσης Για να προσπελάσουμε μια μέθοδο γράφουμε: dimitris.getname(); Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 59
Προσπέλαση γνωρισμάτων κλάσης www.infospoudes.gr Τα γνωρίσματα μιας κλάσης μπορούν να είναι(το ίδιο και οι μέθοδοι): public private protected Για να προσπελάσουμε ένα γνώρισμα πρέπει να έχουμε κατασκευάσει ένα αντικείμενο εκτός αν αυτό είναι static Π.χ. δεν μπορούμε να γράψουμε Human.getName(); Λάθος Αντίθετα το dimitris.getname(); είναι σωστό Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 60
Static γνωρίσματα και μέθοδοι Με την λέξη κλειδί «static» ορίζουμε ένα όρισμα ή μια μέθοδο η οποία είναι κοινή για όλα τα αντικείμενα της κλάσης Π.χ. αν θέλουμε να εισάγουμε ένα χαρακτηριστικό για τον αριθμό των ποδιών του ανθρώπου, αυτό μπορεί να είναι static καθώς είναι κοινό για κάθε άνθρωπο Τα static γνωρίσματα μπορούμε να τα προσπελάσουμε κατευθείαν από την κλάση ή από κάποιο αντικείμενο της κλάσης Π.χ. Human.arithmosPodion Π.χ. nikos.arithmospodion Αν αλλάξει η τιμή μιας static μεταβλητής αλλάζει για όλα τα αντικείμενα της κλάσης Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 61
Προχωρημένα θέματα Abstarct κλάσεις Interfaces Κληρονομικότητα Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 62
Αρχεία Είδη αρχείων Αρχεία text (CS) Αρχεία binary (BS) Χρήση αρχείων Άνοιγμα Αρχείου Ανάγνωση / Εγγραφή Ανάγνωση ή και Επεξεργασία Αρχείου Εισαγωγή / Ανανέωση Στοιχείων Κλείσιμο Αρχείου Ποτέ μην το ξεχνάμε!!! Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 63
Κατηγορίες Θεμάτων Μαθηματικά Υπολογισμός ΜΟ / Επαλήθευση Εξίσωσης / Ψευδό - Κρυπτογράφηση Αντιστοίχηση Χαρακτήρων Επίπεδες Βάσεις Δεδομένων - Αρχεία Π.χ. πελάτες με δομή στοιχείων (όνομα/επίθετο/τηλέφωνο ) Π.χ. φάρμακα με δομή στοιχείων (όνομα/στοκ/τιμή) Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 64
1 ο Παράδειγμα Χ^n+Υ^n+Ζ^n+W^n= (XYZW) Δοκιμή όλων των 4αδων ακεραίων αριθμών με χρήση 4απλού for Ο κώδικας: xyzw.java(λύση προβλήματος) Console.java(για είσοδο δεδομένων) Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 65
2 ο Παράδειγμα Εύρεση του Μ.Ο. των Μ.Ο. των άρτιων γραμμών Αποθήκευση των αριθμών σε πίνακα mxn με χρήση διπλού for Εύρεση των μέσων όρων των αρτίων γραμμών και αποθήκευση σε νέο πίνακα Εύρεση του μέσου όρου των στοιχείων αυτού του πίνακα Κώδικας: mo.java (λύση προβλήματος) Console.java (για είσοδο δεδομένων) Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 66
3 ο Παράδειγμα www.infospoudes.gr Αποκρυπτογράφηση Αρχείου Αρχείο με το κρυπτογραφημένο κείμενο Πίνακας (ή αρχείο) με τις αντιστοιχίες Βήματα επίλυσης: Ανάγνωση του κειμένου ανά χαρακτήρα Εύρεση του χαρακτήρα στις αντιστοιχίες Τύπωση του αντίστοιχου χαρακτήρα Κώδικας: DecryptFile.java EncryptFile.java(αντίστροφο) Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 67
4 ο Παράδειγμα Επίπεδη βάση Εισαγωγή στοιχείων σε επίπεδη βάση δεδομένων Χρήση του RandomAccessFile και των συναρτήσεων writex Ανάγνωση μιας τυχαίας εγγραφής Χρήση του RandomAccessFile και των συναρτήσεων seek για μετακίνηση στην επιθυμητή εγγραφή και των readx για ανάγνωση των στοιχείων Κώδικας: DBFile.java (επίλυση προβλήματος) Console.java (για είσοδο δεδομένων) Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 68
Τέλος Παρουσίασης Περισσότερα στο internet java.sun.com (The Java Tutorial) Ευχαριστώ για την προσοχή σας Καλή επιτυχία Πειραιάς 6/12/2005 Σικαλιάς Γιώργος 69