Page 4 of 6

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Jan 31, 2017 12:54 am
by chris-
Georgilakis Antonios wrote:(A) Console Output:

Code: Select all

25
0
25
25
28
28 
Το τελευταίο γιατί 28; Μόνο την τιμή του c1 δεν αλλάξαμε;

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Jan 31, 2017 12:57 am
by Georgilakis Antonios
chris- wrote:Το τελευταίο γιατί 28; Μόνο την τιμή του c1 δεν αλλάξαμε;
Πρόσεχε:

Code: Select all

c2 = c1;
:-D

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Jan 31, 2017 1:00 am
by chris-
Georgilakis Antonios wrote: Πρόσεχε:

Code: Select all

c2 = c1;
:-D
Σωστός, σωστός. :)
Τα κοιτούσα σαν μεταβλητές αντί για αντικείμενα, τώρα κατάλαβα.

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Jan 31, 2017 6:47 pm
by fox0077
@Georgilakis Antonios σε ευχαριστω πολυ!!! Για καποιο λογο οταν τρεχω προγραμματα με arrays μου βγαζει διαφορα error... :/ Στην ερωτηση:
Τι εμφανίζει το παρακάτω απόσπασμα προγράμματος και γιατί;

Code: Select all

int[] a = { 1, 2, 3 };
int[] b = { 1, 2, 3 };
println(a == b);
Η απαντηση μηπως ειναι true επειδη τα στοιχεια του πινακα ειναι ιδια;

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Jan 31, 2017 6:58 pm
by leecher
fox0077 wrote:@Georgilakis Antonios σε ευχαριστω πολυ!!! Για καποιο λογο οταν τρεχω προγραμματα με arrays μου βγαζει διαφορα error... :/ Στην ερωτηση:
Τι εμφανίζει το παρακάτω απόσπασμα προγράμματος και γιατί;
int[] a = { 1, 2, 3 };
int[] b = { 1, 2, 3 };
println(a == b);
Η απαντηση μηπως ειναι true επειδη τα στοιχεια του πινακα ειναι ιδια;
Θα τυπώσει false γιατί αν και έχουν ίδια περιεχόμενα, είναι διαφορετικά αντικείμενα που βρίσκονται σε διαφορετικές θέσεις μνήμης.

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Jan 31, 2017 7:07 pm
by fox0077
Ευχαριστω! Αν σε αυτη τη περιπτωση ομως χρησιμοποιουσαμε την equals τοτε θα εβγαζε true, σωστα;

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Tue Jan 31, 2017 8:14 pm
by Georgilakis Antonios
Αυτό που λέει ο @leecher είναι σωστό. Σαν συνέχεια θα παραθέσω το εξής:

Code: Select all

println(a == b);		  // Τυπώνει 'false'.
println(a.equals(b));	// Τυπώνει και αυτό 'false'.

===================================================================================================

import java.util.Arrays;

// ...

println(Arrays.equals(a, b));	// Τυπώνει 'true', δεν λειτουργεί για arrays 2 διαστάσεων και πάνω.
Δες αυτό για περισσότερες λεπτομέρειες: http://stackoverflow.com/questions/8777 ... ls-in-java

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Wed Feb 01, 2017 11:40 am
by Everett Lake
Ξέρουμε αν επιτρέπεται κόλλα Α4?

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Wed Feb 01, 2017 1:46 pm
by Hermes
Παιδια δεν εχω καταλαβει καποια πραγματα. Ευχαριστω εκ των προτερων σε αυτον που θα με βοηθησει. Εχουμε δυο προγραμματα:

Code: Select all

import acm.program.*;
public class ask1 extends Program {
public void run() {
int x = 1;
incr(x);
println(x);
}
void incr(int a) {
a++;
println(a);
}
}
Στο παραπανω προγραμμα η έξοδος ειναι:

Code: Select all

2
1
Σε ενα αλλο προγραμμα ομως:

Code: Select all

import acm.program.*;
public class ask2 extends Program {
public void run() {
int[] x= {1, -1}
incr(x);
println(x[0]);
}
void incr(int[a]) {
a[0]++;
println(a[0]);
}
}
Στο παραπανω προγραμμα η εξοδος ειναι:

Code: Select all

