Εργασία Java

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
User avatar
Paralias
Gbyte level
Gbyte level
Posts: 1346
Joined: Mon May 24, 2004 11:30 am
Academic status: Alumnus/a
Location: Αθήνα

Εργασία Java

Post by Paralias » Wed Nov 10, 2004 4:18 pm

Χαιρετώ!Να ρωτήσω κάτι για τη Java;Στην πρώτη εργασία χρησιμοποίησα ενα if για να απορίπτω τις αρνητικές τιμές των δευτερολέπτων.Έγραψα λοιπόν:

Code: Select all

if (seconds<0)
         System.out.println("Dwsate lathos timi!Parakalw dwste thetiki timi");
else{...εντολές...}
Όλα καλά μέχρι εδώ.Ήθελα όμως να απορρίπτω και τις τιμές που είναι μεγαλύτερες από 86400 δευτερόλεπτα γιατί 86400 sec έχει μία μέρα.Και τότε έγραψα:
if (seconds<0)|(seconds>86400)
         System.out.println("Dwsate lathos timi!Parakalw dwste timi anamesa sto 0 kai 86400");
else{...εντολές...}
αλλά μου έβγαζε συντακτικό λάθος.Γιατιιιιιιιιιιιιιιιιιιιιιιιι;;;;;;; :!:
User avatar
Ethel
Venus Project Founder
Venus Project Founder
Posts: 2395
Joined: Fri Mar 19, 2004 10:41 am
Academic status: Alumnus/a
Gender:
Location: New York City, NY
Contact:

Re: Εργασία Java

Post by Ethel » Wed Nov 10, 2004 4:41 pm

Code: Select all

if (seconds<0)
         System.out.println("Dwsate lathos timi!Parakalw dwste thetiki timi");
else{...εντολές...}
if ((seconds<0)||(seconds>86400)) //αλλαγή εδώ
         System.out.println("Dwsate lathos timi!Parakalw dwste timi anamesa sto 0 kai 86400");
else{...εντολές...}
Για δοκίμασέ το έτσι
There's no place like 127.0.0.1
User avatar
tsilochr
Wow! Terabyte level
Wow! Terabyte level
Posts: 3246
Joined: Tue Mar 16, 2004 2:47 pm
Academic status: PhD
Gender:
Location: mm.aueb.gr
Contact:

Post by tsilochr » Thu Nov 11, 2004 1:09 pm

Θα γράψω περίπου το ίδιο με την ethel

Code: Select all

if ( (seconds<0) || (seconds>86400) ) 
Πρέπει ολόκληρη η συνθήκη " (seconds<0) || (seconds>86400)" να είναι μέσα σε παρενθέσεις
User avatar
Einherjar
Venus Project Founder
Venus Project Founder
Posts: 3751
Joined: Tue Jan 27, 2004 4:42 pm
Academic status: Alumnus/a
Gender:
Location: Washington DC, USA
Contact:

Post by Einherjar » Thu Nov 11, 2004 1:18 pm

είναι μέσα σε παρενθέσεις
[Better to understand a little than to misunderstand a lot]
User avatar
Ethel
Venus Project Founder
Venus Project Founder
Posts: 2395
Joined: Fri Mar 19, 2004 10:41 am
Academic status: Alumnus/a
Gender:
Location: New York City, NY
Contact:

Post by Ethel » Thu Nov 11, 2004 1:23 pm

tsilochr.... δεν προσέχεις... :razz:
There's no place like 127.0.0.1
User avatar
Ganther
Wow! Terabyte level
Wow! Terabyte level
Posts: 2273
Joined: Fri Jun 18, 2004 9:31 am
Academic status: 3rd year
Gender:

Post by Ganther » Thu Nov 11, 2004 2:21 pm

Σωστη η εθελ. Το δοκιμασα στο Jbuilder. Αμεσως αυτο εβγαλε... :) :)
User avatar
Paralias
Gbyte level
Gbyte level
Posts: 1346
Joined: Mon May 24, 2004 11:30 am
Academic status: Alumnus/a
Location: Αθήνα

Post by Paralias » Thu Nov 11, 2004 2:54 pm

