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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 2: Βασικές εντολές

ΠΛΗΡΟΦΟΡΙΚΗ I Ενότητα 6

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

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

Αριθµητική υπολογιστών

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

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

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

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

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

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

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

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

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

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

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

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

Τύποι δεδομένων, τελεστές, μεταβλητές

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

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

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

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit!

Πράξεις με δυαδικούς αριθμούς

Τμήμα Μαθηματικών, ΕΚΠΑ. Ακαδ. έτος

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 1/4/2008

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

Εισαγωγή στην επιστήμη των υπολογιστών. Πράξεις με μπιτ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

1. Βάσεις αριθμητικών συστημάτων 2. Μετατροπές μεταξύ ξύβάσεων 3. Αρνητικοί δυαδικοί αριθμοί 4. Αριθμητικές πράξεις δυαδικών αριθμών

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

Θα εμφανίσει την τιμή 232 αντί της ακριβούς

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία

Λύσεις Ασκήσεων ΣΕΙΡΑ 1 η. Πρόσημο και μέγεθος

Αριθμητικά Συστήματα Η ανάγκη του ανθρώπου για μετρήσεις οδήγησε αρχικά στην επινόηση των αριθμών Κατόπιν, στην επινόηση συμβόλων για τη παράσταση

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

2. Προσδιοριστές, δεσμευμένες λέξεις και τύποι

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

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

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

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

Συστήματα αρίθμησης. = α n-1 *b n-1 + a n-2 *b n-2 + +a 1 b 1 + a 0 όπου τα 0 a i b-1

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

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

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

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

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

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

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό με τη Java

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

Λογική Σχεδίαση Ψηφιακών Συστημάτων

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

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

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

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Αναπαράσταση Αριθμών

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

Visual Basic Βασικές Έννοιες

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 12

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

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

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

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

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

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

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

4. Εισαγωγή στη Java

Δυαδικη παρασταση αριθμων και συμβολων

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

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

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

Transcript:

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, και 1 + 1 = 10 π.χ., 01101 1010 + 10111 + 1100 ------- ------ 100100 10110 Ο πολλαπλασιασμός γίνεται όπως και στο δεκαδικό σύστημα: 1001 x 1010 ------ 0000 1001 0000 + 1001 --------- 1011010 Υπολογιστική αναπαράσταση ακεραίων α) Προσημασμένο μέγεθος - Τα υπόλοιπα m-1 bits για το μέγεθος του αριθμού (απόλυτη τιμή) Για m=8 (όλα τα υπόλοιπα περί υπολογιστικής αναπαράστασης, υποθέτουν ότι χρησιμοποιούμε 8 bits, δηλ. m = 8): π,χ., 00101010 2 = 42 10, 10101010 2 = -42 10 Δύο μηδενικά: 00000000 και 10000000 β) Συμπλήρωμα ως προς ένα (one s complement) - Ο αντίθετος: αντικατάσταση των 0 με 1 και των 1 με 0 (bit swapping) π,χ., 00101010 2 = 42 10, 11010101 2 = -42 10 Δύο μηδενικά: 00000000 και 11111111 1

γ) Συμπλήρωμα ως προς δύο (two s complement) - Ο αντίθετος: όπως στο one s complement (bit swapping) + 1 (τυχόν κρατούμενο στο αριστερό bit αγνοείται) π,χ., 00101010 2 = 42 10, 11010110 2 (*) = -42 10 (*) 11010101 (bit swapping) +00000001 (μονάδα) -------------- 11010110 Ένα μηδέν: 00000000 (γιατί με bit-swapping συν 1 έχουμε πάλι 00000000) Όμως: αρνητικοί = θετικοί + 1 δ) Πλεόνασμα (excess) κατά 2 m-1 Κάθε αριθμός παριστάνεται με το άθροισμα της πραγματικής του τιμής με το 2 m-1. π.χ., για m = 8, 2 7 = 128, οι αριθμοί από -128 έως 127 απεικονίζονται στους 0 έως 255 (δηλαδή και οι αρνητικοί αριθμοί απεικονίζονται σε θετικούς). Άρα, ο 42 10 γίνεται 128 + 42 = 170 10 = 10101010 2 ενώ ο -42 10 γίνεται 128 42 = 86 10 01010110 2. Παρατηρούμε ότι στην ουσία είναι το two s complement με το πρόσημο αντεστραμμένο. Προφανώς, εάν θέλουμε να αναπαραστήσουμε αριθμούς μικρότερους του -128 και μεγαλύτερους του 127, θα πρέπει να χρησιμοποιήσουμε περισσότερα των 8 bits. Αριθμητική στους δυαδικούς με συγκεκριμένη αναπαράσταση (για m=8) Δεκαδικό one s complement two s complement 10 00001010 00001010 + -3 + 11111100 + 11111101 + 7 1 00000110 1 00000111 00000111 00000111 - Στο one s complement τυχόν κρατούμενο στο αριστερό bit προστίθεται ξανά στο αποτέλεσμα. - Στο two s complement τυχόν κρατούμενο στο αριστερό bit αγνοείται. Υπερχείλιση και υπεκχείλιση Έστω ότι ένας υπολογιστής χειρίζεται μόνο 3ψήφιους θετικούς ακέραιους. Τότε, στις ακόλουθες πράξεις έχουμε: 600 + 600 = 1200 υπερχείλιση 002 005 = -3 υπεκχείλιση 2