2
2
Στο πρωτο προγραμμα, η α εχει την τιμη της x, δεν ειναι η x. Αυξανεται η τιμη της α, οχι αυτη της x. Στο δευτερο προγραμμα ομως γιατι αυξανεται και της x και της α;;; Αφου ειναι ιδια λογικη με το πρωτο προγραμμα

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Wed Feb 01, 2017 2:03 pm
by kras
Στην Java τα arrays είναι αντικείμενα. Όταν περνάς σαν παράμετρο τη x στο δεύτερο πρόγραμμα, περνάς μια αναφορά προς τον πίνακα x.

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Wed Feb 01, 2017 2:35 pm
by Hermes
kras wrote:Στην Java τα arrays είναι αντικείμενα. Όταν περνάς σαν παράμετρο τη x στο δεύτερο πρόγραμμα, περνάς μια αναφορά προς τον πίνακα x.
ευχαριστω! ξερετε κανενα λινκ που να τα λεει ολα σχετικα με τους τελεστες προσαυξησης γιατι με μπερδευουν ολες οι συναφεις διαφοροποιησεις;

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Wed Feb 01, 2017 2:53 pm
by Georgilakis Antonios
Hermes wrote:ξερετε κανενα λινκ που να τα λεει ολα σχετικα με τους τελεστες προσαυξησης γιατι με μπερδευουν ολες οι συναφεις διαφοροποιησεις;
https://docs.oracle.com/javase/tutorial ... s/op1.html

Βοηθάει ?

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Wed Feb 01, 2017 3:04 pm
by Hermes
οχι, ψαχνω κατι που να εξηγει τα πιο περιπλοκα, οπως αυτο
int x = 5, y = 10;
x-=--y;
int a = y++*y--%y;
println(x);
println("msg"+x+y);
println(a);
ετσι περιπλοκα που εχει τους τελεστες και παρολο που μου εξηγησες δεν καταλαβα :/

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Wed Feb 01, 2017 3:23 pm
by Georgilakis Antonios
Hermes wrote:οχι, ψαχνω κατι που να εξηγει τα πιο περιπλοκα, οπως αυτο
int x = 5, y = 10;
x-=--y;
int a = y++*y--%y;
println(x);
println("msg"+x+y);
println(a);
ετσι περιπλοκα που εχει τους τελεστες και παρολο που μου εξηγησες δεν καταλαβα :/
Σου φαίνεται περίπλοκο επειδή πρέπει πρώτα να μάθεις την προτεραιότητα των τελεστών πριν προχωρίσεις παρακάτω. Δεν υπάρχει υπολογιστής που να υπολογίζει παραστάσεις όπως οι παραπάνω σε ένα βήμα, αλλά παράγονται εντολές που υπολογίζουν ενδιάμεσα αποτελέσματα πρώτα, και στο τέλος υπολογίζεται το final result. Ο τρόπος που θα παραχθούν τα ενδιάμεσα αποτελέσματα καθορίζεται από τους τελεστές που θα εκτελεστούν πρώτοι, κατόπιν οι επόμενοι... κ.λπ., ώστε να συντεθεί το αποτέλεσμα.

Σε προηγούμενο post δίνω σε βήματα την εκτέλεση των πράξεων, και των σύνθεση του τελικού αποτελέσματος, που θα παράγει ένας υπολογιστής όταν εκτελέσει τις παραπάνω αριθμητικές παραστάσεις, σύμφωνα με τους κανονισμούς προτεραιότητας των πράξεων στην JAVA.

Αν δοθεί τέτοιο θέμα, θα πρέπει να εκτελέσετε τις πράξεις σύμφωνα με αυτούς τους κανονισμούς και να παρουσιάσετε το αποτέλεσμα - κάτι παρόμοιο με αυτό που παρουσίασα (όπως είπα προηγουμένως) σε προηγούμενο post.

Νομίζω κάποια πιο "έτοιμη" συνταγή δεν υπάρχει, παρά μόνο να απλοποιήσεις όσο μπορείς την αριθμητική παράσταση. Το θέμα δίνεται με αυτό τον τρόπο για να εξεταστείτε στο κατά πόσο μπορείτε να χρησιμοποιήσετε σωστά τους τελεστές - και με την σωστή σειρά - για να πάρετε σωστό αποτέλεσμα. :-D

=========================================================================================================

Μια επιπλέον σημείωση σχετικά με τους τελεστές ++ / --:

Έστω μεταβλητή y = 10.

Code: Select all

int a = y++ * y-- % y;
1ο βήμα: y++ => Επιστρέφει 10, μετά όμως θα ισχύει y = 11, άρα:

Code: Select all

int a = 10 * y-- % y;	// Το y τώρα είναι 11.
2ο βήμα: y-- => Επιστρέφει 11, μετά όμως θα ισχύει y = 10, άρα:

Code: Select all

int a = 10 * 11 % y;	// Το y τώρα είναι 10.
3ο βήμα: Εκτελώ πολλαπλασιασμό:

Code: Select all

int a = 110 % 10;
4ο βήμα: Βρίσκω υπόλοιπο:

Code: Select all

int a = 0;
Άρα τελική τιμή a = 0.

Το άλλο παράδειγμα: Έστω μεταβλητές χ = 30 & y = 11.

Code: Select all

int x -= --y;
1ο βήμα: --y => Πρώτα αφαιρεί 1 μονάδα, άρα θα ισχύει y = 10, και επιστρέφει αυτή την τιμή.

Code: Select all

int x -= 10;
2ο βήμα: Εκτελώ την αφαίρεση x - y και αποθηκεύω το αποτέλεσμα στην μεταβλητή x.