Ευχαριστώ πολύ παιδιά!Πάντως το λάθος δεν ήταν για το αν θα χρησιμοποιήσω δύο || ή ένα |. Έχει συντακτική σημασία.Αν χρησιμοποιήσω ένα | τότε εξετάζεται η πρώτη συνθήκη και αν βρεθεί true συνεχίζει και εξετάζει την επόμενη.Αν όμως χρησιμοιήσω δύο || τότε αν η πρώτη συνθήκη βρεθεί true δεν εξετάζεται η επόμενη.Βέβαια στη συγκεκριμένη περίπτωση δεν έχει καμία διαφορά,απλά έτσι το ανέφερα.Ευχαριστώ και πάλι! :smile:
User avatar
Einherjar
Venus Project Founder
Venus Project Founder
Posts: 3751
Joined: Tue Jan 27, 2004 4:42 pm
Academic status: Alumnus/a
Gender:
Location: Washington DC, USA
Contact:

Post by Einherjar » Thu Nov 11, 2004 3:48 pm

είσαι σίγουρος γι'αυτό που λες? όταν υπάρχει λογικό OR τότε αρκεί ένας από τους τελεσταίους να είναι αληθής για να είναι ολόλκηρη η συνθήκη αληθής. Οπότε αν το πρώτο είναι αληθές, ολόκληρο θα είναι αληθες.
[Better to understand a little than to misunderstand a lot]
User avatar
HdkiLLeR
Venus Project Founder
Venus Project Founder
Posts: 4356
Joined: Tue Jan 27, 2004 4:41 pm
Academic status: Alumnus/a
Gender:
Location: New York, NY
Contact:

Post by HdkiLLeR » Thu Nov 11, 2004 3:48 pm

Paralias wrote:Ευχαριστώ πολύ παιδιά!Πάντως το λάθος δεν ήταν για το αν θα χρησιμοποιήσω δύο || ή ένα |. Έχει συντακτική σημασία.Αν χρησιμοποιήσω ένα | τότε εξετάζεται η πρώτη συνθήκη και αν βρεθεί true συνεχίζει και εξετάζει την επόμενη.Αν όμως χρησιμοιήσω δύο || τότε αν η πρώτη συνθήκη βρεθεί true δεν εξετάζεται η επόμενη.Βέβαια στη συγκεκριμένη περίπτωση δεν έχει καμία διαφορά,απλά έτσι το ανέφερα.Ευχαριστώ και πάλι! :smile:
H διαφορά είναι στο ότι το || είναι λογικός τελεστής σύγκρισης. Κοινώς first || second σημαίνει εάν το first ή το second είναι true -> return true. Tο | είναι και αυτός τελεστής αλλά όχι λογικός. Είναι το bitwise or.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------

"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
User avatar
Ethel
Venus Project Founder
Venus Project Founder
Posts: 2395
Joined: Fri Mar 19, 2004 10:41 am
Academic status: Alumnus/a
Gender:
Location: New York City, NY
Contact:

Post by Ethel » Thu Nov 11, 2004 9:18 pm

Ganther wrote:Σωστη η εθελ. Το δοκιμασα στο Jbuilder. Αμεσως αυτο εβγαλε... :) :)
:smt024 ----> :smt023
hdkiller wrote:H διαφορά είναι στο ότι το || είναι λογικός τελεστής σύγκρισης. Κοινώς first || second σημαίνει εάν το first ή το second είναι true -> return true. Tο | είναι και αυτός τελεστής αλλά όχι λογικός. Είναι το bitwise or.
το οποίο bitwise or τι κάνει;
There's no place like 127.0.0.1
User avatar
Einherjar
Venus Project Founder
Venus Project Founder
Posts: 3751
Joined: Tue Jan 27, 2004 4:42 pm
Academic status: Alumnus/a
Gender:
Location: Washington DC, USA
Contact:

Post by Einherjar » Thu Nov 11, 2004 10:14 pm

είναι αυτό που κάναμε στην αρχιτεκτονική Η/Υ (ή κατά άλλους ψηφιακή σχεδίαση) όπου παίρνεις 2 bits και τα παιρνάς από πύλη OR
[Better to understand a little than to misunderstand a lot]
User avatar
Ganther
Wow! Terabyte level
Wow! Terabyte level
Posts: 2273
Joined: Fri Jun 18, 2004 9:31 am
Academic status: 3rd year
Gender:

Post by Ganther » Thu Nov 11, 2004 10:33 pm

Chin chan chon, και ειμαι 3οετης... καλα παμε... :) :) :P

(αληθεια ποσο θελετε για ιδιαιτερα?? :oops: )
User avatar
Ethel
Venus Project Founder
Venus Project Founder
Posts: 2395
Joined: Fri Mar 19, 2004 10:41 am
Academic status: Alumnus/a
Gender:
Location: New York City, NY
Contact:

