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

Τα posts που έγιναν κατά την διάρκεια του Ακαδημαϊκού Έτους 2016-2017 για τα προπτυχιακά μαθήματα.
User avatar
chris-
bit level
bit level
Posts: 33
Joined: Sun Aug 28, 2016 8:45 pm

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

Post by chris- » Tue Jan 31, 2017 12:54 am

Georgilakis Antonios wrote:(A) Console Output:

Code: Select all

25
0
25
25
28
28 
Το τελευταίο γιατί 28; Μόνο την τιμή του c1 δεν αλλάξαμε;
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 548
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: Alumnus/a
Gender:
Location: Straight into your Mind

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

Post by Georgilakis Antonios » Tue Jan 31, 2017 12:57 am

chris- wrote:Το τελευταίο γιατί 28; Μόνο την τιμή του c1 δεν αλλάξαμε;
Πρόσεχε:

Code: Select all

c2 = c1;
:-D
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
User avatar
chris-
bit level
bit level
Posts: 33
Joined: Sun Aug 28, 2016 8:45 pm

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

Post by chris- » Tue Jan 31, 2017 1:00 am

Georgilakis Antonios wrote: Πρόσεχε:

Code: Select all

c2 = c1;
:-D
Σωστός, σωστός. :)
Τα κοιτούσα σαν μεταβλητές αντί για αντικείμενα, τώρα κατάλαβα.
fox0077
byte level
byte level
Posts: 117
Joined: Sun Oct 09, 2016 2:19 pm
Academic status: 4th year

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

Post by fox0077 » Tue Jan 31, 2017 6:47 pm

@Georgilakis Antonios σε ευχαριστω πολυ!!! Για καποιο λογο οταν τρεχω προγραμματα με arrays μου βγαζει διαφορα error... :/ Στην ερωτηση:
Τι εμφανίζει το παρακάτω απόσπασμα προγράμματος και γιατί;

Code: Select all

int[] a = { 1, 2, 3 };
int[] b = { 1, 2, 3 };
println(a == b);
Η απαντηση μηπως ειναι true επειδη τα στοιχεια του πινακα ειναι ιδια;
Last edited by leecher on Tue Jan 31, 2017 7:02 pm, edited 1 time in total.
Reason: code tags
User avatar
leecher
Venus Former Team Member
Posts: 139
Joined: Fri Jan 23, 2015 9:47 pm
Academic status: N>4
Gender:

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

Post by leecher » Tue Jan 31, 2017 6:58 pm

fox0077 wrote:@Georgilakis Antonios σε ευχαριστω πολυ!!! Για καποιο λογο οταν τρεχω προγραμματα με arrays μου βγαζει διαφορα error... :/ Στην ερωτηση:
Τι εμφανίζει το παρακάτω απόσπασμα προγράμματος και γιατί;
int[] a = { 1, 2, 3 };
int[] b = { 1, 2, 3 };
println(a == b);
Η απαντηση μηπως ειναι true επειδη τα στοιχεια του πινακα ειναι ιδια;
Θα τυπώσει false γιατί αν και έχουν ίδια περιεχόμενα, είναι διαφορετικά αντικείμενα που βρίσκονται σε διαφορετικές θέσεις μνήμης.
fox0077
byte level
byte level
Posts: 117
Joined: Sun Oct 09, 2016 2:19 pm
Academic status: 4th year

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

Post by fox0077 » Tue Jan 31, 2017 7:07 pm

Ευχαριστω! Αν σε αυτη τη περιπτωση ομως χρησιμοποιουσαμε την equals τοτε θα εβγαζε true, σωστα;
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 548
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: Alumnus/a
Gender:
Location: Straight into your Mind

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

Post by Georgilakis Antonios » Tue Jan 31, 2017 8:14 pm

Αυτό που λέει ο @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
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
Everett Lake
bit level
bit level
Posts: 16
Joined: Wed Sep 17, 2014 1:18 pm
Academic status: N>4

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

Post by Everett Lake » Wed Feb 01, 2017 11:40 am

Ξέρουμε αν επιτρέπεται κόλλα Α4?
User avatar
Hermes
bit level
bit level
Posts: 30
Joined: Thu Dec 15, 2016 6:17 pm
Academic status: 1st year
Gender:

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

Post by Hermes » Wed Feb 01, 2017 1:46 pm

Παιδια δεν εχω καταλαβει καποια πραγματα. Ευχαριστω εκ των προτερων σε αυτον που θα με βοηθησει. Εχουμε δυο προγραμματα:

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 και της α;;; Αφου ειναι ιδια λογικη με το πρωτο προγραμμα
User avatar
kras
Kilobyte level
Kilobyte level
Posts: 253
Joined: Mon Sep 01, 2014 1:21 am
Academic status: 4th year
Gender:

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

Post by kras » Wed Feb 01, 2017 2:03 pm

Στην Java τα arrays είναι αντικείμενα. Όταν περνάς σαν παράμετρο τη x στο δεύτερο πρόγραμμα, περνάς μια αναφορά προς τον πίνακα x.
User avatar
Hermes
bit level
bit level
Posts: 30
Joined: Thu Dec 15, 2016 6:17 pm
Academic status: 1st year
Gender:

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

Post by Hermes » Wed Feb 01, 2017 2:35 pm