Μεταβλητές (variables) Χρησιμοποιούνται για την αποθήκευση (φύλαξη) δεδομένων. Το στοιχείο το οποίο περιέχει μια μεταβλητή λέγεται τιμή. Μια μεταβλητή έχει: ορατότητα (θα το δούμε αργότερα...) τύπο (type) όνομα (identifier αναγνωριστικό) τιμή (value) Η δημιουργία μιας μεταβλητής σε ένα πρόγραμμα γίνεται με τη δήλωσή της. Η σύνταξη μιας τέτοιας δήλωσης είναι: <τύπος> <όνομα> [=τιμή]; π.χ., int a = 5; double b; char answer; (προς το παρόν παραλείπουμε την ορατότητα) Τύποι (types) πρωτογενείς (primitive types) String (αλφαριθμητικά) κλάσεις σύνθετη δομή σχεδιασμένη απ τον προγραμματιστή Βασικοί κανόνες σύνταξης o Δεσμευμένες λέξεις (reserved): class, public, private, int, double, char, κτλ. o Αναγνωριστικά (identifiers): ονόματα πραγμάτων (μεταβλητών, κλάσεων, μεθόδων, κτλ.) ξεκινάνε με: γράμμα, _, # περιέχουν: γράμματα, νούμερα, _, # (όχι κενά,., *, κτλ.) μέχρι 256 χαρακτήρες (συνήθως 3-15) χωρίς κενά υπάρχει διάκριση μεταξύ κεφαλαίων και μικρών Συνήθως (κατά σύμβαση): o ονόματα κλάσεων ξεκινούν με Κεφαλαίο o υπόλοιπα ονόματα ξεκινούν με μικρό o σταθερές όλα ΚΕΦΑΛΑΙΑ o ξεχωρίζουμε λέξεις ενός ονόματος με Κεφαλαίο γράμμα και όχι με _ π.χ., numberofbaskets, mystuff, κτλ. Π.χ., my.class: λάθος (περιέχει τελεία) 7eleven: λάθος (ξεκινάει με νούμερο) public: λάθος (δεσμευμένη λέξη) Car: σωστό, αλλά δεν συνηθίζεται (μεταβλητή που ξεκινάει με Κεφαλαίο) 3

Πρωτογενείς τύποι μεταβλητών (primitive types) byte -128 ακέραιος 127 1 byte short -32768 ακέραιος 32767 2 bytes int -2 31 ακέραιος 2 31-1 (δις) 4 bytes long -2 63 ακέραιος 2 63-1 (πεντάκις) 8 bytes float δεκαδικός ακρίβεια: ±10-46 / εύρος: ±10 38 4 bytes double δεκαδικός ακρίβεια: ±10-324 / εύρος: ±10 308 8 bytes char χαρακτήρας Unicode 2 bytes boolean true ή false 1 bit π.χ. char symbol; symbol = A ; System.out.println(symbol); To σύμβολο = δεν είναι το μαθηματικό =. Λέγεται τελεστής εκχώρησης (assignment operator). Πραγματοποιεί μεταβίβαση της τιμής στα δεξιά του στη μεταβλητή στα αριστερά του. Άλλα παραδείγματα: αλλά και: int a = 18743; boolean b = true; a = a + 5; int x = 1; int y = 2; x = y; (το x γίνεται 2) Τα δύο τελευταία παραδείγματα, αν και από μαθηματικής άποψης μπορούν να θεωρηθούν λάθος, σε μια γλώσσα προγραμματισμού είναι σωστά. Στο πρώτο, απλά αλλάζει η τιμή του a και από 18743 γίνεται 18748. Στο δεύτερο, η μεταβλητή x παίρνει την τιμή της μεταβλητής y, δηλαδή γίνεται ίση με 2. Για αλφαριθμητικά (αλληλουχία χαρακτήρων): Τύπος String (είναι κλάση δεν είναι πρωτογενής τύπος μεταβλητών) (Περισσότερα σε επόμενο μάθημα). 4

Παράδειγμα εισόδου / εξόδου Το παρακάτω πρόγραμμα Java αποτελείται από μία μόνο κλάση, την κλάση εφαρμογής (περιέχει τη μέθοδο main). Δέχεται δύο ακέραιους αριθμούς από τον χρήστη, και εκτυπώνει στην οθόνη το άθροισμά τους. /* A simple java input/output example. October 25, 2007 */ import java.util.*; // βιβλιοθήκη που περιέχει την κλάση Scanner // για είσοδο δεδομένων public class Addition { public static void main(string [] args) { System.out.println( Enter two integer numbers on a line ); int n1, n2; Scanner keyboard = new Scanner(System.in); n1 = keyboard.nextint(); n2 = keyboard.nextint(); System.out.println( The sum of those two numbers is: ); System.out.println(n1+n2); } // end of method } // end of class Το κείμενο ανάμεσα στα σύμβολα /* και */ είναι σχόλιο και δεν αποτελεί μέρος του κώδικα της Java. Επίσης, το ίδιο συμβαίνει για το κείμενο που ακολουθεί το σύμβολο // σε μια γραμμή του προγράμματος (σχόλιο γραμμής). Σημείωση: Για την έξοδο στην οθόνη δεν χρειάζεται να προσθέσουμε κάποιο import στο πρόγραμμά μας. Ό,τι χρειάζεται για την έξοδο εισάγεται αυτόματα από τη Java. Αντίθετα, για την είσοδο, χρειάζεται να συμπεριλάβουμε (με το import ) τη «βιβλιοθήκη» (πακέτο) java.util στο πρόγραμμά μας. Περισσότερα για αυτή τη διαδικασία θα αναφερθούν στο μάθημα «Πληροφορική ΙΙ». Για να τρέξει το πρόγραμμά μας: i) Το σώζουμε σε αρχείο: Addition.java (όνομα αρχείου ίδιο με όνομα κλάσης) ii) Το κάνουμε compile: javac Addition.java Addition.class (byte-code) iii) Τρέχουμε το αρχείο byte-code με τον interpreter: java Addition 5