Post by Ethel » Thu Nov 11, 2004 10:48 pm

Για αρχή ας πάμε στο workshop να μας μάθουν κάτι για linux και τα υπόλοιπα φαντάζομαι θα τα "διδάξουν" εν καιρώ... :smt045
There's no place like 127.0.0.1
User avatar
HdkiLLeR
Venus Project Founder
Venus Project Founder
Posts: 4356
Joined: Tue Jan 27, 2004 4:41 pm
Academic status: Alumnus/a
Gender:
Location: New York, NY
Contact:

Post by HdkiLLeR » Sat Nov 13, 2004 1:04 pm

Ethel wrote:το οποίο bitwise or τι κάνει;
Όπως είπε και ο Einherjar παραπάνω απλά περνάει τις τιμές μέσα απο ένα OR(κάνει OR ένα ένα τα bit της τιμής). Η Java αν και δεν είναι η καλύτερη γλώσα για τέτοιου είδους low level operations διαθέτει αρκετούς τελεστές. Πχ ολίσθηση(shift-για να κάνεις αμέσως 2* και να μην χρησιμοποιείς MUL κλπ κλπ), OR, AND και πολλά άλλα τα οποία σπάνια χρησιμοποιείς αλλά πολλές φορές χρειάζονται.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------

"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
User avatar
Ethel
Venus Project Founder
Venus Project Founder
Posts: 2395
Joined: Fri Mar 19, 2004 10:41 am
Academic status: Alumnus/a
Gender:
Location: New York City, NY
Contact:

Post by Ethel » Sat Nov 13, 2004 6:29 pm

Μάλιστα... Thanks παιδιά για τη διαφώτιση :-D
There's no place like 127.0.0.1
User avatar
Paralias
Gbyte level
Gbyte level
Posts: 1346
Joined: Mon May 24, 2004 11:30 am
Academic status: Alumnus/a
Location: Αθήνα

Post by Paralias » Sat Nov 13, 2004 7:59 pm

Αυτό που είπα παραπάνω για τη διαφορά | και || το έχω διαβάσει σε βιβλίο και συγκεκριμένα γράφει: Παράδειγμα:
boolean unusual = (grimThoughts>10)||(girlfriendAge>75);
και μετά επεξηγεί:Παρατηρήστε τη χρήση του || αντί του |.Λόγω αυτής της χρήσης, αν η grimThoughts>10 είναι true,τότε η unusual τίθεται σε true και η δεύτερη έκφραση δεν αποτιμάται.
Όταν το διάβασα αυτό δεν κατάλαβα γιτί το λέει αφού αρκεί μία έκφραση να είναι true για να είναι όλη η πρόταση true.Αν βρει την πρώτη έκφραση false,τότε θα προχωρήσει στην επόμενη έκφραση.Άρα δεν έχει νόημα αυτό που γράφει το βιβλίο,σωστά;;;Anyway!Το βιβλίο είναι:"Πλήρες εγχειρίδιο της Java 2"
User avatar
vagalati
Mbyte level
Mbyte level
Posts: 579
Joined: Tue Mar 16, 2004 2:46 pm
Location: 7000 miles away from aueb

Post by vagalati » Sat Nov 13, 2004 8:27 pm

Κοίταξε, παρατήρησε τις δύο παρακάτω εντολές:

Code: Select all

boolean unusual = (grimThoughts>10) || (test.isTrue()); 

Code: Select all

boolean unusual = (grimThoughts>10) | (test.isTrue()); 
Στην πρώτη περίπτωση η συνάρτηση isTrue θα εκτελεστεί μόνο αν η πρώτη συνθήκη είναι true. Ενώ στη δεύτερη θα εκτελείται πάντα!
Η διαφορά είναι ότι στην πρώτη περίπτωση ο παραγώμενος κώδικας είναι branch υπο συνθήκη για κάθε μια συνθήκη απο την πρώτη στη τελευταία ενώ στη δεύτερη είναι πρώτα bitwise OR στα αποτελέσματα και μετά συνθήκη επι του τελικού αποτελέσματος. Όσοι έχουν κάνει μεταγγλωτιστές ας θυμηθούν λίγο την παραγωγή κώδικα...
Ni!! Ni!! Ni!!
Post Reply

Return to “Προγραμματισμός”