kras wrote:Στην Java τα arrays είναι αντικείμενα. Όταν περνάς σαν παράμετρο τη x στο δεύτερο πρόγραμμα, περνάς μια αναφορά προς τον πίνακα x.
ευχαριστω! ξερετε κανενα λινκ που να τα λεει ολα σχετικα με τους τελεστες προσαυξησης γιατι με μπερδευουν ολες οι συναφεις διαφοροποιησεις;
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 548
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: Alumnus/a
Gender:
Location: Straight into your Mind

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

Post by Georgilakis Antonios » Wed Feb 01, 2017 2:53 pm

Hermes wrote:ξερετε κανενα λινκ που να τα λεει ολα σχετικα με τους τελεστες προσαυξησης γιατι με μπερδευουν ολες οι συναφεις διαφοροποιησεις;
https://docs.oracle.com/javase/tutorial ... s/op1.html

Βοηθάει ?
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
User avatar
Hermes
bit level
bit level
Posts: 30
Joined: Thu Dec 15, 2016 6:17 pm
Academic status: 1st year
Gender:

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

Post by Hermes » Wed Feb 01, 2017 3:04 pm

οχι, ψαχνω κατι που να εξηγει τα πιο περιπλοκα, οπως αυτο
int x = 5, y = 10;
x-=--y;
int a = y++*y--%y;
println(x);
println("msg"+x+y);
println(a);
ετσι περιπλοκα που εχει τους τελεστες και παρολο που μου εξηγησες δεν καταλαβα :/
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 548
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: Alumnus/a
Gender:
Location: Straight into your Mind

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

Post by Georgilakis Antonios » Wed Feb 01, 2017 3:23 pm

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.

Πραγματικά δεν μπορώ να το εξηγήσω πιο απλά. Αν μπορεί κάποιος άλλος και θέλει, ας το κάνει. :)
Last edited by Georgilakis Antonios on Wed Feb 01, 2017 3:49 pm, edited 3 times in total.
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
fox0077
byte level
byte level
Posts: 117
Joined: Sun Oct 09, 2016 2:19 pm
Academic status: 4th year

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

Post by fox0077 » Wed Feb 01, 2017 3:41 pm

Τι θα συμβει αν βγαλουμε τα 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”);
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 548
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: Alumnus/a
Gender:
Location: Straight into your Mind

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

Post by Georgilakis Antonios » Wed Feb 01, 2017 3:52 pm

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”);
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
User avatar
chris-
bit level
bit level
Posts: 33
Joined: Sun Aug 28, 2016 8:45 pm

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

Post by chris- » Wed Feb 01, 2017 7:47 pm

Everett Lake wrote:Ξέρουμε αν επιτρέπεται κόλλα Α4?
Μέχρι στιγμής τουλάχιστον, δεν έχει πει κάτι τέτοιο. Στην εργαστηριακή εξέταση, ωστόσο, επιτρέπεται βιβλίο.
alex_matthes
bit level
bit level
Posts: 12
Joined: Tue Apr 19, 2016 6:50 pm
Academic status: 4th year
Gender:

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

Post by alex_matthes » Wed Feb 01, 2017 8:01 pm

chris- wrote:
Everett Lake wrote:Ξέρουμε αν επιτρέπεται κόλλα Α4?
Μέχρι στιγμής τουλάχιστον, δεν έχει πει κάτι τέτοιο. Στην εργαστηριακή εξέταση, ωστόσο, επιτρέπεται βιβλίο.
Αυτό το γράφει κάπου στο eclass σε ανακοίνωση ή σε εγγραφο ή το έχουν πει οι καθηγητές;
User avatar
leecher
Venus Former Team Member
Posts: 139
Joined: Fri Jan 23, 2015 9:47 pm
Academic status: N>4
Gender:

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

Post by leecher » Wed Feb 01, 2017 8:22 pm

alex_matthes wrote:
chris- wrote:
Everett Lake wrote:Ξέρουμε αν επιτρέπεται κόλλα Α4?
Μέχρι στιγμής τουλάχιστον, δεν έχει πει κάτι τέτοιο. Στην εργαστηριακή εξέταση, ωστόσο, επιτρέπεται βιβλίο.
Αυτό το γράφει κάπου στο eclass σε ανακοίνωση ή σε εγγραφο ή το έχουν πει οι καθηγητές;
Ημερομηνία: 2017-01-20 18:56:18
Το πρόγραμμα της εξέτασης εργαστηρίου έχει αναρτηθεί στα έγγραφα του μαθήματος. Στη συγκεκριμένη εξέταση μπορείτε να έχετε μαζί σας μόνο το βιβλίο.
alex_matthes
bit level
bit level
Posts: 12
Joined: Tue Apr 19, 2016 6:50 pm
Academic status: 4th year
Gender:

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

Post by alex_matthes » Wed Feb 01, 2017 9:06 pm

Δεν το είχα δει, ευχαριστώ!
Mickey
bit level
bit level
Posts: 38
Joined: Sat Dec 10, 2016 11:07 am
Academic status: 1st year

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

Post by Mickey » Fri Feb 03, 2017 8:43 pm

Οσον αφορα τις tricky ερωτησεις, οταν εχουμε: println("a result is "+1+1) εμφανίζει δύο ή έντεκα;
User avatar
leecher
Venus Former Team Member
Posts: 139
Joined: Fri Jan 23, 2015 9:47 pm
Academic status: N>4
Gender:

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

Post by leecher » Fri Feb 03, 2017 9:29 pm

Mickey wrote:Οσον αφορα τις tricky ερωτησεις, οταν εχουμε: println("a result is "+1+1) εμφανίζει δύο ή έντεκα;
11
Locked

Return to “Ακαδημαϊκό Έτος 2016-2017”