Code: Select all

int x = 30 - 10;	// int x -= 10;
Άρα τελική τιμή x = 20.

Πραγματικά δεν μπορώ να το εξηγήσω πιο απλά. Αν μπορεί κάποιος άλλος και θέλει, ας το κάνει. :)

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Wed Feb 01, 2017 3:41 pm
by fox0077
Τι θα συμβει αν βγαλουμε τα breaks;

Code: Select all

public void run() {
   println(This program shows the number of days in a month.");
   int month = readInt("Enter numeric month (Jan=1): ");
   switch (month) {
      case 2:
         println("28 days (29 in leap years)");
         break;
      case 4: case 6: case 9: case 12:
         println("30 days");
         break;
      case 1: case 3: case 5: case 7: case 8: case 11:
         println("31 days");
         break;
      default:
         println("Illegal month number");
         break;
   }
}
Και δευτερον, (ανεξαρτητο ερωτημα), τι θα συμβει στον παρακατω κωδικα;

Code: Select all

for( ; ;) 
    ;
 println(“hello”);

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Wed Feb 01, 2017 3:52 pm
by Georgilakis Antonios
fox0077 wrote:Τι θα συμβει αν βγαλουμε τα breaks;

Code: Select all

public void run() {
   println(This program shows the number of days in a month.");
   int month = readInt("Enter numeric month (Jan=1): ");
   switch (month) {
      case 2:
         println("28 days (29 in leap years)");
         break;
      case 4: case 6: case 9: case 12:
         println("30 days");
         break;
      case 1: case 3: case 5: case 7: case 8: case 11:
         println("31 days");
         break;
      default:
         println("Illegal month number");
         break;
   }
}
Και δευτερον, (ανεξαρτητο ερωτημα), τι θα συμβει στον παρακατω κωδικα;

Code: Select all

for( ; ;) 
    ;
 println(“hello”);
(A) Θα εκτυπωθεί το ανάλογο κείμενο σύμφωνα και με το case που εμπίπτει ο αριθμός, συν όλα τα υπόλοιπα από εκεί και κάτω μέχρι το τέλος του switch statement.

(B) Το πρόγραμμα δεν τερματίζει ποτέ. Με λίγα λόγια, θα "παγιδευτεί" στο for statement, χωρίς ποτέ να "βγει" από αυτό και να συνεχίσει παρακάτω. Ισοδύναμο με:

Code: Select all

while (true)	// while (true);
	{ }

println(“hello”);

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Wed Feb 01, 2017 7:47 pm
by chris-
Everett Lake wrote:Ξέρουμε αν επιτρέπεται κόλλα Α4?
Μέχρι στιγμής τουλάχιστον, δεν έχει πει κάτι τέτοιο. Στην εργαστηριακή εξέταση, ωστόσο, επιτρέπεται βιβλίο.

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Wed Feb 01, 2017 8:01 pm
by alex_matthes
chris- wrote:
Everett Lake wrote:Ξέρουμε αν επιτρέπεται κόλλα Α4?
Μέχρι στιγμής τουλάχιστον, δεν έχει πει κάτι τέτοιο. Στην εργαστηριακή εξέταση, ωστόσο, επιτρέπεται βιβλίο.
Αυτό το γράφει κάπου στο eclass σε ανακοίνωση ή σε εγγραφο ή το έχουν πει οι καθηγητές;

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Wed Feb 01, 2017 8:22 pm
by leecher
alex_matthes wrote:
chris- wrote:
Everett Lake wrote:Ξέρουμε αν επιτρέπεται κόλλα Α4?
Μέχρι στιγμής τουλάχιστον, δεν έχει πει κάτι τέτοιο. Στην εργαστηριακή εξέταση, ωστόσο, επιτρέπεται βιβλίο.
Αυτό το γράφει κάπου στο eclass σε ανακοίνωση ή σε εγγραφο ή το έχουν πει οι καθηγητές;
Ημερομηνία: 2017-01-20 18:56:18
Το πρόγραμμα της εξέτασης εργαστηρίου έχει αναρτηθεί στα έγγραφα του μαθήματος. Στη συγκεκριμένη εξέταση μπορείτε να έχετε μαζί σας μόνο το βιβλίο.

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Wed Feb 01, 2017 9:06 pm
by alex_matthes
Δεν το είχα δει, ευχαριστώ!

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Fri Feb 03, 2017 8:43 pm
by Mickey
Οσον αφορα τις tricky ερωτησεις, οταν εχουμε: println("a result is "+1+1) εμφανίζει δύο ή έντεκα;

Re: Εισαγωγή στον Προγραμματισμό Υπολογιστών

Posted: Fri Feb 03, 2017 9:29 pm
by leecher
Mickey wrote:Οσον αφορα τις tricky ερωτησεις, οταν εχουμε: println("a result is "+1+1) εμφανίζει δύο ή έντεκα;
11